1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <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>
|