MCPcopy Create free account
hub / github.com/nodejs/node / testImportPkcs8

Function testImportPkcs8

test/parallel/test-webcrypto-export-import-ml-dsa.js:98–145  ·  view source on GitHub ↗
({ name, privateUsages }, extractable)

Source from the content-addressed store, hash-verified

96}
97
98async function testImportPkcs8({ name, privateUsages }, extractable) {
99 let key;
100 try {
101 key = await subtle.importKey(
102 'pkcs8',
103 keyData[name].pkcs8,
104 { name },
105 extractable,
106 privateUsages);
107 } catch (err) {
108 if (process.features.openssl_is_boringssl) {
109 assert.strictEqual(err.name, 'DataError');
110 assert.strictEqual(err.cause.code, 'ERR_OSSL_EVP_PRIVATE_KEY_WAS_NOT_SEED');
111 common.printSkipMessage('Skipping unsupported private key format test');
112 return;
113 }
114 throw err;
115 }
116 assert.strictEqual(key.type, 'private');
117 assert.strictEqual(key.extractable, extractable);
118 assert.deepStrictEqual(key.usages, privateUsages);
119 assert.deepStrictEqual(key.algorithm.name, name);
120 assert.strictEqual(key.algorithm, key.algorithm);
121 assert.strictEqual(key.usages, key.usages);
122
123 if (extractable) {
124 // Test the roundtrip
125 const pkcs8 = await subtle.exportKey('pkcs8', key);
126 assert.strictEqual(
127 Buffer.from(pkcs8).toString('hex'),
128 keyData[name].pkcs8_seed_only.toString('hex'));
129 } else {
130 await assert.rejects(
131 subtle.exportKey('pkcs8', key), {
132 message: /key is not extractable/,
133 name: 'InvalidAccessError',
134 });
135 }
136
137 await assert.rejects(
138 subtle.importKey(
139 'pkcs8',
140 keyData[name].pkcs8,
141 { name },
142 extractable,
143 [/* empty usages */]),
144 { name: 'SyntaxError', message: 'Usages cannot be empty when importing a private key.' });
145}
146
147async function testImportPkcs8SeedOnly({ name, privateUsages }, extractable) {
148 const key = await subtle.importKey(

Calls 2

toStringMethod · 0.45
fromMethod · 0.45

Tested by

no test coverage detected