forked from tornado-packages/noble-curves
45 lines
1.8 KiB
JavaScript
45 lines
1.8 KiB
JavaScript
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
import { createCurve } from '../esm/_shortw_utils.js';
|
|
import { sha224, sha256 } from '@noble/hashes/sha256';
|
|
import { Field as Fp } from '../esm/abstract/modular.js';
|
|
|
|
// NIST secp192r1 aka P192
|
|
// https://www.secg.org/sec2-v2.pdf, https://neuromancer.sk/std/secg/secp192r1
|
|
export const P192 = createCurve(
|
|
{
|
|
// Params: a, b
|
|
a: BigInt('0xfffffffffffffffffffffffffffffffefffffffffffffffc'),
|
|
b: BigInt('0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1'),
|
|
// Field over which we'll do calculations; 2n ** 192n - 2n ** 64n - 1n
|
|
Fp: Fp(BigInt('0xfffffffffffffffffffffffffffffffeffffffffffffffff')),
|
|
// Curve order, total count of valid points in the field.
|
|
n: BigInt('0xffffffffffffffffffffffff99def836146bc9b1b4d22831'),
|
|
// Base point (x, y) aka generator point
|
|
Gx: BigInt('0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012'),
|
|
Gy: BigInt('0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811'),
|
|
h: BigInt(1),
|
|
lowS: false,
|
|
},
|
|
sha256
|
|
);
|
|
export const secp192r1 = P192;
|
|
|
|
export const P224 = createCurve(
|
|
{
|
|
// Params: a, b
|
|
a: BigInt('0xfffffffffffffffffffffffffffffffefffffffffffffffffffffffe'),
|
|
b: BigInt('0xb4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4'),
|
|
// Field over which we'll do calculations;
|
|
Fp: Fp(BigInt('0xffffffffffffffffffffffffffffffff000000000000000000000001')),
|
|
// Curve order, total count of valid points in the field
|
|
n: BigInt('0xffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a3d'),
|
|
// Base point (x, y) aka generator point
|
|
Gx: BigInt('0xb70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21'),
|
|
Gy: BigInt('0xbd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34'),
|
|
h: BigInt(1),
|
|
lowS: false,
|
|
},
|
|
sha224
|
|
);
|
|
export const secp224r1 = P224;
|