Update sjcl and delete custom ripemd160, montgomery, and jacobi

This commit is contained in:
Chris Clark
2015-05-26 10:32:52 -07:00
parent ebbec1954e
commit 50cda426eb
9 changed files with 60 additions and 524 deletions

View File

@@ -1,47 +0,0 @@
var assert = require('assert');
var sjcl = require('ripple-lib').sjcl;
describe('SJCL Jacobi', function() {
it('(15/13) = -1', function () {
var jac = new sjcl.bn(15).jacobi(13);
assert.strictEqual(jac, -1);
});
it('(4/97) = 1', function () {
var jac = new sjcl.bn(4).jacobi(97);
assert.strictEqual(jac, 1);
});
it('(17/17) = 0', function () {
var jac = new sjcl.bn(17).jacobi(17);
assert.strictEqual(jac, 0);
});
it('(34/17) = 0', function () {
var jac = new sjcl.bn(34).jacobi(17);
assert.strictEqual(jac, 0);
});
it('(19/45) = 1', function () {
var jac = new sjcl.bn(19).jacobi(45);
assert.strictEqual(jac, 1);
});
it('(8/21) = -1', function () {
var jac = new sjcl.bn(8).jacobi(21);
assert.strictEqual(jac, -1);
});
it('(5/21) = 1', function () {
var jac = new sjcl.bn(5).jacobi(21);
assert.strictEqual(jac, 1);
});
it('(1001/9907) = -1', function () {
var jac = new sjcl.bn(1001).jacobi(9907);
assert.strictEqual(jac, -1);
});
it('(1236/20003) = 1', function () {
var jac = new sjcl.bn(1236).jacobi(20003);
assert.strictEqual(jac, 1);
});
it('With huge numbers', function () {
var jac = new sjcl.bn("217033ffbc5a462201407027104916c5e7bf09f2b0c926f7c5cb20858be29d92e7fe67080eeb268fcbc2bc44d9cecfe1d3acbb302111eba355a8b769ed4bdbf773d37dca47e2293c173ff4f84b38f4e84bfad7cc1a913d70e11cf664a95575b80ec9d10123289b402ad2c71c70f2dc28360262d3d703faa964c741a711e4eebd324d659601dd14564fcd8c5908bbf8c97cf3ff82f083da3005848b48cb545b31be2039cca1d67714f32d32b3228c1a659415ee6c138ca274f789006a90a9a41bbc3934b84c78948eae8351f45696fa716b1328561f4c3bbb44ac73112c291b6b4587365e44fa09d583fb8074eb35bf947231e500c0d2c79c5fb957e50e84f6c9").jacobi("c7f1bc1dfb1be82d244aef01228c1409c198894eca9e21430f1669b4aa3864c9f37f3d51b2b4ba1ab9e80f59d267fda1521e88b05117993175e004543c6e3611242f24432ce8efa3b81f0ff660b4f91c5d52f2511a6f38181a7bf9abeef72db056508bbb4eeb5f65f161dd2d5b439655d2ae7081fcc62fdcb281520911d96700c85cdaf12e7d1f15b55ade867240722425198d4ce39019550c4c8a921fc231d3e94297688c2d77cd68ee8fdeda38b7f9a274701fef23b4eaa6c1a9c15b2d77f37634930386fc20ec291be95aed9956801e1c76601b09c413ad915ff03bfdc0b6b233686ae59e8caf11750b509ab4e57ee09202239baee3d6e392d1640185e1cd");
assert.strictEqual(jac, -1);
});
});
// vim:sw=2:sts=2:ts=8:et

View File

@@ -1,15 +1,28 @@
var assert = require('assert');
var sjcl = require('ripple-lib').sjcl;
/* eslint-disable max-len */
/* eslint new-cap: [2, {newIsCapExceptions: ["bn"]}] */
'use strict';
const assert = require('assert');
const sjcl = require('ripple-lib').sjcl;
// fix normalize bug in scjl:
// https://github.com/bitwiseshiftleft/sjcl/pull/221
function normalizeFix(bn) {
while (bn.limbs.length > 0 && bn.limbs[bn.limbs.length - 1] === 0) {
bn.limbs.pop();
}
return bn;
}
function testExp(vec) {
var actual = new sjcl.bn(vec.g).powermodMontgomery(new sjcl.bn(vec.e),
new sjcl.bn(vec.m));
assert.strictEqual(actual.toString(), new sjcl.bn(vec.r).toString());
const actual = normalizeFix(new sjcl.bn(vec.g).powermod(
new sjcl.bn(vec.e), new sjcl.bn(vec.m)));
const expected = new sjcl.bn(vec.r);
assert.strictEqual(actual.toString(), expected.toString());
}
describe('SJCL Montgomery Exponentiation', function() {
describe('powermod', function() {
it('test 1', function () {
it('test 1', function() {
testExp({
g: 2,
e: 3,
@@ -17,15 +30,15 @@ describe('SJCL Montgomery Exponentiation', function() {
r: 2
});
});
it('test 2', function () {
it('test 2', function() {
testExp({
g: 2,
e: "10000000000000000000000000",
e: '10000000000000000000000000',
m: 1337,
r: 1206
});
});
it('test 3', function () {
it('test 3', function() {
testExp({
g: 17,
e: 90,
@@ -33,15 +46,15 @@ describe('SJCL Montgomery Exponentiation', function() {
r: 28445204336
});
});
it('test 4', function () {
it('test 4', function() {
testExp({
g: 2,
e: "0x844A000000000000000000000",
e: '0x844A000000000000000000000',
m: 13,
r: 9
});
});
it('test 5', function () {
it('test 5', function() {
testExp({
g: 2,
e: 0x1010,
@@ -49,36 +62,36 @@ describe('SJCL Montgomery Exponentiation', function() {
r: 59
});
});
it('test 6', function () {
it('test 6', function() {
testExp({
g: 2,
e: "43207437777777877617151",
e: '43207437777777877617151',
m: 13,
r: 2
});
});
it('test 7', function () {
it('test 7', function() {
testExp({
g: 2,
e: "389274238947216444871600001871964319565192765874149",
e: '389274238947216444871600001871964319565192765874149',
m: 117,
r: 44
});
});
it('test 8', function () {
it('test 8', function() {
testExp({
g: 2,
e: "89457115510016156219817846189181057618965150496979174671534084187",
m: "1897166415676096761",
r: "16840615e646a4c5c8d"
e: '89457115510016156219817846189181057618965150496979174671534084187',
m: '1897166415676096761',
r: '16840615e646a4c5c8d'
});
});
it('test 9', function () {
it('test 9', function() {
testExp({
g: "4c3399bebab284bc7f9056efe17ea39db324ffa1d52dc1542eb16a749570789359f192535b7bcb514b36be9cdb4fb2a6ba3ad6b4248034e9a1d2a8612cd9d885242b4f679524121b74f79d7db14859fccde1c0dfe6ef002dcbc777ab5fcf4432",
e: "000322e6b6dafe138ccd6a991977d19",
m: "a5091daa41997943e3c98469e93377f668d05d8059bc53f72aaacdac3729a3070dc7439a5171160bf9ec2826b7191b03b0e84b28e14dd376de35d29a96f686666e053ab62a41ebc2b5f52e8cf06254100fd153a1cda4485f170c39c54689e52d",
r: "554336ea044782d29f091117cfeaeee2334b4242bd7428d0bba3ce5325781dc219e891e54698cb0193ffe7c6fc07f1808f6685e64b6a082815f6afd2e16c7a61316b5e3e59cd8b3984d5a76c8e173f8615f7dceac0c99e27e4abfb1278dfa67f"
g: '4c3399bebab284bc7f9056efe17ea39db324ffa1d52dc1542eb16a749570789359f192535b7bcb514b36be9cdb4fb2a6ba3ad6b4248034e9a1d2a8612cd9d885242b4f679524121b74f79d7db14859fccde1c0dfe6ef002dcbc777ab5fcf4432',
e: '000322e6b6dafe138ccd6a991977d19',
m: 'a5091daa41997943e3c98469e93377f668d05d8059bc53f72aaacdac3729a3070dc7439a5171160bf9ec2826b7191b03b0e84b28e14dd376de35d29a96f686666e053ab62a41ebc2b5f52e8cf06254100fd153a1cda4485f170c39c54689e52d',
r: '554336ea044782d29f091117cfeaeee2334b4242bd7428d0bba3ce5325781dc219e891e54698cb0193ffe7c6fc07f1808f6685e64b6a082815f6afd2e16c7a61316b5e3e59cd8b3984d5a76c8e173f8615f7dceac0c99e27e4abfb1278dfa67f'
});
});
});