45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
'use strict';
|
|
|
|
// For the browser test builder to work you MUST import them module in a variable that
|
|
// is the camelised version of the package name.
|
|
const bigintCryptoUtils = require('../dist/bigint-crypto-utils-latest.node');
|
|
const chai = require('chai');
|
|
|
|
const inputs = [
|
|
{
|
|
a: BigInt(4),
|
|
b: BigInt(-1),
|
|
n: BigInt(19),
|
|
modPow: BigInt(5)
|
|
},
|
|
{
|
|
a: BigInt(-5),
|
|
b: BigInt(2),
|
|
n: BigInt(7),
|
|
modPow: BigInt(4)
|
|
},
|
|
{
|
|
a: BigInt(2),
|
|
b: BigInt(255),
|
|
n: BigInt(64),
|
|
modPow: BigInt(0)
|
|
},
|
|
{
|
|
a: BigInt(3),
|
|
b: BigInt(3),
|
|
n: BigInt(25),
|
|
modPow: BigInt(2)
|
|
}
|
|
];
|
|
|
|
describe('modPow', function () {
|
|
for (const input of inputs) {
|
|
let ret;
|
|
describe(`modPow(${input.a}, ${input.b}, ${input.n})`, function () {
|
|
it(`should return ${input.modPow}`, function () {
|
|
ret = bigintCryptoUtils.modPow(input.a, input.b, input.n);
|
|
chai.expect(ret).to.equal(input.modPow);
|
|
});
|
|
});
|
|
}
|
|
}); |