madeline-ton
Version:
Pure JS client-side implementation of the Telegram TON blockchain protocol
63 lines (50 loc) • 3.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.checkPG = exports.checkG = exports.checkAll = void 0;
var _leemon = require("leemon");
var twoe1984 = (0, _leemon.str2bigInt)("010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 16);
var twoe2047 = (0, _leemon.str2bigInt)("80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 16);
var twoe2048 = (0, _leemon.str2bigInt)("0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 16);
var twozerotwosixone = (0, _leemon.str2bigInt)("4f25", 16);
var zeroeight = (0, _leemon.str2bigInt)("80000000", 16);
var goodPrime = (0, _leemon.str2bigInt)("c71caeb9c6b1c9048e6c522f70f13f73980d40238e3e21c14934d037563d930f48198a0aa7c14058229493d22530f4dbfa336f6e0ac925139543aed44cce7c3720fd51f69458705ac68cd4fe6b6b13abdc9746512969328454f18faf8c595f642477fe96bb2a941d5bcd1d4ac8cc49880708fa9b378e3c4f3a9060bee67cf9a4a4a695811051907e162753b56b0f6b410dba74d8a84b2a14b3144e0ef1284754fd17ed950d5965b4b9dd46582db1178d169c6bc465b0d6ff9ca3928fef5b9ae4e418fc15e83ebea0f87fa9ff5eed70050ded2849f47bf959d956850ce929851f0d8115f635b105ee2e4e15d04b2454bf6f4fadf034b10403119cd8e3b92fcc5b", 16);
/**
* Check validity of G
* @param {leemonBigInt} G Hex g_*
* @param {leemonBigInt} p Hex prime
*/
var checkG = function checkG(G, p) {
if (!(0, _leemon.greater)(G, _leemon.one) || !(0, _leemon.greater)((0, _leemon.sub)(p, _leemon.one), G)) {
throw new Error('G is invalid (1 < g_a < p - 1 is false).');
}
if (!(0, _leemon.greater)(G, twoe1984) || !(0, _leemon.greater)((0, _leemon.sub)(p, twoe1984), G)) {
throw new Error('G is invalid (2^1984 < g_a < p - 2^1984 is false).');
}
};
/**
* Check validity of prime
* @param {leemonBigInt} p Hex prime
* @param {leemonBigInt} g Hex generator
*/
exports.checkG = checkG;
var checkPG = function checkPG(p, g) {
if (!(0, _leemon.equals)(p, goodPrime)) {
throw new Error('Is bad prime.');
}
if (!(0, _leemon.greater)(g, _leemon.one) || !(0, _leemon.greater)((0, _leemon.sub)(p, twoe1984), g)) {
throw new Error('g is invalid (1 < g < p - 1 is false).');
}
};
/**
* Check validity of diffie hellman parameters
* @param {*} p Hex prime
* @param {*} g Hex generator
* @param {*} G_ Hex generated
*/
exports.checkPG = checkPG;
var checkAll = function checkAll(p, g, G_) {
return checkPG(p, g) && checkG(G_, p);
};
exports.checkAll = checkAll;