P224: fix sha224 tests

This commit is contained in:
Paul Miller 2022-12-28 05:30:13 +00:00
parent 1ab77b95dd
commit cae888d942
No known key found for this signature in database
GPG Key ID: 697079DA6878B89B
2 changed files with 11 additions and 11 deletions

@ -1,6 +1,6 @@
/*! @noble/curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */ /*! @noble/curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
import { createCurve } from './_shortw_utils.js'; import { createCurve } from './_shortw_utils.js';
import { sha256 } from '@noble/hashes/sha256'; import { sha224 } from '@noble/hashes/sha256';
import { Fp } from '@noble/curves/modular'; import { Fp } from '@noble/curves/modular';
// NIST secp224r1 aka P224 // NIST secp224r1 aka P224
@ -20,6 +20,6 @@ export const P224 = createCurve(
h: BigInt(1), h: BigInt(1),
lowS: false, lowS: false,
} as const, } as const,
sha256 // TODO: replace with sha224 when new @noble/hashes released sha224
); );
export const secp224r1 = P224; export const secp224r1 = P224;

@ -41,10 +41,11 @@ should('wychenproof ECDSA vectors', () => {
for (const group of ecdsa.testGroups) { for (const group of ecdsa.testGroups) {
// Tested in secp256k1.test.js // Tested in secp256k1.test.js
if (group.key.curve === 'secp256k1') continue; if (group.key.curve === 'secp256k1') continue;
// We don't have SHA-224 let CURVE = NIST[group.key.curve];
if (group.key.curve === 'secp224r1' && group.sha === 'SHA-224') continue;
const CURVE = NIST[group.key.curve];
if (!CURVE) continue; if (!CURVE) continue;
if (group.key.curve === 'secp224r1' && group.sha !== 'SHA-224') {
if (group.sha === 'SHA-256') CURVE = CURVE.create(sha256);
}
const pubKey = CURVE.Point.fromHex(group.key.uncompressed); const pubKey = CURVE.Point.fromHex(group.key.uncompressed);
deepStrictEqual(pubKey.x, BigInt(`0x${group.key.wx}`)); deepStrictEqual(pubKey.x, BigInt(`0x${group.key.wx}`));
deepStrictEqual(pubKey.y, BigInt(`0x${group.key.wy}`)); deepStrictEqual(pubKey.y, BigInt(`0x${group.key.wy}`));
@ -196,17 +197,16 @@ import { default as secp521r1_sha512_test } from './wycheproof/ecdsa_secp521r1_s
import { sha3_224, sha3_256, sha3_384, sha3_512 } from '@noble/hashes/sha3'; import { sha3_224, sha3_256, sha3_384, sha3_512 } from '@noble/hashes/sha3';
import { sha512, sha384 } from '@noble/hashes/sha512'; import { sha512, sha384 } from '@noble/hashes/sha512';
import { sha256 } from '@noble/hashes/sha256'; import { sha224, sha256 } from '@noble/hashes/sha256';
const WYCHEPROOF_ECDSA = { const WYCHEPROOF_ECDSA = {
P224: { P224: {
curve: P224, curve: P224,
hashes: { hashes: {
// sha224 not released yet sha224: {
// sha224: { hash: sha224,
// hash: sha224, tests: [secp224r1_sha224_test],
// tests: [secp224r1_sha224_test], },
// },
sha256: { sha256: {
hash: sha256, hash: sha256,
tests: [secp224r1_sha256_test], tests: [secp224r1_sha256_test],