| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| <script src="resources/common.js"></script> |
| </head> |
| <body> |
| <p id="description"></p> |
| <div id="console"></div> |
| |
| <script> |
| description("Test exporting a generated RSA keypair with hash."); |
| |
| jsTestIsAsync = true; |
| |
| var extractable = true; |
| |
| var algorithm = { |
| name: "RSASSA-PKCS1-v1_5", |
| modulusLength: "2048", |
| publicExponent: new Uint8Array([1, 0, 1]), // 2^16 + 1 (65537) |
| hash: { name: "SHA-256" } |
| }; |
| |
| debug("\nGenerating RSA-PKCS1-v1.5 keyPair..."); |
| crypto.subtle.generateKey(algorithm, extractable, ['sign', 'verify']) |
| .then(function(result) { |
| key = result; |
| |
| shouldThrow('crypto.subtle.exportKey(null, key)'); |
| shouldThrow('crypto.subtle.exportKey(undefined, key)'); |
| shouldThrow('crypto.subtle.exportKey({}, key)'); |
| shouldThrow('crypto.subtle.exportKey("", key)'); |
| shouldThrow('crypto.subtle.exportKey("foobar", key)'); |
| shouldBeDefined('key.publicKey.algorithm.hash.name'); |
| shouldBeDefined('key.privateKey.algorithm.hash.name'); |
| |
| debug("\nExporting public key as JWK..."); |
| return crypto.subtle.exportKey("jwk", key.publicKey); |
| }).then(function(result) { |
| exportedJWK = JSON.parse(bytesToASCIIString(result)); |
| |
| shouldBe("exportedJWK.kty", "'RSA'"); |
| shouldBe("exportedJWK.alg", "'RS256'"); |
| shouldBe("exportedJWK.ext", "true"); |
| shouldBe("exportedJWK.use", "undefined"); |
| shouldBe("exportedJWK.key_ops", "['sign', 'verify']"); |
| |
| debug("\nExporting private key as JWK..."); |
| return crypto.subtle.exportKey("jwk", key.privateKey); |
| }).then(function(result) { |
| exportedJWK = JSON.parse(bytesToASCIIString(result)); |
| |
| shouldBe("exportedJWK.kty", "'RSA'"); |
| shouldBe("exportedJWK.alg", "'RS256'"); |
| shouldBe("exportedJWK.ext", "true"); |
| shouldBe("exportedJWK.use", "undefined"); |
| shouldBe("exportedJWK.key_ops", "['sign', 'verify']"); |
| |
| finishJSTest(); |
| }); |
| </script> |
| |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |