7
7
// Implementation derived from TweetNaCl version 20140427.
8
8
// See for details: http://tweetnacl.cr.yp.to/
9
9
10
- var gf = function ( init ) {
11
- var i , r = new Float64Array ( 16 ) ;
12
- if ( init ) for ( i = 0 ; i < init . length ; i ++ ) r [ i ] = init [ i ] ;
10
+ function gf ( ) {
11
+ return [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
12
+ }
13
+
14
+ function gfi ( init ) {
15
+ var r = [ ] , i = 0 ;
16
+ for ( ; i < init . length ; i ++ ) r [ i ] = init [ i ] ;
17
+ for ( ; i < 16 ; i ++ ) r [ i ] = 0 ;
13
18
return r ;
14
- } ;
19
+ }
15
20
16
21
// Pluggable, initialized in high-level API below.
17
22
var randombytes = function ( /* x, n */ ) { throw new Error ( 'no PRNG' ) ; } ;
@@ -20,13 +25,13 @@ var _0 = new Uint8Array(16);
20
25
var _9 = new Uint8Array ( 32 ) ; _9 [ 0 ] = 9 ;
21
26
22
27
var gf0 = gf ( ) ,
23
- gf1 = gf ( [ 1 ] ) ,
24
- _121665 = gf ( [ 0xdb41 , 1 ] ) ,
25
- D = gf ( [ 0x78a3 , 0x1359 , 0x4dca , 0x75eb , 0xd8ab , 0x4141 , 0x0a4d , 0x0070 , 0xe898 , 0x7779 , 0x4079 , 0x8cc7 , 0xfe73 , 0x2b6f , 0x6cee , 0x5203 ] ) ,
26
- D2 = gf ( [ 0xf159 , 0x26b2 , 0x9b94 , 0xebd6 , 0xb156 , 0x8283 , 0x149a , 0x00e0 , 0xd130 , 0xeef3 , 0x80f2 , 0x198e , 0xfce7 , 0x56df , 0xd9dc , 0x2406 ] ) ,
27
- X = gf ( [ 0xd51a , 0x8f25 , 0x2d60 , 0xc956 , 0xa7b2 , 0x9525 , 0xc760 , 0x692c , 0xdc5c , 0xfdd6 , 0xe231 , 0xc0a4 , 0x53fe , 0xcd6e , 0x36d3 , 0x2169 ] ) ,
28
- Y = gf ( [ 0x6658 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 ] ) ,
29
- I = gf ( [ 0xa0b0 , 0x4a0e , 0x1b27 , 0xc4ee , 0xe478 , 0xad2f , 0x1806 , 0x2f43 , 0xd7a7 , 0x3dfb , 0x0099 , 0x2b4d , 0xdf0b , 0x4fc1 , 0x2480 , 0x2b83 ] ) ;
28
+ gf1 = gfi ( [ 1 ] ) ,
29
+ _121665 = gfi ( [ 0xdb41 , 1 ] ) ,
30
+ D = gfi ( [ 0x78a3 , 0x1359 , 0x4dca , 0x75eb , 0xd8ab , 0x4141 , 0x0a4d , 0x0070 , 0xe898 , 0x7779 , 0x4079 , 0x8cc7 , 0xfe73 , 0x2b6f , 0x6cee , 0x5203 ] ) ,
31
+ D2 = gfi ( [ 0xf159 , 0x26b2 , 0x9b94 , 0xebd6 , 0xb156 , 0x8283 , 0x149a , 0x00e0 , 0xd130 , 0xeef3 , 0x80f2 , 0x198e , 0xfce7 , 0x56df , 0xd9dc , 0x2406 ] ) ,
32
+ X = gfi ( [ 0xd51a , 0x8f25 , 0x2d60 , 0xc956 , 0xa7b2 , 0x9525 , 0xc760 , 0x692c , 0xdc5c , 0xfdd6 , 0xe231 , 0xc0a4 , 0x53fe , 0xcd6e , 0x36d3 , 0x2169 ] ) ,
33
+ Y = gfi ( [ 0x6658 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 , 0x6666 ] ) ,
34
+ I = gfi ( [ 0xa0b0 , 0x4a0e , 0x1b27 , 0xc4ee , 0xe478 , 0xad2f , 0x1806 , 0x2f43 , 0xd7a7 , 0x3dfb , 0x0099 , 0x2b4d , 0xdf0b , 0x4fc1 , 0x2480 , 0x2b83 ] ) ;
30
35
31
36
function ts64 ( x , i , h , l ) {
32
37
x [ i ] = ( h >> 24 ) & 0xff ;
@@ -1323,7 +1328,7 @@ function pow2523(o, i) {
1323
1328
1324
1329
function crypto_scalarmult ( q , n , p ) {
1325
1330
var z = new Uint8Array ( 32 ) ;
1326
- var x = new Float64Array ( 80 ) , r , i ;
1331
+ var x = [ ] /* 80 */ , r , i ;
1327
1332
var a = gf ( ) , b = gf ( ) , c = gf ( ) ,
1328
1333
d = gf ( ) , e = gf ( ) , f = gf ( ) ;
1329
1334
for ( i = 0 ; i < 31 ; i ++ ) z [ i ] = n [ i ] ;
@@ -1360,14 +1365,19 @@ function crypto_scalarmult(q, n, p) {
1360
1365
sel25519 ( a , b , r ) ;
1361
1366
sel25519 ( c , d , r ) ;
1362
1367
}
1368
+ var x32 = [ ] ; /* 48 */
1369
+ for ( i = 0 ; i < 16 ; i ++ ) {
1370
+ x32 [ i ] = c [ i ] ;
1371
+ x32 [ i + 16 ] = b [ i ] ;
1372
+ x32 [ i + 32 ] = d [ i ] ;
1373
+ }
1374
+ var x16 = [ ] ; /* 64 */
1363
1375
for ( i = 0 ; i < 16 ; i ++ ) {
1364
- x [ i + 16 ] = a [ i ] ;
1365
- x [ i + 32 ] = c [ i ] ;
1366
- x [ i + 48 ] = b [ i ] ;
1367
- x [ i + 64 ] = d [ i ] ;
1376
+ x16 [ i ] = a [ i ] ;
1377
+ x16 [ i + 16 ] = c [ i ] ;
1378
+ x16 [ i + 32 ] = b [ i ] ;
1379
+ x16 [ i + 48 ] = d [ i ] ;
1368
1380
}
1369
- var x32 = x . subarray ( 32 ) ;
1370
- var x16 = x . subarray ( 16 ) ;
1371
1381
inv25519 ( x32 , x32 ) ;
1372
1382
M ( x16 , x16 , x32 ) ;
1373
1383
pack25519 ( q , x16 ) ;
@@ -1932,7 +1942,7 @@ function crypto_sign_keypair(pk, sk, seeded) {
1932
1942
return 0 ;
1933
1943
}
1934
1944
1935
- var L = new Float64Array ( [ 0xed , 0xd3 , 0xf5 , 0x5c , 0x1a , 0x63 , 0x12 , 0x58 , 0xd6 , 0x9c , 0xf7 , 0xa2 , 0xde , 0xf9 , 0xde , 0x14 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x10 ] ) ;
1945
+ var L = [ 0xed , 0xd3 , 0xf5 , 0x5c , 0x1a , 0x63 , 0x12 , 0x58 , 0xd6 , 0x9c , 0xf7 , 0xa2 , 0xde , 0xf9 , 0xde , 0x14 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x10 ] ;
1936
1946
1937
1947
function modL ( r , x ) {
1938
1948
var carry , i , j , k ;
@@ -1960,7 +1970,7 @@ function modL(r, x) {
1960
1970
}
1961
1971
1962
1972
function reduce ( r ) {
1963
- var x = new Float64Array ( 64 ) , i ;
1973
+ var x = [ ] /* 64 */ , i ;
1964
1974
for ( i = 0 ; i < 64 ; i ++ ) x [ i ] = r [ i ] ;
1965
1975
for ( i = 0 ; i < 64 ; i ++ ) r [ i ] = 0 ;
1966
1976
modL ( r , x ) ;
@@ -1969,7 +1979,7 @@ function reduce(r) {
1969
1979
// Note: difference from C - smlen returned, not passed as argument.
1970
1980
function crypto_sign ( sm , m , n , sk ) {
1971
1981
var d = new Uint8Array ( 64 ) , h = new Uint8Array ( 64 ) , r = new Uint8Array ( 64 ) ;
1972
- var i , j , x = new Float64Array ( 64 ) ;
1982
+ var i , j , x = [ ] /* 64 */ ;
1973
1983
var p = [ gf ( ) , gf ( ) , gf ( ) , gf ( ) ] ;
1974
1984
1975
1985
crypto_hash ( d , sk , 32 ) ;
0 commit comments