| 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',
|
|
|