Skip to content

Commit c49bbb9

Browse files
committed
crypto: fix subtle.getPublicKey error for secret type key inputs
1 parent 7535aa1 commit c49bbb9

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

lib/internal/crypto/webcrypto.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1086,7 +1086,8 @@ async function getPublicKey(key, keyUsages) {
10861086
});
10871087

10881088
if (key.type !== 'private')
1089-
throw lazyDOMException('key must be a private key', 'InvalidAccessError');
1089+
throw lazyDOMException('key must be a private key',
1090+
key.type === 'secret' ? 'NotSupportedError' : 'InvalidAccessError');
10901091

10911092
const keyObject = createPublicKey(key[kKeyObject]);
10921093

test/parallel/test-webcrypto-get-public-key.mjs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,16 @@ for await (const { privateKey } of [
4141
name: 'SyntaxError',
4242
message: /Unsupported key usage/
4343
});
44+
45+
await assert.rejects(() => subtle.getPublicKey(publicKey, publicKey.usages), {
46+
name: 'InvalidAccessError',
47+
message: 'key must be a private key'
48+
});
4449
}
4550

4651
const secretKey = await subtle.generateKey(
4752
{ name: 'AES-CBC', length: 128 }, true, ['encrypt', 'decrypt']);
4853
await assert.rejects(() => subtle.getPublicKey(secretKey, ['encrypt', 'decrypt']), {
49-
name: 'InvalidAccessError',
54+
name: 'NotSupportedError',
5055
message: 'key must be a private key'
5156
});

0 commit comments

Comments
 (0)