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

Unified Diff: chrome/test/data/extensions/api_test/enterprise_platform_keys/basic.js

Issue 332233002: enterprise.platformKeys: Copy-on-read the 'algorithm' member of Key objects. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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: chrome/test/data/extensions/api_test/enterprise_platform_keys/basic.js
diff --git a/chrome/test/data/extensions/api_test/enterprise_platform_keys/basic.js b/chrome/test/data/extensions/api_test/enterprise_platform_keys/basic.js
index b095e9eecf2be211bf1c5ba8053b0952aa78312c..b04c58b40e57f97af1b18cb2e94b803d7181e29f 100644
--- a/chrome/test/data/extensions/api_test/enterprise_platform_keys/basic.js
+++ b/chrome/test/data/extensions/api_test/enterprise_platform_keys/basic.js
@@ -5,6 +5,8 @@
// Must be packed to ../enterprise_platform_keys.crx using the private key
// ../enterprise_platform_keys.pem .
+'use strict';
+
var assertEq = chrome.test.assertEq;
var assertTrue = chrome.test.assertTrue;
var assertThrows = chrome.test.assertThrows;
@@ -250,14 +252,45 @@ function beforeTests(callback) {
getUserToken(function(userToken) {
if (!userToken)
- chrome.test.fail('no user token');
+ fail('no user token');
if (userToken.id != 'user')
- chrome.test.fail('token is not named "user".');
+ fail('token is not named "user".');
callback(userToken);
});
}
+function checkKeyPairCommonFormat(keyPair) {
+ function checkReadOnly(object, key) {
+ var original = object[key];
+ try {
+ object[key] = {};
+ fail('Expected that the property is read only and an exception to ' +
+ 'be thrown');
+ } catch (error) {
+ assertTrue(object[key] === original);
+ }
+ }
+
+ checkReadOnly(keyPair, 'privateKey');
+ var privateKey = keyPair.privateKey;
+ assertEq('private', privateKey.type);
+ assertEq(false, privateKey.extractable);
+ checkReadOnly(privateKey, 'algorithm');
+ checkReadOnly(privateKey.algorithm, 'hash');
+ checkReadOnly(privateKey.algorithm, 'modulusLength');
+ checkReadOnly(privateKey.algorithm, 'name');
+
+ checkReadOnly(keyPair, 'publicKey');
+ var publicKey = keyPair.publicKey;
+ assertEq('public', publicKey.type);
+ assertEq(true, publicKey.extractable);
+ checkReadOnly(publicKey, 'algorithm');
+ checkReadOnly(publicKey.algorithm, 'hash');
+ checkReadOnly(publicKey.algorithm, 'modulusLength');
+ checkReadOnly(publicKey.algorithm, 'name');
+}
+
function runTests(userToken) {
chrome.test.runTests([
function hasSubtleCryptoMethods() {
@@ -278,8 +311,8 @@ function runTests(userToken) {
name: "RSASSA-PKCS1-v1_5",
// RsaHashedKeyGenParams
modulusLength: 512,
- publicExponent:
- new Uint8Array([0x01, 0x00, 0x01]), // Equivalent to 65537
+ // Equivalent to 65537
+ publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
hash: {
name: "SHA-1",
}
@@ -296,18 +329,27 @@ function runTests(userToken) {
return userToken.subtleCrypto.exportKey('spki',
keyPair.publicKey);
}),
- function(error) {
- assertTrue(false, "GenerateKey failed: " + error);
- })
+ function(error) { fail("GenerateKey failed: " + error); })
.then(callbackPass(function(publicKeySpki) {
+ // Ensure that the returned key pair has the expected format.
+ // Some parameter independent checks:
+ checkKeyPairCommonFormat(cachedKeyPair);
+
+ // Checks depending on the generateKey arguments:
+ var privateKey = cachedKeyPair.privateKey;
+ assertEq(['sign'], privateKey.usages);
+ assertEq(algorithm, privateKey.algorithm);
+
+ var publicKey = cachedKeyPair.publicKey;
+ assertEq([], publicKey.usages);
+ assertEq(algorithm, publicKey.algorithm);
+
cachedSpki = publicKeySpki;
var signParams = {name: 'RSASSA-PKCS1-v1_5'};
return userToken.subtleCrypto.sign(
- signParams, cachedKeyPair.privateKey, data);
+ signParams, privateKey, data);
}),
- function(error) {
- assertTrue(false, "Export failed: " + error);
- })
+ function(error) { fail("Export failed: " + error); })
.then(callbackPass(function(signature) {
var importParams = {
name: algorithm.name,
@@ -322,7 +364,7 @@ function runTests(userToken) {
return window.crypto.subtle.importKey(
"spki", cachedSpki, importParams, false, ["verify"]);
}),
- function(error) { assertTrue(false, "Sign failed: " + error); })
+ function(error) { fail("Sign failed: " + error); })
.then(callbackPass(function(webCryptoPublicKey) {
assertTrue(!!webCryptoPublicKey);
assertEq(algorithm.modulusLength,
@@ -332,15 +374,11 @@ function runTests(userToken) {
return window.crypto.subtle.verify(
algorithm, webCryptoPublicKey, cachedSignature, data);
}),
- function(error) {
- assertTrue(false, "Import failed: " + error);
- })
+ function(error) { fail("Import failed: " + error); })
.then(callbackPass(function(success) {
assertEq(true, success, "Signature invalid.");
}),
- function(error) {
- assertTrue(false, "Verification failed: " + error);
- });
+ function(error) { fail("Verification failed: " + error); });
},
// Imports and removes certificates for privateKeyPkcs8, which was imported
@@ -380,9 +418,7 @@ function runTests(userToken) {
}
};
userToken.subtleCrypto.generateKey(algorithm, false, ['sign']).then(
- function(keyPair) {
- assertTrue(false, 'generateKey was expected to fail');
- },
+ function(keyPair) { fail('generateKey was expected to fail'); },
callbackPass(function(error) {
assertTrue(error instanceof Error);
assertEq('A required parameter was missing or out-of-range',
@@ -399,9 +435,7 @@ function runTests(userToken) {
publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
};
userToken.subtleCrypto.generateKey(algorithm, false, ['sign']).then(
- function(keyPair) {
- assertTrue(false, 'generateKey was expected to fail');
- },
+ function(keyPair) { fail('generateKey was expected to fail'); },
callbackPass(function(error) {
assertEq(
new Error('Error: A required parameter was missing our out-of-range'),
@@ -419,9 +453,7 @@ function runTests(userToken) {
publicExponent: new Uint8Array([0x01, 0x01]),
};
userToken.subtleCrypto.generateKey(algorithm, false, ['sign']).then(
- function(keyPair) {
- assertTrue(false, 'generateKey was expected to fail');
- },
+ function(keyPair) { fail('generateKey was expected to fail'); },
callbackPass(function(error) {
assertTrue(error instanceof Error);
assertEq('A required parameter was missing or out-of-range',

Powered by Google App Engine
This is Rietveld 408576698