Index: LayoutTests/crypto/normalize-algorithm.html |
diff --git a/LayoutTests/crypto/normalize-algorithm.html b/LayoutTests/crypto/normalize-algorithm.html |
deleted file mode 100644 |
index c867fd469131cdf74412e081145f8debaca699ef..0000000000000000000000000000000000000000 |
--- a/LayoutTests/crypto/normalize-algorithm.html |
+++ /dev/null |
@@ -1,223 +0,0 @@ |
-<!DOCTYPE html> |
-<html> |
-<head> |
-<script src="../fast/js/resources/js-test-pre.js"></script> |
-<script src="resources/common.js"></script> |
-</head> |
-<body> |
-<p id="description"></p> |
-<div id="console"></div> |
- |
-<script> |
-description("Tests algorithm normalization."); |
- |
-jsTestIsAsync = true; |
- |
-// FIXME: Rename this to crypto-operation.html, since it tests the basic |
-// construction of CryptoOperations. |
- |
-// ------------------------------- |
-// Helpers to return a normalized algorithm identifier. |
-// ------------------------------- |
- |
-aesCbcKey = null; |
-hmacSha1Key = null; |
-rsaSsaKey = null; |
- |
-function normalizeDigest(algorithmIdentifier) |
-{ |
- return crypto.subtle.digest(algorithmIdentifier).algorithm; |
-} |
- |
-function normalizeEncrypt(algorithmIdentifier, key) |
-{ |
- return crypto.subtle.encrypt(algorithmIdentifier, key).algorithm; |
-} |
- |
-function normalizeSign(algorithmIdentifier, key) |
-{ |
- return crypto.subtle.sign(algorithmIdentifier, key).algorithm; |
-} |
- |
-function runTests() |
-{ |
- // ------------------------------- |
- // Case insensitivity of "name" |
- // ------------------------------- |
- algorithm = normalizeDigest({name: "SHA-1"}); |
- shouldBe("algorithm.name", "'SHA-1'"); |
- algorithm = normalizeDigest({name: "sHa-256"}); |
- shouldBe("algorithm.name", "'SHA-256'"); |
- |
- // ------------------------------- |
- // Failures if "name" is invalid |
- // ------------------------------- |
- shouldThrow("normalizeDigest({})"); |
- shouldThrow("normalizeDigest({name: null})"); |
- shouldThrow("normalizeDigest({name: -1})"); |
- shouldThrow("normalizeDigest({name: ''})"); |
- shouldThrow("normalizeDigest({name: 'nosuchalgorithm'})"); |
- shouldThrow("normalizeDigest({name: '\\u0189'})"); |
- |
- // ------------------------------- |
- // Failures if the algorithm identifier is not an object |
- // ------------------------------- |
- shouldThrow("normalizeDigest(null)"); |
- shouldThrow("normalizeDigest(0)"); |
- shouldThrow("normalizeDigest(undefined)"); |
- shouldThrow("normalizeDigest('')"); |
- |
- // ------------------------------- |
- // Skip unrecognized parameters. |
- // ------------------------------- |
- algorithm = normalizeDigest({name: "sHa-1", noSuchParam: 3}); |
- shouldBeUndefined("algorithm.noSuchParam"); |
- |
- // ------------------------------- |
- // Normalized algorithm COPIES all data |
- // ------------------------------- |
- originalIv = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]); |
- algorithm = normalizeEncrypt({ name: "aes-cbc", iv: originalIv }, aesCbcKey); |
- |
- // Make sure it constructed the normalized result. |
- shouldBe("algorithm.name", "'AES-CBC'"); |
- shouldBe("algorithm.iv.length", "16"); |
- shouldBe("algorithm.iv[3]", "3"); |
- |
- // Mutate the original (un-normalized) algorithm. Verify that this doesn't affect the normalized output. |
- originalIv[3] = 0; |
- shouldBe("algorithm.iv[3]", "3"); |
- |
- // ------------------------------- |
- // AES-CBC normalization failures |
- // ------------------------------- |
- |
- // The "iv" MUST be 16 bytes long. |
- rawAlgorithm = { |
- name: "AES-CBC", |
- iv: new Uint8Array([1, 2, 3]) |
- }; |
- shouldThrow("normalizeEncrypt(rawAlgorithm, aesCbcKey)"); |
- |
- // ------------------------------- |
- // Normalize a normalized algorithm (SHA-384) |
- // ------------------------------- |
- algorithm = normalizeDigest({name: "sHa-384"}); |
- shouldBe("algorithm.name", "'SHA-384'"); |
- algorithm = normalizeDigest(algorithm); |
- shouldBe("algorithm.name", "'SHA-384'"); |
- |
- // ------------------------------- |
- // Normalize a normalized algorithm (AES-CBC, encrypt) |
- // ------------------------------- |
- algorithm = normalizeEncrypt({ name: "aEs-cbc", iv: originalIv }, aesCbcKey); |
- // Make sure it constructed the normalized result. |
- shouldBe("algorithm.name", "'AES-CBC'"); |
- shouldBe("algorithm.iv.length", "16"); |
- shouldBe("algorithm.iv[1]", "1"); |
- algorithm = normalizeEncrypt(algorithm, aesCbcKey); |
- shouldBe("algorithm.name", "'AES-CBC'"); |
- shouldBe("algorithm.iv.length", "16"); |
- shouldBe("algorithm.iv[1]", "1"); |
- |
- // ------------------------------- |
- // Unsupported operation on algorithm |
- // ------------------------------- |
- shouldThrow("normalizeEncrypt({ name: 'SHA-1' }, aesCbcKey)"); |
- shouldThrow("normalizeDigest({ name: 'AES-CBC', iv: originalIv })"); |
- |
- // ------------------------------- |
- // Normalize HMAC |
- // ------------------------------- |
- shouldThrow("normalizeSign({name: 'hmac'}, hmacSha1Key)"); // Missing "hash" |
- shouldThrow("normalizeSign({name: 'hmac', hash: 'foo'}, hmacSha1Key)"); // Not a valid "hash" |
- shouldThrow("normalizeSign({name: 'hmac', hash: { name: 'AES-CBC', iv: originalIv }}, hmacSha1Key)"); // Not a valid "hash" |
- |
- validHmacSha1 = {name: 'hmac', hash: {name: 'Sha-1'}}; |
- algorithm = normalizeSign(validHmacSha1, hmacSha1Key); |
- shouldBe("algorithm.name", "'HMAC'"); |
- shouldBe("algorithm.hash.name", "'SHA-1'"); |
- |
- shouldThrow("normalizeEncrypt(validHmacSha1, hmacSha1Key)"); // Not defined for encrypt() |
- |
- // ------------------------------- |
- // Normalize RSASSA-PKCS1-v1_5 |
- // ------------------------------- |
- shouldThrow("normalizeSign({name: 'RSASSA-PKCS1-v1_5'}, rsaSsaKey)"); // Missing "hash" |
- shouldThrow("normalizeSign({name: 'RSASSA-PKCS1-v1_5', hash: 'foo'}, rsaSsaKey)"); // Not a valid "hash" |
- shouldThrow("normalizeSign({name: 'RSASSA-PKCS1-v1_5', hash: { name: 'AES-CBC', iv: originalIv }}, rsaSsaKey)"); // Not a valid "hash" |
- |
- validRsaSsa = {name: 'RsaSsa-PKCS1-v1_5', hash: {name: 'Sha-256'}}; |
- algorithm = normalizeSign(validRsaSsa, rsaSsaKey); |
- shouldBe("algorithm.name", "'RSASSA-PKCS1-v1_5'"); |
- shouldBe("algorithm.hash.name", "'SHA-256'"); |
- |
- shouldThrow("normalizeEncrypt(validRsaSsa, rsaSsaKey)"); // Not defined for encrypt() |
- |
- // FIXME: Test the normalization of RsaSsaKeyGen parameters. |
- |
- // ------------------------------- |
- // Try using a key for an unsupported operation. |
- // ------------------------------- |
- algorithmIdentifier = { name: "aes-cbc", iv: originalIv }; |
- shouldThrow("crypto.subtle.encrypt(algorithmIdentifier, aesCbcKeyNoEncrypt)"); |
- |
- // ------------------------------- |
- // Try using an HMAC-SHA1 key for encrypting AES-CBC |
- // ------------------------------- |
- algorithmIdentifier = { name: "aes-cbc", iv: originalIv }; |
- shouldThrow("crypto.subtle.encrypt(algorithmIdentifier, hmacSha1Key)"); |
- |
- // ------------------------------- |
- // Try using an HMAC-SHA1 key for signing HMAC-SHA256 |
- // ------------------------------- |
- algorithmIdentifier = {name: 'hmac', hash: {name: 'sha-256'}}; |
- shouldThrow("crypto.subtle.sign(algorithmIdentifier, hmacSha1Key)"); |
-} |
- |
-function importAesCbcKey(keyUsages) |
-{ |
- var keyFormat = "spki"; |
- var data = new Uint8Array([]); |
- var algorithm = {name: "aes-cbc"}; |
- var extractable = false; |
- |
- return crypto.subtle.importKey(keyFormat, data, algorithm, extractable, keyUsages); |
-} |
- |
-function importRsaSsaKey() |
-{ |
- var keyFormat = "spki"; |
- var data = new Uint8Array([]); |
- var algorithm = {name: "RSASSA-PKCS1-v1_5"}; |
- var extractable = false; |
- var keyUsages = ["encrypt", "decrypt", "verify", "sign"]; |
- |
- return crypto.subtle.importKey(keyFormat, data, algorithm, extractable, keyUsages); |
-} |
- |
-function failedKeyImport(value) |
-{ |
- debug("Failed importing key: " + value); |
- finishJSTest(); |
-} |
- |
-// Import two keys before starting the tests: one for AES-CBC, and one for |
-// HMAC SHA1. |
-Promise.every(importAesCbcKey(['encrypt', 'decrypt', 'sign', 'verify']), importAesCbcKey(['decrypt', 'sign', 'verify']), importHmacSha1Key(), importRsaSsaKey()).then(function(keys) |
-{ |
- aesCbcKey = keys[0]; |
- aesCbcKeyNoEncrypt = keys[1]; |
- hmacSha1Key = keys[2]; |
- rsaSsaKey = keys[3]; |
- |
- runTests(); |
- finishJSTest(); |
- |
-}, failedKeyImport); |
- |
-</script> |
- |
-<script src="../fast/js/resources/js-test-post.js"></script> |
-</body> |
-</html> |