| 31 | const kRepeeat = 1; |
| 32 | |
| 33 | function test() { |
| 34 | let p = BigInt(ps); |
| 35 | //let es = RNG.get(2048/8); |
| 36 | //let Ms = RNG.get(2048/8); |
| 37 | let e = BigInt(es); |
| 38 | let M = BigInt(Ms); |
| 39 | let r = BigInt(rs); |
| 40 | |
| 41 | trace("p = " + p.toString(16) + "\n"); |
| 42 | trace("M = " + M.toString(16) + "\n"); |
| 43 | trace("e = " + e.toString(16) + "\n"); |
| 44 | |
| 45 | let mod = new Modular(p); |
| 46 | let mont = new Mont({m: p, method: Mont.SW}); |
| 47 | |
| 48 | let x |
| 49 | let t1 = Date.now(); |
| 50 | let n = kRepeeat; |
| 51 | while (--n >= 0) { |
| 52 | x = mod.mulinv(M); |
| 53 | } |
| 54 | let t2 = Date.now(); |
| 55 | trace(x.toString(16) + "\n"); |
| 56 | trace("mod.mulinv: " + (t2 - t1) + "\n"); |
| 57 | /* |
| 58 | t1 = Date.now(); |
| 59 | n = kRepeeat; |
| 60 | while (--n >= 0) { |
| 61 | x = mont.mulinv(M); |
| 62 | } |
| 63 | t2 = Date.now(); |
| 64 | trace(x.toString(16) + "\n"); |
| 65 | trace("mont.mulinv: " + (t2 - t1) + "\n"); |
| 66 | |
| 67 | t1 = Date.now(); |
| 68 | n = kRepeeat; |
| 69 | while (--n >= 0) { |
| 70 | x = mod.exp(M, e); |
| 71 | } |
| 72 | t2 = Date.now(); |
| 73 | trace("mod.exp: " + (t2 - t1) + "\n"); |
| 74 | if (r != x) |
| 75 | trace("failed!\n"); |
| 76 | |
| 77 | t1 = Date.now(); |
| 78 | n = kRepeeat; |
| 79 | while (--n >= 0) { |
| 80 | x = mont.exp(M, e); |
| 81 | } |
| 82 | t2 = Date.now(); |
| 83 | trace("mont.exp: " + (t2 - t1) + "\n"); |
| 84 | if (r != x) |
| 85 | trace("failed!\n"); |
| 86 | */ |
| 87 | // |
| 88 | // ECDSA test vectors from |
| 89 | // https://tools.ietf.org/html/rfc6979 |
| 90 | // |