crypto: ensure CryptoKey usages and algorithm are cached objects · nodejs/node@fe2b344
@@ -298,6 +298,10 @@ const vectors = {
298298KeyObject.from(privateKey).asymmetricKeyDetails.publicExponent,
299299bigIntArrayToUnsignedBigInt(publicExponent));
300300assert.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
303307await assert.rejects(
@@ -442,6 +446,10 @@ const vectors = {
442446assert.strictEqual(privateKey.algorithm.name, name);
443447assert.strictEqual(publicKey.algorithm.namedCurve, namedCurve);
444448assert.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 = {
508516assert.deepStrictEqual(key.usages, usages);
509517assert.strictEqual(key.algorithm.name, name);
510518assert.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 = {
568578assert.strictEqual(key.algorithm.name, 'HMAC');
569579assert.strictEqual(key.algorithm.length, length);
570580assert.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) => {
573585await assert.rejects(
@@ -632,6 +644,10 @@ assert.throws(() => new CryptoKey(), { code: 'ERR_ILLEGAL_CONSTRUCTOR' });
632644assert.deepStrictEqual(privateKey.usages, privateUsages);
633645assert.strictEqual(publicKey.algorithm.name, name);
634646assert.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}
636652637653const kTests = [