devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
44 lines (42 loc) • 1.42 kB
JavaScript
/**
* DevExtreme (cjs/__internal/core/license/rsa_bigint.js)
* Version: 24.2.6
* Build date: Mon Mar 17 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.compareSignatures = compareSignatures;
function compareSignatures(args) {
try {
const zero = BigInt(0);
const one = BigInt(1);
const eight = BigInt(8);
const modExp = (base, exponent, modulus) => {
let result = one;
let b = base;
let e = exponent;
while (e) {
if (e & one) {
result = result * b % modulus
}
b = b * b % modulus;
e >>= one
}
return result
};
const bigIntFromBytes = bytes => bytes.reduce(((acc, cur) => (acc << eight) + BigInt(cur)), zero);
const actual = bigIntFromBytes(args.actual);
const signature = bigIntFromBytes(args.signature);
const exponent = BigInt(args.key.e);
const modulus = bigIntFromBytes(args.key.n);
const expected = modExp(signature, exponent, modulus);
return expected === actual
} catch {
return true
}
}