◐ Shell
clean mode source ↗

crypto: ensure CryptoKey usages and algorithm are cached objects · nodejs/node@fe2b344

@@ -298,6 +298,10 @@ const vectors = {

298298

KeyObject.from(privateKey).asymmetricKeyDetails.publicExponent,

299299

bigIntArrayToUnsignedBigInt(publicExponent));

300300

assert.strictEqual(privateKey.algorithm.hash.name, hash);

301+

assert.strictEqual(privateKey.algorithm, privateKey.algorithm);

302+

assert.strictEqual(privateKey.usages, privateKey.usages);

303+

assert.strictEqual(publicKey.algorithm, publicKey.algorithm);

304+

assert.strictEqual(publicKey.usages, publicKey.usages);

301305302306

// Missing parameters

303307

await assert.rejects(

@@ -442,6 +446,10 @@ const vectors = {

442446

assert.strictEqual(privateKey.algorithm.name, name);

443447

assert.strictEqual(publicKey.algorithm.namedCurve, namedCurve);

444448

assert.strictEqual(privateKey.algorithm.namedCurve, namedCurve);

449+

assert.strictEqual(privateKey.algorithm, privateKey.algorithm);

450+

assert.strictEqual(privateKey.usages, privateKey.usages);

451+

assert.strictEqual(publicKey.algorithm, publicKey.algorithm);

452+

assert.strictEqual(publicKey.usages, publicKey.usages);

445453446454

// Invalid parameters

447455

[1, true, {}, [], null].forEach(async (namedCurve) => {

@@ -508,6 +516,8 @@ const vectors = {

508516

assert.deepStrictEqual(key.usages, usages);

509517

assert.strictEqual(key.algorithm.name, name);

510518

assert.strictEqual(key.algorithm.length, length);

519+

assert.strictEqual(key.algorithm, key.algorithm);

520+

assert.strictEqual(key.usages, key.usages);

511521512522

// Invalid parameters

513523

[1, 100, 257, '', false, null].forEach(async (length) => {

@@ -568,6 +578,8 @@ const vectors = {

568578

assert.strictEqual(key.algorithm.name, 'HMAC');

569579

assert.strictEqual(key.algorithm.length, length);

570580

assert.strictEqual(key.algorithm.hash.name, hash);

581+

assert.strictEqual(key.algorithm, key.algorithm);

582+

assert.strictEqual(key.usages, key.usages);

571583572584

[1, false, null].forEach(async (hash) => {

573585

await assert.rejects(

@@ -632,6 +644,10 @@ assert.throws(() => new CryptoKey(), { code: 'ERR_ILLEGAL_CONSTRUCTOR' });

632644

assert.deepStrictEqual(privateKey.usages, privateUsages);

633645

assert.strictEqual(publicKey.algorithm.name, name);

634646

assert.strictEqual(privateKey.algorithm.name, name);

647+

assert.strictEqual(privateKey.algorithm, privateKey.algorithm);

648+

assert.strictEqual(privateKey.usages, privateKey.usages);

649+

assert.strictEqual(publicKey.algorithm, publicKey.algorithm);

650+

assert.strictEqual(publicKey.usages, publicKey.usages);

635651

}

636652637653

const kTests = [