UNPKG

@tradle/otr

Version:

Off-the-Record Messaging Protocol

29 lines (23 loc) 1.44 kB
var crypto = require('crypto') var BigInt = require('./vendor/bigint') var bn = require('bn.js') var Nbn = new bn('FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF', 16) Nbn = bn.red(Nbn) var Gbn = new bn('2', 10).toRed(Nbn) var NbigInt = BigInt.str2bigInt('FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF', 16) var GbigInt = BigInt.str2bigInt('2', 10) var randBN = new bn(crypto.randomBytes(40)) var bigIntRand = BigInt.randBigInt(320) console.time('bigint') var bi for (var i = 0; i < 100; i++) { bi = BigInt.powMod(GbigInt, bigIntRand, NbigInt) } console.timeEnd('bigint') console.log(BigInt.bigInt2str(bi, 16)) console.time('bn') for (var i = 0; i < 100; i++) { bi = Gbn.redPow(randBN)//.mod(Nbn) } console.timeEnd('bn') console.log(bi.toString(16))