/* * The Diffie-Hellman key exchange protocol. */// Our prime number as a base for operations.var dh_prime = '82818079787776757473727170696867666564636261605958575655545352515049484746454443424140393837363534333231302928272625242322212019181716151413121110987654321';// g, a primitive root used as an exponent// (2 and 5 are acceptable, but BigInt is faster with odd numbers)var dh_g = '5';/** * Generates a Diffie-Hellman private key * @return string(BigInt) */function dh_gen_private(){ return EnanoMath.RandomInt(256);}/** * Calculates the public key from the private key * @param string(BigInt) * @return string(BigInt) */function dh_gen_public(b){ return EnanoMath.PowMod(dh_g, b, dh_prime);}/** * Calculates the shared secret. * @param string(BigInt) Our private key * @param string(BigInt) Remote party's public key * @return string(BigInt) */function dh_gen_shared_secret(b, A){ return EnanoMath.PowMod(A, b, dh_prime);}