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

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

Issue 21759002: WebCrypto: Add algorithm normalization rules for RSASSA-PKCS1-v1_5. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase onto master Created 7 years, 5 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 | « no previous file | LayoutTests/crypto/normalize-algorithm-expected.txt » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: LayoutTests/crypto/normalize-algorithm.html
diff --git a/LayoutTests/crypto/normalize-algorithm.html b/LayoutTests/crypto/normalize-algorithm.html
index e3fea0d633f04d13cbb06d2417e2e36c0944fcd9..c867fd469131cdf74412e081145f8debaca699ef 100644
--- a/LayoutTests/crypto/normalize-algorithm.html
+++ b/LayoutTests/crypto/normalize-algorithm.html
@@ -22,20 +22,21 @@ jsTestIsAsync = true;
aesCbcKey = null;
hmacSha1Key = null;
+rsaSsaKey = null;
function normalizeDigest(algorithmIdentifier)
{
return crypto.subtle.digest(algorithmIdentifier).algorithm;
}
-function normalizeEncrypt(algorithmIdentifier)
+function normalizeEncrypt(algorithmIdentifier, key)
{
- return crypto.subtle.encrypt(algorithmIdentifier, aesCbcKey).algorithm;
+ return crypto.subtle.encrypt(algorithmIdentifier, key).algorithm;
}
-function normalizeSign(algorithmIdentifier)
+function normalizeSign(algorithmIdentifier, key)
{
- return crypto.subtle.sign(algorithmIdentifier, hmacSha1Key).algorithm;
+ return crypto.subtle.sign(algorithmIdentifier, key).algorithm;
}
function runTests()
@@ -76,7 +77,7 @@ function runTests()
// 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 });
+ algorithm = normalizeEncrypt({ name: "aes-cbc", iv: originalIv }, aesCbcKey);
// Make sure it constructed the normalized result.
shouldBe("algorithm.name", "'AES-CBC'");
@@ -96,7 +97,7 @@ function runTests()
name: "AES-CBC",
iv: new Uint8Array([1, 2, 3])
};
- shouldThrow("normalizeEncrypt(rawAlgorithm)");
+ shouldThrow("normalizeEncrypt(rawAlgorithm, aesCbcKey)");
// -------------------------------
// Normalize a normalized algorithm (SHA-384)
@@ -109,12 +110,12 @@ function runTests()
// -------------------------------
// Normalize a normalized algorithm (AES-CBC, encrypt)
// -------------------------------
- algorithm = normalizeEncrypt({ name: "aEs-cbc", iv: originalIv });
+ 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);
+ algorithm = normalizeEncrypt(algorithm, aesCbcKey);
shouldBe("algorithm.name", "'AES-CBC'");
shouldBe("algorithm.iv.length", "16");
shouldBe("algorithm.iv[1]", "1");
@@ -122,22 +123,38 @@ function runTests()
// -------------------------------
// Unsupported operation on algorithm
// -------------------------------
- shouldThrow("normalizeEncrypt({ name: 'SHA-1' })");
+ shouldThrow("normalizeEncrypt({ name: 'SHA-1' }, aesCbcKey)");
shouldThrow("normalizeDigest({ name: 'AES-CBC', iv: originalIv })");
// -------------------------------
// Normalize HMAC
// -------------------------------
- shouldThrow("normalizeSign({name: 'hmac'})"); // Missing "hash"
- shouldThrow("normalizeSign({name: 'hmac', hash: 'foo'})"); // Not a valid "hash"
- shouldThrow("normalizeSign({name: 'hmac', hash: { name: 'AES-CBC', iv: originalIv }})"); // Not a valid "hash"
+ 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);
+ algorithm = normalizeSign(validHmacSha1, hmacSha1Key);
shouldBe("algorithm.name", "'HMAC'");
shouldBe("algorithm.hash.name", "'SHA-1'");
- shouldThrow("normalizeEncrypt(validHmacSha1)"); // Not defined for encrypt()
+ 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.
@@ -168,6 +185,17 @@ function importAesCbcKey(keyUsages)
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);
@@ -176,11 +204,12 @@ function failedKeyImport(value)
// 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()).then(function(keys)
+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();
« no previous file with comments | « no previous file | LayoutTests/crypto/normalize-algorithm-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698