mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-12 19:19:30 +00:00
LibWeb: Add roundtrip SubtleCrypto import/export test using JWK
This commit is contained in:
parent
95303ae4a1
commit
0743a33266
Notes:
sideshowbarker
2024-07-17 06:54:15 +09:00
Author: https://github.com/ADKaster
Commit: 0743a33266
Pull-request: https://github.com/SerenityOS/serenity/pull/23596
Reviewed-by: https://github.com/alimpfard
3 changed files with 98 additions and 2 deletions
|
@ -0,0 +1,26 @@
|
||||||
|
Public key:
|
||||||
|
exported kty: RSA
|
||||||
|
exported alg: RSA-OAEP-256
|
||||||
|
exported ext: true
|
||||||
|
exported key_ops: encrypt
|
||||||
|
exported e: AQAB
|
||||||
|
exported n: xXyO27tsz-XjK5UI3Y_RRo2G23M1miuBgzcqC-0fAMFeEoEyMPlZIuJKnMH4I2AW-MQ-4jGLvajIbIc2knKxwQ
|
||||||
|
exported d: undefined
|
||||||
|
exported p: undefined
|
||||||
|
exported q: undefined
|
||||||
|
exported dp: undefined
|
||||||
|
exported dq: undefined
|
||||||
|
exported qi: undefined
|
||||||
|
Private key:
|
||||||
|
exported kty: RSA
|
||||||
|
exported alg: RSA-OAEP-256
|
||||||
|
exported ext: true
|
||||||
|
exported key_ops: decrypt
|
||||||
|
exported e: AQAB
|
||||||
|
exported n: xXyO27tsz-XjK5UI3Y_RRo2G23M1miuBgzcqC-0fAMFeEoEyMPlZIuJKnMH4I2AW-MQ-4jGLvajIbIc2knKxwQ
|
||||||
|
exported d: vmh-BPYMz9ZC1b54Mcd8a54BLI1EXUUdNjp129HgVoRoaYRgedQ5DXF4D-9i5zGjWjb-ZKlyrArt5z896d0B
|
||||||
|
exported p: 4tConw6cko5LVskz7POlxGn0nLZdahFBYchQTD6eKwE
|
||||||
|
exported q: 3uXPp1FGWgdMh7qym7a8C9IrFErhFR_QUwpBr_dyRsE
|
||||||
|
exported dp: VTarg0aMEIuhRnPFLGrFhquAGThylBzzgXcuo9aKugE
|
||||||
|
exported dq: aWZmUQo_qCa3a58_Ah7gwP463Lejw6dtjTbWZO0vnoE
|
||||||
|
exported qi: CjE8i_twYrw9nyR_e-jTcMPVuxpx8N9lxr4ZkTVpSEs
|
|
@ -21,8 +21,6 @@
|
||||||
"unwrapKey",
|
"unwrapKey",
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// FIXME: Create a roundtrip test that starts with a key object and imports it, then exports it.
|
|
||||||
|
|
||||||
let exportedPublicKey = await window.crypto.subtle.exportKey("jwk", key.publicKey);
|
let exportedPublicKey = await window.crypto.subtle.exportKey("jwk", key.publicKey);
|
||||||
println(`exportedPublicKey kwt: ${exportedPublicKey.kty}`);
|
println(`exportedPublicKey kwt: ${exportedPublicKey.kty}`);
|
||||||
println(`exportedPublicKey alg: ${exportedPublicKey.alg}`);
|
println(`exportedPublicKey alg: ${exportedPublicKey.alg}`);
|
||||||
|
|
|
@ -0,0 +1,72 @@
|
||||||
|
<script src="../include.js"></script>
|
||||||
|
<script>
|
||||||
|
asyncTest(async (done) => {
|
||||||
|
|
||||||
|
let jwk = {
|
||||||
|
alg: "RSA-OAEP-256",
|
||||||
|
kty: "RSA",
|
||||||
|
ext: true,
|
||||||
|
key_ops: [ "encrypt", "decrypt" ],
|
||||||
|
e: "AQAB",
|
||||||
|
n: "xXyO27tsz-XjK5UI3Y_RRo2G23M1miuBgzcqC-0fAMFeEoEyMPlZIuJKnMH4I2AW-MQ-4jGLvajIbIc2knKxwQ",
|
||||||
|
};
|
||||||
|
|
||||||
|
let key = await window.crypto.subtle.importKey(
|
||||||
|
"jwk",
|
||||||
|
jwk,
|
||||||
|
{ name: "RSA-OAEP", hash: "SHA-256" },
|
||||||
|
true,
|
||||||
|
[ "encrypt" ]
|
||||||
|
);
|
||||||
|
|
||||||
|
let exported = await window.crypto.subtle.exportKey("jwk", key);
|
||||||
|
|
||||||
|
println("Public key:");
|
||||||
|
println(`exported kty: ${exported.kty}`);
|
||||||
|
println(`exported alg: ${exported.alg}`);
|
||||||
|
println(`exported ext: ${exported.ext}`);
|
||||||
|
println(`exported key_ops: ${exported.key_ops}`);
|
||||||
|
println(`exported e: ${exported.e}`);
|
||||||
|
println(`exported n: ${exported.n}`);
|
||||||
|
println(`exported d: ${exported.d}`);
|
||||||
|
println(`exported p: ${exported.p}`);
|
||||||
|
println(`exported q: ${exported.q}`);
|
||||||
|
println(`exported dp: ${exported.dp}`);
|
||||||
|
println(`exported dq: ${exported.dq}`);
|
||||||
|
println(`exported qi: ${exported.qi}`);
|
||||||
|
|
||||||
|
// Add private key parameters
|
||||||
|
jwk.d = "vmh-BPYMz9ZC1b54Mcd8a54BLI1EXUUdNjp129HgVoRoaYRgedQ5DXF4D-9i5zGjWjb-ZKlyrArt5z896d0B";
|
||||||
|
jwk.p = "4tConw6cko5LVskz7POlxGn0nLZdahFBYchQTD6eKwE";
|
||||||
|
jwk.q = "3uXPp1FGWgdMh7qym7a8C9IrFErhFR_QUwpBr_dyRsE";
|
||||||
|
jwk.dp = "VTarg0aMEIuhRnPFLGrFhquAGThylBzzgXcuo9aKugE";
|
||||||
|
jwk.dq = "aWZmUQo_qCa3a58_Ah7gwP463Lejw6dtjTbWZO0vnoE";
|
||||||
|
jwk.qi = "CjE8i_twYrw9nyR_e-jTcMPVuxpx8N9lxr4ZkTVpSEs";
|
||||||
|
|
||||||
|
key = await window.crypto.subtle.importKey(
|
||||||
|
"jwk",
|
||||||
|
jwk,
|
||||||
|
{ name: "RSA-OAEP", hash: "SHA-256" },
|
||||||
|
true,
|
||||||
|
[ "decrypt" ]
|
||||||
|
);
|
||||||
|
|
||||||
|
exported = await window.crypto.subtle.exportKey("jwk", key);
|
||||||
|
|
||||||
|
println("Private key:");
|
||||||
|
println(`exported kty: ${exported.kty}`);
|
||||||
|
println(`exported alg: ${exported.alg}`);
|
||||||
|
println(`exported ext: ${exported.ext}`);
|
||||||
|
println(`exported key_ops: ${exported.key_ops}`);
|
||||||
|
println(`exported e: ${exported.e}`);
|
||||||
|
println(`exported n: ${exported.n}`);
|
||||||
|
println(`exported d: ${exported.d}`);
|
||||||
|
println(`exported p: ${exported.p}`);
|
||||||
|
println(`exported q: ${exported.q}`);
|
||||||
|
println(`exported dp: ${exported.dp}`);
|
||||||
|
println(`exported dq: ${exported.dq}`);
|
||||||
|
println(`exported qi: ${exported.qi}`);
|
||||||
|
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
</script>
|
Loading…
Add table
Add a link
Reference in a new issue