1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 08:48:11 +00:00
serenity/Tests/LibWeb/Text/input/Crypto/SubtleCrypto-generateKey.html
Andrew Kaster c4be9318a2 Tests: Only use a 256-bit RSA key in SubtleCrypto generateKey test
Until we get a better performing RSA keygen algorithm, this test times
out occasionally in CI with a 512-bit key.
2024-03-14 17:57:37 -06:00

68 lines
2.3 KiB
HTML

<script src="../include.js"></script>
<script>
function bufferToHex(buffer) {
return [...new Uint8Array(buffer)].map(b => b.toString(16).padStart(2, "0")).join("");
}
asyncTest(async done => {
// FIXME: Generate a key with module lengths longer than 256, when they don't take an eternity to generate.
// This is #23561
let algorithm = {
name: "RSA-OAEP",
modulusLength: 256,
publicExponent: new Uint8Array([1, 0, 1]),
hash: "SHA-256",
};
println("generateKey with RSA-OAEP algorithm");
var key = undefined;
try {
key = await window.crypto.subtle.generateKey(algorithm, true, [
"encrypt",
"decrypt",
"wrapKey",
"unwrapKey",
]);
} catch (e) {
println(`FAIL: ${e}`);
}
// FIXME: Report bugs to Chrome/Firefox about the order of properties on algorithm not matching us/Safari
println(`publicKey: ${key.publicKey}`);
println(`publicKey algorithm: ${JSON.stringify(key.publicKey.algorithm)}`);
println(`publicKey type: ${key.publicKey.type}`);
println(`publicKey extractable: ${key.publicKey.extractable}`);
println(`publicKey usages: ${key.publicKey.usages}`);
println(`privateKey: ${key.privateKey}`);
println(`privateKey algorithm: ${JSON.stringify(key.privateKey.algorithm)}`);
println(`privateKey type: ${key.privateKey.type}`);
println(`privateKey extractable: ${key.privateKey.extractable}`);
println(`privateKey usages: ${key.privateKey.usages}`);
println("invalid usages throw");
try {
const key2 = await window.crypto.subtle.generateKey(algorithm, true, [
"encrypt",
"decrypt",
"wrapKey",
"unwrapKey",
"sign",
]);
} catch (e) {
println(`Error: ${e}`);
}
println("no usages for private key throws");
try {
const key3 = await window.crypto.subtle.generateKey(algorithm, true, [
"encrypt",
"wrapKey",
]);
} catch (e) {
println(`Error: ${e}`);
}
done();
});
</script>