mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-20 12:15:51 +00:00
Update sjcl and delete custom ripemd160, montgomery, and jacobi
This commit is contained in:
@@ -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
|
||||
@@ -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'
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user