UNPKG

madeline-ton

Version:

Pure JS client-side implementation of the Telegram TON blockchain protocol

63 lines (50 loc) 3.76 kB
"use strict"; 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;