added diffie_hellman