A method to exchange and authenticate public cryptographic keys between
parties that share a common but secret password, using a pair of random
numbers, a pair of Diffie-Hellman public keys computed from the random
numbers and the password, a Diffie-Hellman symmetric secret key computed
from the Diffie-Hellman public keys and the random numbers, and hashed
values of arguments that depend upon these elements.