Skip to content

Commit 27adcc9

Browse files
panvadanielleadams
authored andcommitted
crypto: ensure "x" is present when importing private CFRG webcrypto keys
PR-URL: #45569 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
1 parent a2e5126 commit 27adcc9

File tree

2 files changed

+4
-24
lines changed

2 files changed

+4
-24
lines changed

lib/internal/crypto/cfrg.js

+4
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,10 @@ async function cfrgImportKey(
275275
}
276276
}
277277

278+
if (!isPublic && typeof keyData.x !== 'string') {
279+
throw lazyDOMException('Invalid JWK keyData', 'DataError');
280+
}
281+
278282
verifyAcceptableCfrgKeyUse(
279283
name,
280284
isPublic ? 'public' : 'private',

test/wpt/status/WebCryptoAPI.json

-24
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,6 @@
2727
"Bad key length: importKey(jwk (public) , {name: Ed25519}, false, [verify])",
2828
"Bad key length: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify])",
2929
"Bad key length: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify])",
30-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign])",
31-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign])",
32-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign, sign])",
33-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign, sign])",
3430
"Invalid key pair: importKey(jwk(private), {name: Ed25519}, true, [sign])",
3531
"Invalid key pair: importKey(jwk(private), {name: Ed25519}, true, [sign, sign])"
3632
]
@@ -55,10 +51,6 @@
5551
"Bad key length: importKey(jwk (public) , {name: Ed448}, false, [verify])",
5652
"Bad key length: importKey(jwk (public) , {name: Ed448}, true, [verify, verify])",
5753
"Bad key length: importKey(jwk (public) , {name: Ed448}, false, [verify, verify])",
58-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed448}, true, [sign])",
59-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed448}, false, [sign])",
60-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed448}, true, [sign, sign])",
61-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed448}, false, [sign, sign])",
6254
"Invalid key pair: importKey(jwk(private), {name: Ed448}, true, [sign])",
6355
"Invalid key pair: importKey(jwk(private), {name: Ed448}, true, [sign, sign])"
6456
]
@@ -95,14 +87,6 @@
9587
"Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveBits])",
9688
"Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
9789
"Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits])",
98-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveKey])",
99-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveKey])",
100-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])",
101-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey])",
102-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveBits])",
103-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveBits])",
104-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
105-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits])",
10690
"Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveKey])",
10791
"Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])",
10892
"Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveBits])",
@@ -141,14 +125,6 @@
141125
"Bad key length: importKey(jwk(private), {name: X448}, false, [deriveKey, deriveBits, deriveKey, deriveBits])",
142126
"Bad key length: importKey(jwk (public) , {name: X448}, true, [])",
143127
"Bad key length: importKey(jwk (public) , {name: X448}, false, [])",
144-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: X448}, true, [deriveKey])",
145-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: X448}, false, [deriveKey])",
146-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: X448}, true, [deriveBits, deriveKey])",
147-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: X448}, false, [deriveBits, deriveKey])",
148-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: X448}, true, [deriveBits])",
149-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: X448}, false, [deriveBits])",
150-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits])",
151-
"Missing JWK 'x' parameter: importKey(jwk(private), {name: X448}, false, [deriveKey, deriveBits, deriveKey, deriveBits])",
152128
"Invalid key pair: importKey(jwk(private), {name: X448}, true, [deriveKey])",
153129
"Invalid key pair: importKey(jwk(private), {name: X448}, true, [deriveBits, deriveKey])",
154130
"Invalid key pair: importKey(jwk(private), {name: X448}, true, [deriveBits])",

0 commit comments

Comments
 (0)