Advertisement
Guest User

Untitled

a guest
Jan 17th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1.  
  2. <HTML><HEAD><TITLE>Diffie-Hellman</TITLE></HEAD><BODY>
  3. <script>
  4. SUBROSA = {};
  5. </script>
  6. <script src="BigInteger.js"></script>
  7. <script src="nacl.js"></script>
  8. <script>
  9. // Dependencies:
  10. // https://raw.githubusercontent.com/peterolson/BigInteger.js/master/BigInteger.js
  11. // https://raw.githubusercontent.com/dchest/tweetnacl-js/master/nacl.js
  12.  
  13. function array_to_uint8_array(min_length, array){
  14. var length = Math.max(array.length, min_length);
  15. var result = new Uint8Array(length);
  16. for (var i=0; i<length; i++){
  17. result[length - i - 1] = i >= array.length ? 0 : array[array.length - i - 1];
  18. }
  19. return result;
  20. }
  21.  
  22. function X25519_scalar_to_bigint(array){
  23. var hex = byte_array_to_hex_string(array);
  24. var big = bigInt(hex, 16);
  25. return big;
  26. }
  27.  
  28. function bigint_to_X25519_scalar(big){
  29. return array_to_uint8_array(32, big.toArray(256).value);
  30. }
  31.  
  32. function test_nacl(){
  33. var prime_big = bigInt(2).pow(255).minus( 19 );
  34. var one_big = bigInt(1);
  35. var one = bigint_to_X25519_scalar( one_big );
  36. console.log("one: ", one);
  37.  
  38.  
  39. var p = nacl.scalarMult.base(one);
  40. console.log("p: ", p); // should be 9 ?
  41.  
  42. var s_big = bigInt(3);
  43. var s = bigint_to_X25519_scalar(s_big);
  44. console.log("s: ", s);
  45.  
  46. var p2 = nacl.scalarMult(s, p)
  47. console.log("p2: ", p2);
  48.  
  49. var s_inv = bigint_to_X25519_scalar(s_big.modInv(prime_big));
  50. console.log("s_inv: ", s_inv);
  51.  
  52. var p3 = nacl.scalarMult(s_inv, p2)
  53. console.log("p3: ", p3);
  54. }
  55.  
  56. test_nacl();
  57. </script>
  58. </BODY></HTML>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement