Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(727)

Unified Diff: LayoutTests/crypto/normalize-algorithm.html

Issue 23164012: WebCrypto: Remove support for multi-part operations. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>

Powered by Google App Engine
This is Rietveld 408576698