Commit 6327f588 authored by pneubeck@chromium.org's avatar pneubeck@chromium.org

enterprise.platformKeys: Cleanup the API test.

Adds also a few additional checks.

BUG=385143

Review URL: https://codereview.chromium.org/336423004

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@278080 0039d316-1c4b-4281-b951-d872f2087c98
parent 3b9615bd
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
// Must be packed to ../enterprise_platform_keys.crx using the private key // Must be packed to ../enterprise_platform_keys.crx using the private key
// ../enterprise_platform_keys.pem . // ../enterprise_platform_keys.pem .
'use strict';
var assertEq = chrome.test.assertEq; var assertEq = chrome.test.assertEq;
var assertTrue = chrome.test.assertTrue; var assertTrue = chrome.test.assertTrue;
var assertThrows = chrome.test.assertThrows; var assertThrows = chrome.test.assertThrows;
...@@ -250,9 +252,9 @@ function beforeTests(callback) { ...@@ -250,9 +252,9 @@ function beforeTests(callback) {
getUserToken(function(userToken) { getUserToken(function(userToken) {
if (!userToken) if (!userToken)
chrome.test.fail('no user token'); fail('no user token');
if (userToken.id != 'user') if (userToken.id != 'user')
chrome.test.fail('token is not named "user".'); fail('token is not named "user".');
callback(userToken); callback(userToken);
}); });
...@@ -278,12 +280,19 @@ function runTests(userToken) { ...@@ -278,12 +280,19 @@ function runTests(userToken) {
name: "RSASSA-PKCS1-v1_5", name: "RSASSA-PKCS1-v1_5",
// RsaHashedKeyGenParams // RsaHashedKeyGenParams
modulusLength: 512, modulusLength: 512,
publicExponent: // Equivalent to 65537
new Uint8Array([0x01, 0x00, 0x01]), // Equivalent to 65537 publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
hash: { hash: {
name: "SHA-1", name: "SHA-1",
} }
}; };
// Ensure that this algorithm object is not modified, so that later
// comparisons really do the right thing.
Object.freeze(algorithm.hash);
Object.freeze(algorithm);
var signParams = {name: 'RSASSA-PKCS1-v1_5'};
// Some random data to sign. // Some random data to sign.
var data = new Uint8Array([0, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6]); var data = new Uint8Array([0, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6]);
var cachedKeyPair; var cachedKeyPair;
...@@ -296,18 +305,23 @@ function runTests(userToken) { ...@@ -296,18 +305,23 @@ function runTests(userToken) {
return userToken.subtleCrypto.exportKey('spki', return userToken.subtleCrypto.exportKey('spki',
keyPair.publicKey); keyPair.publicKey);
}), }),
function(error) { function(error) { fail("GenerateKey failed: " + error); })
assertTrue(false, "GenerateKey failed: " + error);
})
.then(callbackPass(function(publicKeySpki) { .then(callbackPass(function(publicKeySpki) {
// Ensure that the returned key pair has the expected format.
// 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; cachedSpki = publicKeySpki;
var signParams = {name: 'RSASSA-PKCS1-v1_5'};
return userToken.subtleCrypto.sign( return userToken.subtleCrypto.sign(
signParams, cachedKeyPair.privateKey, data); signParams, privateKey, data);
}), }),
function(error) { function(error) { fail("Export failed: " + error); })
assertTrue(false, "Export failed: " + error);
})
.then(callbackPass(function(signature) { .then(callbackPass(function(signature) {
var importParams = { var importParams = {
name: algorithm.name, name: algorithm.name,
...@@ -322,7 +336,7 @@ function runTests(userToken) { ...@@ -322,7 +336,7 @@ function runTests(userToken) {
return window.crypto.subtle.importKey( return window.crypto.subtle.importKey(
"spki", cachedSpki, importParams, false, ["verify"]); "spki", cachedSpki, importParams, false, ["verify"]);
}), }),
function(error) { assertTrue(false, "Sign failed: " + error); }) function(error) { fail("Sign failed: " + error); })
.then(callbackPass(function(webCryptoPublicKey) { .then(callbackPass(function(webCryptoPublicKey) {
assertTrue(!!webCryptoPublicKey); assertTrue(!!webCryptoPublicKey);
assertEq(algorithm.modulusLength, assertEq(algorithm.modulusLength,
...@@ -332,21 +346,17 @@ function runTests(userToken) { ...@@ -332,21 +346,17 @@ function runTests(userToken) {
return window.crypto.subtle.verify( return window.crypto.subtle.verify(
algorithm, webCryptoPublicKey, cachedSignature, data); algorithm, webCryptoPublicKey, cachedSignature, data);
}), }),
function(error) { function(error) { fail("Import failed: " + error); })
assertTrue(false, "Import failed: " + error);
})
.then(callbackPass(function(success) { .then(callbackPass(function(success) {
assertEq(true, success, "Signature invalid."); assertEq(true, success, "Signature invalid.");
// Try to sign data with the same key a second time, which // Try to sign data with the same key a second time, which
// must fail. // must fail.
return userToken.subtleCrypto.sign( return userToken.subtleCrypto.sign(
{}, cachedKeyPair.privateKey, data); signParams, cachedKeyPair.privateKey, data);
}), }),
function(error) { function(error) { fail("Verification failed: " + error); })
assertTrue(false, "Verification failed: " + error);
})
.then(function(signature) { .then(function(signature) {
assertTrue(false, "Second sign call was expected to fail."); fail("Second sign call was expected to fail.");
}, callbackPass(function(error) { }, callbackPass(function(error) {
assertTrue(error instanceof Error); assertTrue(error instanceof Error);
assertEq( assertEq(
...@@ -392,9 +402,7 @@ function runTests(userToken) { ...@@ -392,9 +402,7 @@ function runTests(userToken) {
} }
}; };
userToken.subtleCrypto.generateKey(algorithm, false, ['sign']).then( userToken.subtleCrypto.generateKey(algorithm, false, ['sign']).then(
function(keyPair) { function(keyPair) { fail('generateKey was expected to fail'); },
assertTrue(false, 'generateKey was expected to fail');
},
callbackPass(function(error) { callbackPass(function(error) {
assertTrue(error instanceof Error); assertTrue(error instanceof Error);
assertEq('A required parameter was missing or out-of-range', assertEq('A required parameter was missing or out-of-range',
...@@ -411,9 +419,7 @@ function runTests(userToken) { ...@@ -411,9 +419,7 @@ function runTests(userToken) {
publicExponent: new Uint8Array([0x01, 0x00, 0x01]), publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
}; };
userToken.subtleCrypto.generateKey(algorithm, false, ['sign']).then( userToken.subtleCrypto.generateKey(algorithm, false, ['sign']).then(
function(keyPair) { function(keyPair) { fail('generateKey was expected to fail'); },
assertTrue(false, 'generateKey was expected to fail');
},
callbackPass(function(error) { callbackPass(function(error) {
assertEq( assertEq(
new Error('Error: A required parameter was missing our out-of-range'), new Error('Error: A required parameter was missing our out-of-range'),
...@@ -431,9 +437,7 @@ function runTests(userToken) { ...@@ -431,9 +437,7 @@ function runTests(userToken) {
publicExponent: new Uint8Array([0x01, 0x01]), publicExponent: new Uint8Array([0x01, 0x01]),
}; };
userToken.subtleCrypto.generateKey(algorithm, false, ['sign']).then( userToken.subtleCrypto.generateKey(algorithm, false, ['sign']).then(
function(keyPair) { function(keyPair) { fail('generateKey was expected to fail'); },
assertTrue(false, 'generateKey was expected to fail');
},
callbackPass(function(error) { callbackPass(function(error) {
assertTrue(error instanceof Error); assertTrue(error instanceof Error);
assertEq('A required parameter was missing or out-of-range', assertEq('A required parameter was missing or out-of-range',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment