34 lines
1.6 KiB
TypeScript
34 lines
1.6 KiB
TypeScript
/**
|
|
* RFC 5054 Appendix A — 4096-bit group `(N_4096, g_4096 = 5)`.
|
|
*/
|
|
|
|
const N_4096_HEX =
|
|
"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74" +
|
|
"020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F1437" +
|
|
"4FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" +
|
|
"EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF05" +
|
|
"98DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB" +
|
|
"9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" +
|
|
"E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF695581718" +
|
|
"3995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33" +
|
|
"A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" +
|
|
"ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864" +
|
|
"D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E2" +
|
|
"08E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" +
|
|
"88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8" +
|
|
"DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2" +
|
|
"233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" +
|
|
"93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF";
|
|
|
|
function hexToBytes(hex: string): Uint8Array {
|
|
const out = new Uint8Array(hex.length / 2);
|
|
for (let i = 0; i < out.length; i++) {
|
|
out[i] = Number.parseInt(hex.substr(i * 2, 2), 16);
|
|
}
|
|
return out;
|
|
}
|
|
|
|
export const N_4096: Uint8Array = hexToBytes(N_4096_HEX);
|
|
export const g_4096: Uint8Array = new Uint8Array([5]);
|
|
export const BIT_LENGTH = 4096;
|