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

Unified Diff: LayoutTests/crypto/generateKey.html

Issue 23126008: WebCrypto: refactor layout tests. (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
« no previous file with comments | « LayoutTests/crypto/encrypt-decrypt-expected.txt ('k') | LayoutTests/crypto/generateKey-expected.txt » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: LayoutTests/crypto/generateKey.html
diff --git a/LayoutTests/crypto/generateKey.html b/LayoutTests/crypto/generateKey.html
index 8baaa2d7bc193a49b8d5c5f910e1c2dd3e0877c4..209d3b34fcfeb36403efaf0fdfc75496e35b8836 100644
--- a/LayoutTests/crypto/generateKey.html
+++ b/LayoutTests/crypto/generateKey.html
@@ -2,6 +2,7 @@
<html>
<head>
<script src="../fast/js/resources/js-test-pre.js"></script>
+<script src="resources/common.js"></script>
</head>
<body>
<p id="description"></p>
@@ -12,48 +13,60 @@ description("Tests cypto.subtle.generateKey.");
jsTestIsAsync = true;
-// Note that fractional numbers are truncated, so this length should be
-// interpreted as 1024.
-aesCbc = { name: 'aes-cbc', length: 1024.9 };
extractable = true;
keyUsages = ['encrypt', 'decrypt'];
-// length property is missing.
-invalidAesKeyGen = { name: 'aes-cbc' };
-shouldThrow("crypto.subtle.generateKey(invalidAesKeyGen, extractable, keyUsages)");
-
-// length is invalid (outside of range of "unsigned short")
-invalidAesKeyGen = { name: 'aes-cbc', length: 70000 };
-shouldThrow("crypto.subtle.generateKey(invalidAesKeyGen, extractable, keyUsages)");
-
-// length is invalid (outside of range of "unsigned short")
-invalidAesKeyGen = { name: 'aes-cbc', length: -3 };
-shouldThrow("crypto.subtle.generateKey(invalidAesKeyGen, extractable, keyUsages)");
-
-// keyUsages is invalid.
+// Invalid keyUsages
+aesCbc = { name: 'aes-cbc', length: 1024 };
shouldThrow("crypto.subtle.generateKey(aesCbc, extractable, -1)");
+shouldThrow("crypto.subtle.generateKey(aesCbc, extractable, null)");
+shouldThrow("crypto.subtle.generateKey(aesCbc, extractable, ['boo'])");
+
+// ---------------------------------------------------
+// AES-CBC normalization failures (AesKeyGenParams)
+// ---------------------------------------------------
+
+shouldThrow("crypto.subtle.generateKey({ name: 'aes-cbc' }, extractable, keyUsages)");
+shouldThrow("crypto.subtle.generateKey({ name: 'aes-cbc', length: 70000 }, extractable, keyUsages)");
+shouldThrow("crypto.subtle.generateKey({ name: 'aes-cbc', length: -3 }, extractable, keyUsages)");
+shouldThrow("crypto.subtle.generateKey({ name: 'aes-cbc', length: -Infinity }, extractable, keyUsages)");
+
+// ---------------------------------------------------
+// HMAC normalization failures (HmacKeyParams)
+// ---------------------------------------------------
+
+shouldThrow("crypto.subtle.generateKey({name: 'hmac', hash: {name: 'sha-256'}, length: -3}, extractable , keyUsages)");
+shouldThrow("crypto.subtle.generateKey({name: 'hmac', hash: {name: ''}, length: 48}, extractable , keyUsages)");
+shouldThrow("crypto.subtle.generateKey({name: 'hmac', hash: {name: 'sha-256'}, length: 5000000000}, extractable , keyUsages)");
+shouldThrow("crypto.subtle.generateKey({name: 'hmac', hash: {name: 'sha-256'}, length: NaN}, extractable , keyUsages)");
+shouldThrow("crypto.subtle.generateKey({name: 'hmac', hash: {name: 'sha-256'}, length: -NaN}, extractable , keyUsages)");
+shouldThrow("crypto.subtle.generateKey({name: 'hmac', hash: {name: 'sha-256'}, length: Infinity}, extractable , keyUsages)");
+shouldThrow("crypto.subtle.generateKey({name: 'hmac', hash: {name: 'sha-256'}, length: -Infinity}, extractable , keyUsages)");
+
+// ---------------------------------------------------
+// RSASSA-PKCS1-v1_5 normalization failures (RsaKeyGenParams)
+// ---------------------------------------------------
+
+shouldThrow("crypto.subtle.generateKey({name: 'RSASSA-PKCS1-v1_5', modulusLength: -30}, extractable , keyUsages)");
+shouldThrow("crypto.subtle.generateKey({name: 'RSASSA-PKCS1-v1_5', modulusLength: NaN}, extractable , keyUsages)");
+shouldThrow("crypto.subtle.generateKey({name: 'RSASSA-PKCS1-v1_5'}, extractable , keyUsages)");
+shouldThrow("crypto.subtle.generateKey({name: 'RSASSA-PKCS1-v1_5', modulusLength: 10}, extractable , keyUsages)");
+shouldThrow("crypto.subtle.generateKey({name: 'RSASSA-PKCS1-v1_5', modulusLength: 10, publicExponent: 10}, extractable , keyUsages)");
+shouldThrow("crypto.subtle.generateKey({name: 'RSASSA-PKCS1-v1_5', modulusLength: 10, publicExponent: null}, extractable , keyUsages)");
-// Invalid length
-invalidHmac256 = { name: 'hmac', hash: {name: 'sha-256' }, length:-3 };
-shouldThrow("crypto.subtle.generateKey(invalidHmac256, false, ['sign'])");
-
-hmacSha256 = { name: 'hmac', hash: {name: 'sha-256' } };
-hmacSha256b = { name: 'hmac', hash: {name: 'sha-256' }, length:48 };
-
-var promise0 = crypto.subtle.generateKey(aesCbc, extractable, keyUsages);
-var promise1 = crypto.subtle.generateKey(hmacSha256, false, ['sign']);
-var promise2 = crypto.subtle.generateKey(hmacSha256b, false, ['sign']);
-
-Promise.every(promise0, promise1, promise2).then(function(results)
-{
- key = results[0];
+// Note that fractional numbers are truncated, so this length should be
+// interpreted as 1024.
+crypto.subtle.generateKey({name: 'aes-cbc', length: 1024.9}, extractable, ['decrypt', 'encrypt']).then(function(result) {
+ key = result;
shouldBe("key.type", "'private'")
shouldBe("key.extractable", "true")
shouldBe("key.algorithm.name", "'AES-CBC'")
shouldBe("key.algorithm.length", "1024")
shouldBe("key.usages.join(',')", "'encrypt,decrypt'")
- key = results[1];
+ return crypto.subtle.generateKey({name: 'hmac', hash: {name: 'sha-256' }}, false, ['sign']);
+}).then(function(result) {
+ key = result;
shouldBe("key.type", "'private'")
shouldBe("key.extractable", "false")
shouldBe("key.algorithm.name", "'HMAC'")
@@ -61,16 +74,16 @@ Promise.every(promise0, promise1, promise2).then(function(results)
shouldBe("key.algorithm.length", "null")
shouldBe("key.usages.join(',')", "'sign'")
- key = results[2];
+ return crypto.subtle.generateKey({name: 'hmac', hash: {name: 'sha-256' }, length:48 }, false, ['sign']);
+}).then(function(result) {
+ key = result;
shouldBe("key.type", "'private'")
shouldBe("key.extractable", "false")
shouldBe("key.algorithm.name", "'HMAC'")
shouldBe("key.algorithm.hash.name", "'SHA-256'")
shouldBe("key.algorithm.length", "48")
shouldBe("key.usages.join(',')", "'sign'")
-
- finishJSTest();
-});
+}).then(finishJSTest, failAndFinishJSTest);
</script>
« no previous file with comments | « LayoutTests/crypto/encrypt-decrypt-expected.txt ('k') | LayoutTests/crypto/generateKey-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698