haikuwebkit/LayoutTests/crypto/subtle/hmac-generate-export-raw-ke...

33 lines
728 B
HTML
Raw Permalink Normal View History

Update SubtleCrypto::exportKey to match the latest spec https://bugs.webkit.org/show_bug.cgi?id=164722 <rdar://problem/29251740> Reviewed by Brent Fulgham. LayoutTests/imported/w3c: * WebCryptoAPI/idlharness-expected.txt: Source/WebCore: This patch does following few things: 1. It updates the SubtleCrypto::exportKey method to match the latest spec: https://www.w3.org/TR/WebCryptoAPI/#SubtleCrypto-method-exportKey. It also refers to the latest Editor's Draft to a certain degree: https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-exportKey. 2. It implements exportKey operations of the following algorithms: AES-CBC, AES-KW, HMAC, RSAES-PKCS1-V1_5, RSASSA-PKCS1-V1_5, and RSA-OAEP. 3. It also fixes the following bugs: https://bugs.webkit.org/show_bug.cgi?id=156114, <rdar://problem/21773066>. Note: We currently only support Raw and Jwk key format. Tests: crypto/subtle/aes-cbc-generate-export-key-jwk-length-128.html crypto/subtle/aes-cbc-generate-export-key-jwk-length-192.html crypto/subtle/aes-cbc-generate-export-key-jwk-length-256.html crypto/subtle/aes-cbc-generate-export-key-raw.html crypto/subtle/aes-export-key-malformed-parameters.html crypto/subtle/aes-kw-generate-export-key-jwk-length-128.html crypto/subtle/aes-kw-generate-export-key-jwk-length-192.html crypto/subtle/aes-kw-generate-export-key-jwk-length-256.html crypto/subtle/aes-kw-generate-export-raw-key.html crypto/subtle/export-key-malformed-parameters.html crypto/subtle/hmac-export-key-malformed-parameters.html crypto/subtle/hmac-generate-export-key-jwk-sha1.html crypto/subtle/hmac-generate-export-key-jwk-sha224.html crypto/subtle/hmac-generate-export-key-jwk-sha256.html crypto/subtle/hmac-generate-export-key-jwk-sha384.html crypto/subtle/hmac-generate-export-key-jwk-sha512.html crypto/subtle/hmac-generate-export-raw-key.html crypto/subtle/hmac-import-key-malformed-parameters.html crypto/subtle/rsa-export-key-malformed-parameters.html crypto/subtle/rsa-oaep-generate-export-key-jwk-sha1.html crypto/subtle/rsa-oaep-generate-export-key-jwk-sha224.html crypto/subtle/rsa-oaep-generate-export-key-jwk-sha256.html crypto/subtle/rsa-oaep-generate-export-key-jwk-sha384.html crypto/subtle/rsa-oaep-generate-export-key-jwk-sha512.html crypto/subtle/rsaes-pkcs1-v1_5-generate-export-key-jwk.html crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-jwk-sha1.html crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-jwk-sha224.html crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-jwk-sha256.html crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-jwk-sha384.html crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-jwk-sha512.html crypto/workers/subtle/aes-generate-export-key-jwk.html crypto/workers/subtle/aes-generate-export-key-raw.html crypto/workers/subtle/hmac-generate-export-key-jwk.html crypto/workers/subtle/hmac-generate-export-key-raw.html crypto/workers/subtle/rsa-generate-export-key-jwk.html * bindings/js/JSSubtleCryptoCustom.cpp: (WebCore::toJSValueFromJsonWebKey): (WebCore::jsSubtleCryptoFunctionExportKeyPromise): (WebCore::JSSubtleCrypto::exportKey): * crypto/CryptoAlgorithm.cpp: (WebCore::CryptoAlgorithm::exportKey): * crypto/CryptoAlgorithm.h: * crypto/SubtleCrypto.idl: * crypto/algorithms/CryptoAlgorithmAES_CBC.cpp: (WebCore::CryptoAlgorithmAES_CBC::importKey): (WebCore::CryptoAlgorithmAES_CBC::exportKey): * crypto/algorithms/CryptoAlgorithmAES_CBC.h: * crypto/algorithms/CryptoAlgorithmAES_KW.cpp: (WebCore::CryptoAlgorithmAES_KW::importKey): (WebCore::CryptoAlgorithmAES_KW::exportKey): * crypto/algorithms/CryptoAlgorithmAES_KW.h: * crypto/algorithms/CryptoAlgorithmHMAC.cpp: (WebCore::CryptoAlgorithmHMAC::importKey): (WebCore::CryptoAlgorithmHMAC::exportKey): * crypto/algorithms/CryptoAlgorithmHMAC.h: * crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp: (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::importKey): (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::exportKey): * crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h: * crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp: (WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey): (WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::exportKey): * crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h: * crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp: (WebCore::CryptoAlgorithmRSA_OAEP::importKey): (WebCore::CryptoAlgorithmRSA_OAEP::exportKey): * crypto/algorithms/CryptoAlgorithmRSA_OAEP.h: * crypto/keys/CryptoKeyAES.cpp: (WebCore::CryptoKeyAES::exportJwk): * crypto/keys/CryptoKeyAES.h: * crypto/keys/CryptoKeyHMAC.cpp: (WebCore::CryptoKeyHMAC::exportJwk): * crypto/keys/CryptoKeyHMAC.h: * crypto/keys/CryptoKeyRSA.cpp: (WebCore::CryptoKeyRSA::exportJwk): * crypto/keys/CryptoKeyRSA.h: LayoutTests: Besides adding test cases for SubtleCrypto::exportKey, this patch also corrects a typo: hmac-import-malformed-parameters* => hmac-import-key-malformed-parameters*. * crypto/subtle/aes-cbc-generate-export-key-jwk-length-128-expected.txt: Added. * crypto/subtle/aes-cbc-generate-export-key-jwk-length-128.html: Added. * crypto/subtle/aes-cbc-generate-export-key-jwk-length-192-expected.txt: Added. * crypto/subtle/aes-cbc-generate-export-key-jwk-length-192.html: Added. * crypto/subtle/aes-cbc-generate-export-key-jwk-length-256-expected.txt: Added. * crypto/subtle/aes-cbc-generate-export-key-jwk-length-256.html: Added. * crypto/subtle/aes-cbc-generate-export-key-raw-expected.txt: Added. * crypto/subtle/aes-cbc-generate-export-key-raw.html: Added. * crypto/subtle/aes-export-key-malformed-parameters-expected.txt: Added. * crypto/subtle/aes-export-key-malformed-parameters.html: Added. * crypto/subtle/aes-kw-generate-export-key-jwk-length-128-expected.txt: Added. * crypto/subtle/aes-kw-generate-export-key-jwk-length-128.html: Added. * crypto/subtle/aes-kw-generate-export-key-jwk-length-192-expected.txt: Added. * crypto/subtle/aes-kw-generate-export-key-jwk-length-192.html: Added. * crypto/subtle/aes-kw-generate-export-key-jwk-length-256-expected.txt: Added. * crypto/subtle/aes-kw-generate-export-key-jwk-length-256.html: Added. * crypto/subtle/aes-kw-generate-export-raw-key-expected.txt: Added. * crypto/subtle/aes-kw-generate-export-raw-key.html: Added. * crypto/subtle/export-key-malformed-parameters-expected.txt: Added. * crypto/subtle/export-key-malformed-parameters.html: Added. * crypto/subtle/hmac-export-key-malformed-parameters-expected.txt: Added. * crypto/subtle/hmac-export-key-malformed-parameters.html: Added. * crypto/subtle/hmac-generate-export-key-jwk-sha1-expected.txt: Added. * crypto/subtle/hmac-generate-export-key-jwk-sha1.html: Added. * crypto/subtle/hmac-generate-export-key-jwk-sha224-expected.txt: Added. * crypto/subtle/hmac-generate-export-key-jwk-sha224.html: Added. * crypto/subtle/hmac-generate-export-key-jwk-sha256-expected.txt: Added. * crypto/subtle/hmac-generate-export-key-jwk-sha256.html: Added. * crypto/subtle/hmac-generate-export-key-jwk-sha384-expected.txt: Added. * crypto/subtle/hmac-generate-export-key-jwk-sha384.html: Added. * crypto/subtle/hmac-generate-export-key-jwk-sha512-expected.txt: Added. * crypto/subtle/hmac-generate-export-key-jwk-sha512.html: Added. * crypto/subtle/hmac-generate-export-raw-key-expected.txt: Added. * crypto/subtle/hmac-generate-export-raw-key.html: Added. * crypto/subtle/hmac-import-key-malformed-parameters-expected.txt: Renamed from LayoutTests/crypto/subtle/hmac-import-malformed-parameters-expected.txt. * crypto/subtle/hmac-import-key-malformed-parameters.html: Renamed from LayoutTests/crypto/subtle/hmac-import-malformed-parameters.html. * crypto/subtle/rsa-export-key-malformed-parameters-expected.txt: Added. * crypto/subtle/rsa-export-key-malformed-parameters.html: Added. * crypto/subtle/rsa-oaep-generate-export-key-jwk-sha1-expected.txt: Added. * crypto/subtle/rsa-oaep-generate-export-key-jwk-sha1.html: Added. * crypto/subtle/rsa-oaep-generate-export-key-jwk-sha224-expected.txt: Added. * crypto/subtle/rsa-oaep-generate-export-key-jwk-sha224.html: Added. * crypto/subtle/rsa-oaep-generate-export-key-jwk-sha256-expected.txt: Added. * crypto/subtle/rsa-oaep-generate-export-key-jwk-sha256.html: Added. * crypto/subtle/rsa-oaep-generate-export-key-jwk-sha384-expected.txt: Added. * crypto/subtle/rsa-oaep-generate-export-key-jwk-sha384.html: Added. * crypto/subtle/rsa-oaep-generate-export-key-jwk-sha512-expected.txt: Added. * crypto/subtle/rsa-oaep-generate-export-key-jwk-sha512.html: Added. * crypto/subtle/rsaes-pkcs1-v1_5-generate-export-key-jwk-expected.txt: Added. * crypto/subtle/rsaes-pkcs1-v1_5-generate-export-key-jwk.html: Added. * crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-jwk-sha1-expected.txt: Added. * crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-jwk-sha1.html: Added. * crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-jwk-sha224-expected.txt: Added. * crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-jwk-sha224.html: Added. * crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-jwk-sha256-expected.txt: Added. * crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-jwk-sha256.html: Added. * crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-jwk-sha384-expected.txt: Added. * crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-jwk-sha384.html: Added. * crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-jwk-sha512-expected.txt: Added. * crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-jwk-sha512.html: Added. * crypto/workers/subtle/aes-generate-export-key-jwk-expected.txt: Added. * crypto/workers/subtle/aes-generate-export-key-jwk.html: Added. * crypto/workers/subtle/aes-generate-export-key-raw-expected.txt: Added. * crypto/workers/subtle/aes-generate-export-key-raw.html: Added. * crypto/workers/subtle/hmac-generate-export-key-jwk-expected.txt: Added. * crypto/workers/subtle/hmac-generate-export-key-jwk.html: Added. * crypto/workers/subtle/hmac-generate-export-key-raw-expected.txt: Added. * crypto/workers/subtle/hmac-generate-export-key-raw.html: Added. * crypto/workers/subtle/resources/aes-generate-export-key-jwk.js: Added. * crypto/workers/subtle/resources/aes-generate-export-key-raw.js: Added. * crypto/workers/subtle/resources/hmac-generate-export-key-jwk.js: Added. * crypto/workers/subtle/resources/hmac-generate-export-key-raw.js: Added. * crypto/workers/subtle/resources/rsa-generate-export-key-jwk.js: Added. * crypto/workers/subtle/rsa-generate-export-key-jwk-expected.txt: Added. * crypto/workers/subtle/rsa-generate-export-key-jwk.html: Added. Canonical link: https://commits.webkit.org/182451@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@208737 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-11-15 19:08:25 +00:00
<!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 an HMAC key with raw format");
jsTestIsAsync = true;
var extractable = true;
debug("Generating a key...");
crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["sign", "verify"]).then(function(key) {
debug("Exporting a key...");
return crypto.subtle.exportKey("raw", key);
}).then(function(result) {
key = result;
shouldBe("key.byteLength", "64");
finishJSTest();
});
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>