Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <HTML><HEAD><TITLE>Diffie-Hellman</TITLE></HEAD><BODY>
- <script>
- SUBROSA = {};
- </script>
- <script src="BigInteger.js"></script>
- <script src="nacl.js"></script>
- <script>
- // Dependencies:
- // https://raw.githubusercontent.com/peterolson/BigInteger.js/master/BigInteger.js
- // https://raw.githubusercontent.com/dchest/tweetnacl-js/master/nacl.js
- function array_to_uint8_array(min_length, array){
- var length = Math.max(array.length, min_length);
- var result = new Uint8Array(length);
- for (var i=0; i<length; i++){
- result[length - i - 1] = i >= array.length ? 0 : array[array.length - i - 1];
- }
- return result;
- }
- function X25519_scalar_to_bigint(array){
- var hex = byte_array_to_hex_string(array);
- var big = bigInt(hex, 16);
- return big;
- }
- function bigint_to_X25519_scalar(big){
- return array_to_uint8_array(32, big.toArray(256).value);
- }
- function test_nacl(){
- var prime_big = bigInt(2).pow(255).minus( 19 );
- var one_big = bigInt(1);
- var one = bigint_to_X25519_scalar( one_big );
- console.log("one: ", one);
- var p = nacl.scalarMult.base(one);
- console.log("p: ", p); // should be 9 ?
- var s_big = bigInt(3);
- var s = bigint_to_X25519_scalar(s_big);
- console.log("s: ", s);
- var p2 = nacl.scalarMult(s, p)
- console.log("p2: ", p2);
- var s_inv = bigint_to_X25519_scalar(s_big.modInv(prime_big));
- console.log("s_inv: ", s_inv);
- var p3 = nacl.scalarMult(s_inv, p2)
- console.log("p3: ", p3);
- }
- test_nacl();
- </script>
- </BODY></HTML>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement