basic DiffieHellman implemented