diff -r a434d60e525d -r 242353360e37 includes/clientside/static/diffiehellman.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/includes/clientside/static/diffiehellman.js Wed Feb 20 14:38:39 2008 -0500 @@ -0,0 +1,44 @@ +/* + * 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); +} +