Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 9f1de2c

Browse filesBrowse files
panvadanielleadams
authored andcommitted
crypto: fix webcrypto import of cfrg raw public keys
PR-URL: #43404 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
1 parent 7f02e22 commit 9f1de2c
Copy full SHA for 9f1de2c

File tree

Expand file treeCollapse file tree

2 files changed

+16
-8
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+16
-8
lines changed
Open diff view settings
Collapse file

‎lib/internal/crypto/cfrg.js‎

Copy file name to clipboardExpand all lines: lib/internal/crypto/cfrg.js
+1-8Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,6 @@ function verifyAcceptableCfrgKeyUse(name, type, usages) {
7272
}
7373
}
7474

75-
function createECPublicKeyRaw(name, keyData) {
76-
const handle = new KeyObjectHandle();
77-
keyData = getArrayBufferOrView(keyData, 'keyData');
78-
if (handle.initECRaw(name.toLowerCase(), keyData))
79-
return new PublicKeyObject(handle);
80-
}
81-
8275
function createCFRGRawKey(name, keyData, isPublic) {
8376
const handle = new KeyObjectHandle();
8477
keyData = getArrayBufferOrView(keyData, 'keyData');
@@ -297,7 +290,7 @@ async function cfrgImportKey(
297290
}
298291
case 'raw': {
299292
verifyAcceptableCfrgKeyUse(name, 'public', usagesSet);
300-
keyObject = createECPublicKeyRaw(name, keyData);
293+
keyObject = createCFRGRawKey(name, keyData, true);
301294
if (keyObject === undefined)
302295
throw lazyDOMException('Unable to import CFRG key', 'OperationError');
303296
break;
Collapse file

‎test/parallel/test-webcrypto-export-import-cfrg.js‎

Copy file name to clipboardExpand all lines: test/parallel/test-webcrypto-export-import-cfrg.js
+15Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,20 @@ async function testImportJwk({ name, publicUsages, privateUsages }, extractable)
281281
}
282282
}
283283

284+
async function testImportRaw({ name, publicUsages }) {
285+
const jwk = keyData[name].jwk;
286+
287+
const publicKey = await subtle.importKey(
288+
'raw',
289+
Buffer.from(jwk.x, 'base64url'),
290+
{ name },
291+
true, publicUsages);
292+
293+
assert.strictEqual(publicKey.type, 'public');
294+
assert.deepStrictEqual(publicKey.usages, publicUsages);
295+
assert.strictEqual(publicKey.algorithm.name, name);
296+
}
297+
284298
(async function() {
285299
const tests = [];
286300
testVectors.forEach((vector) => {
@@ -289,6 +303,7 @@ async function testImportJwk({ name, publicUsages, privateUsages }, extractable)
289303
tests.push(testImportPkcs8(vector, extractable));
290304
tests.push(testImportJwk(vector, extractable));
291305
});
306+
tests.push(testImportRaw(vector));
292307
});
293308

294309
await Promise.all(tests);

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.