Commit dc774031 authored by eroman@chromium.org's avatar eroman@chromium.org

[webcrypto] Remove support for AES 192-bit keys (1 of 2)

Removes uses of 192-bit AES keys from the LayoutTests. Since once the corresponding Chromium change lands they will no longer work.

BUG=381829

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

git-svn-id: svn://svn.chromium.org/blink/trunk@176066 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent c0fcf79e
......@@ -15,14 +15,6 @@ PASS tmpKey.type is "secret"
PASS typeof tmpKey.extractable is 'boolean'
PASS tmpKey.extractable is false
PASS tmpKey.algorithm.name is "AES-CBC"
PASS tmpKey.algorithm.length is 192
PASS tmpKey.usages.join(',') is "encrypt,decrypt"
PASS: Encryption should be [4f021db243bc633d7178183a9fa071e8b4d9ada9ad7dedf4e5e738763f69145a571b242012fb7ae07fa9baac3df102e0288c6f9ec554652e50ab55e121f099ae] and was
PASS: Decryption should be [6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff6] and was
PASS tmpKey.type is "secret"
PASS typeof tmpKey.extractable is 'boolean'
PASS tmpKey.extractable is false
PASS tmpKey.algorithm.name is "AES-CBC"
PASS tmpKey.algorithm.length is 256
PASS tmpKey.usages.join(',') is "encrypt,decrypt"
PASS: Encryption should be [f58c4c04d6e5f1ba779eabfb5f7bfbd69cfc4e967edb808d679f777bc6702c7d39f23369a9d9bacfa530e26304231461c9aaf02a6a54e9e242ccbf48c59daca6] and was
......
......@@ -35,18 +35,6 @@ var kAesCbcSuccessVectors = [
"8cb82807230e1321d3fae00d18cc2012"
},
// 192-bit key, where final block of plaintext has to pad by 15.
// Derived from [1] F.2.3 (CBC-AES192.Encrypt), by stripping 15 bytes off
// plaintext and adding padding block.
{
key: "8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b",
iv: "000102030405060708090a0b0c0d0e0f",
plainText: "6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff6",
cipherText: "4f021db243bc633d7178183a9fa071e8b4d9ada9ad7dedf4e5e738763f69145a571b242012fb7ae07fa9baac3df102e0" +
// Padding block.
"288c6f9ec554652e50ab55e121f099ae"
},
// 256-bit key, where final block of plaintext has to pad by 3.
// Derived from [1] F.2.6 CBC-AES256.Decrypt, by stripping 3 bytes off
// plaintext and adding padding block.
......
......@@ -8,11 +8,11 @@ Importing a key...
PASS key.type is 'secret'
PASS key.extractable is false
PASS key.algorithm.name is 'AES-CBC'
PASS key.algorithm.length is 192
PASS key.algorithm.length is 256
PASS key.usages is ["encrypt"]
Using the key to encrypt plaintext...
PASS bytesToHexString(new Uint8Array(encryptionResult)) is '4f021db243bc633d7178183a9fa071e8b4d9ada9ad7dedf4e5e738763f69145a571b242012fb7ae07fa9baac3df102e008b0e27988598881d920a9e64f5615cd612ccd79224b350935d45dd6a98f8176'
PASS bytesToHexString(new Uint8Array(encryptionResult)) is 'f58c4c04d6e5f1ba779eabfb5f7bfbd69cfc4e967edb808d679f777bc6702c7d39f23369a9d9bacfa530e26304231461c9aaf02a6a54e9e242ccbf48c59daca6'
PASS successfullyParsed is true
TEST COMPLETE
......
......@@ -16,14 +16,15 @@ jsTestIsAsync = true;
var extractable = true;
var iv = hexStringToUint8Array("000102030405060708090a0b0c0d0e0f");
var plaintext = hexStringToUint8Array("6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710");
var plaintext = hexStringToUint8Array("6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be6");
var cipherText = ""
var jwkKey = {
"kty": "oct",
"alg": "A192CBC",
"alg": "A256CBC",
"use": "enc",
"ext": true,
"k": "jnOw99oOZFLIEPMrgJB55WL46tJSLGt7"
"k": "YD3rEBXKcb4rc67whX13gR81LAc7YQjXLZgQowkU3_Q"
};
var jwkKeyAsArrayBuffer = asciiToUint8Array(JSON.stringify(jwkKey));
......@@ -35,14 +36,14 @@ crypto.subtle.importKey("jwk", jwkKeyAsArrayBuffer, {name: 'AES-CBC'}, false, ["
shouldBe("key.type", "'secret'");
shouldBe("key.extractable", "false");
shouldBe("key.algorithm.name", "'AES-CBC'");
shouldBe("key.algorithm.length", "192");
shouldBe("key.algorithm.length", "256");
shouldBe("key.usages", '["encrypt"]');
debug("\nUsing the key to encrypt plaintext...");
return crypto.subtle.encrypt({name: "aes-cbc", iv: iv}, key, plaintext);
}).then(function(result) {
encryptionResult = result;
shouldBe("bytesToHexString(new Uint8Array(encryptionResult))", "'4f021db243bc633d7178183a9fa071e8b4d9ada9ad7dedf4e5e738763f69145a571b242012fb7ae07fa9baac3df102e008b0e27988598881d920a9e64f5615cd612ccd79224b350935d45dd6a98f8176'");
shouldBe("bytesToHexString(new Uint8Array(encryptionResult))", "'f58c4c04d6e5f1ba779eabfb5f7bfbd69cfc4e967edb808d679f777bc6702c7d39f23369a9d9bacfa530e26304231461c9aaf02a6a54e9e242ccbf48c59daca6'");
finishJSTest();
}).then(finishJSTest, failAndFinishJSTest);
......
......@@ -17,11 +17,11 @@ error is: SyntaxError: Invalid keyFormat argument
error is: SyntaxError: Invalid keyFormat argument
Exporting the key as raw data...
PASS bytesToHexString(new Uint8Array(exportedData)) is '8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b'
PASS bytesToHexString(new Uint8Array(exportedData)) is '8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b8e73b0f7da0e6452'
Exporting the key as JWK...
PASS exportedJWK.kty is 'oct'
PASS exportedJWK.k is 'jnOw99oOZFLIEPMrgJB55WL46tJSLGt7'
PASS exportedJWK.alg is 'A192CBC'
PASS exportedJWK.k is 'jnOw99oOZFLIEPMrgJB55WL46tJSLGt7jnOw99oOZFI'
PASS exportedJWK.alg is 'A256CBC'
PASS exportedJWK.ext is true
PASS exportedJWK.use is undefined
PASS exportedJWK.key_ops is ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey']
......
......@@ -18,7 +18,7 @@ var nonExtractable = false;
var jwkKey = {
kty: "oct",
k: "jnOw99oOZFLIEPMrgJB55WL46tJSLGt7"
k: "jnOw99oOZFLIEPMrgJB55WL46tJSLGt7jnOw99oOZFI"
};
var jwkKeyAsArrayBuffer = asciiToUint8Array(JSON.stringify(jwkKey));
......@@ -65,15 +65,15 @@ Promise.resolve(null).then(function(result) {
return crypto.subtle.exportKey("raw", key);
}).then(function(result) {
exportedData = result;
shouldBe("bytesToHexString(new Uint8Array(exportedData))", "'8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b'");
shouldBe("bytesToHexString(new Uint8Array(exportedData))", "'8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b8e73b0f7da0e6452'");
debug("Exporting the key as JWK...");
return crypto.subtle.exportKey("jwk", key);
}).then(function(result) {
exportedJWK = JSON.parse(bytesToASCIIString(result));
shouldBe("exportedJWK.kty", "'oct'");
shouldBe("exportedJWK.k", "'jnOw99oOZFLIEPMrgJB55WL46tJSLGt7'");
shouldBe("exportedJWK.alg", "'A192CBC'");
shouldBe("exportedJWK.k", "'jnOw99oOZFLIEPMrgJB55WL46tJSLGt7jnOw99oOZFI'");
shouldBe("exportedJWK.alg", "'A256CBC'");
shouldBe("exportedJWK.ext", "true");
shouldBe("exportedJWK.use", "undefined");
shouldBe("exportedJWK.key_ops", "['encrypt', 'decrypt', 'wrapKey', 'unwrapKey']");
......
......@@ -29,8 +29,8 @@ PASS typeof tmpKey.extractable is 'boolean'
PASS tmpKey.extractable is false
PASS tmpKey.algorithm.name is "AES-GCM"
PASS tmpKey.usages.join(',') is "encrypt,decrypt"
PASS: Encryption should be [c4489fa64a6edf80e7e6a3b8855bc37c772ee7de0f91a981c36c93a35c88] and was
PASS: Decryption should be [d30b02c343487105219d6fa080acc743] and was
PASS: Encryption should be [fda718aa1ec163487e21afc34f5a3a34795a9ee71dd3e7ee9a18fdb24181dc982b29c6ec723294a130ca2234952bb0ef68c0f34795fbe0] and was
PASS: Decryption should be [69fd0c9da10b56ec6786333f8d76d4b74f8a434195f2f241f088b2520fb5fa29455df9893164fb1638abe6617915d9497a8fe2] and was
PASS successfullyParsed is true
TEST COMPLETE
......
......@@ -61,18 +61,18 @@ var kAesGcmSuccessVectors =
"authenticationTag": "ba82e49c55a22ed02ca67da4ec6f"
},
// [Keylen = 192]
// [IVlen = 96]
// [PTlen = 128]
// [AADlen = 384]
// [Taglen = 112]
// [Keylen = 256]
// [IVlen = 1024]
// [PTlen = 408]
// [AADlen = 720]
// [Taglen = 32]
{
"key": "ae7972c025d7f2ca3dd37dcc3d41c506671765087c6b61b8",
"iv": "984c1379e6ba961c828d792d",
"plainText": "d30b02c343487105219d6fa080acc743",
"cipherText": "c4489fa64a6edf80e7e6a3b8855bc37c",
"additionalData": "edd8f630f9bbc31b0acf122998f15589d6e6e3e1a3ec89e0c6a6ece751610ebbf57fdfb9d82028ff1d9faebe37a268c1",
"authenticationTag": "772ee7de0f91a981c36c93a35c88"
"key": "e03548984a7ec8eaf0870637df0ac6bc17f7159315d0ae26a764fd224e483810",
"iv": "f4feb26b846be4cd224dbc5133a5ae13814ebe19d3032acdd3a006463fdb71e83a9d5d96679f26cc1719dd6b4feb3bab5b4b7993d0c0681f36d105ad3002fb66b201538e2b7479838ab83402b0d816cd6e0fe5857e6f4adf92de8ee72b122ba1ac81795024943b7d0151bbf84ce87c8911f512c397d14112296da7ecdd0da52a",
"cipherText": "fda718aa1ec163487e21afc34f5a3a34795a9ee71dd3e7ee9a18fdb24181dc982b29c6ec723294a130ca2234952bb0ef68c0f3",
"additionalData": "aab26eb3e7acd09a034a9e2651636ab3868e51281590ecc948355e457da42b7ad1391c7be0d9e82895e506173a81857c3226829fbd6dfb3f9657a71a2934445d7c05fa9401cddd5109016ba32c3856afaadc48de80b8a01b57cb",
"authenticationTag": "4795fbe0",
"plainText": "69fd0c9da10b56ec6786333f8d76d4b74f8a434195f2f241f088b2520fb5fa29455df9893164fb1638abe6617915d9497a8fe2"
}
];
......
......@@ -13,13 +13,6 @@ PASS Generated unique key data of length: 128 bits
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is true
PASS generatedKey.algorithm.name is "AES-CBC"
PASS generatedKey.algorithm.length is 192
PASS generatedKey.usages.join(',') is ""
PASS keyData.byteLength is 24
PASS Generated unique key data of length: 192 bits
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is true
PASS generatedKey.algorithm.name is "AES-CBC"
PASS generatedKey.algorithm.length is 256
PASS generatedKey.usages.join(',') is ""
PASS keyData.byteLength is 32
......@@ -34,13 +27,6 @@ PASS Generated unique key data of length: 128 bits
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is true
PASS generatedKey.algorithm.name is "AES-CBC"
PASS generatedKey.algorithm.length is 192
PASS generatedKey.usages.join(',') is "encrypt"
PASS keyData.byteLength is 24
PASS Generated unique key data of length: 192 bits
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is true
PASS generatedKey.algorithm.name is "AES-CBC"
PASS generatedKey.algorithm.length is 256
PASS generatedKey.usages.join(',') is "encrypt"
PASS keyData.byteLength is 32
......@@ -55,13 +41,6 @@ PASS Generated unique key data of length: 128 bits
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is true
PASS generatedKey.algorithm.name is "AES-CBC"
PASS generatedKey.algorithm.length is 192
PASS generatedKey.usages.join(',') is "decrypt,wrapKey"
PASS keyData.byteLength is 24
PASS Generated unique key data of length: 192 bits
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is true
PASS generatedKey.algorithm.name is "AES-CBC"
PASS generatedKey.algorithm.length is 256
PASS generatedKey.usages.join(',') is "decrypt,wrapKey"
PASS keyData.byteLength is 32
......@@ -76,13 +55,6 @@ PASS Generated unique key data of length: 128 bits
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is true
PASS generatedKey.algorithm.name is "AES-CBC"
PASS generatedKey.algorithm.length is 192
PASS generatedKey.usages.join(',') is "encrypt,wrapKey,unwrapKey"
PASS keyData.byteLength is 24
PASS Generated unique key data of length: 192 bits
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is true
PASS generatedKey.algorithm.name is "AES-CBC"
PASS generatedKey.algorithm.length is 256
PASS generatedKey.usages.join(',') is "encrypt,wrapKey,unwrapKey"
PASS keyData.byteLength is 32
......@@ -95,11 +67,6 @@ PASS generatedKey.usages.join(',') is ""
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is false
PASS generatedKey.algorithm.name is "AES-CBC"
PASS generatedKey.algorithm.length is 192
PASS generatedKey.usages.join(',') is ""
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is false
PASS generatedKey.algorithm.name is "AES-CBC"
PASS generatedKey.algorithm.length is 256
PASS generatedKey.usages.join(',') is ""
PASS typeof generatedKey.extractable is 'boolean'
......@@ -110,11 +77,6 @@ PASS generatedKey.usages.join(',') is "encrypt"
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is false
PASS generatedKey.algorithm.name is "AES-CBC"
PASS generatedKey.algorithm.length is 192
PASS generatedKey.usages.join(',') is "encrypt"
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is false
PASS generatedKey.algorithm.name is "AES-CBC"
PASS generatedKey.algorithm.length is 256
PASS generatedKey.usages.join(',') is "encrypt"
PASS typeof generatedKey.extractable is 'boolean'
......@@ -125,11 +87,6 @@ PASS generatedKey.usages.join(',') is "decrypt,wrapKey"
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is false
PASS generatedKey.algorithm.name is "AES-CBC"
PASS generatedKey.algorithm.length is 192
PASS generatedKey.usages.join(',') is "decrypt,wrapKey"
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is false
PASS generatedKey.algorithm.name is "AES-CBC"
PASS generatedKey.algorithm.length is 256
PASS generatedKey.usages.join(',') is "decrypt,wrapKey"
PASS typeof generatedKey.extractable is 'boolean'
......@@ -140,11 +97,6 @@ PASS generatedKey.usages.join(',') is "encrypt,wrapKey,unwrapKey"
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is false
PASS generatedKey.algorithm.name is "AES-CBC"
PASS generatedKey.algorithm.length is 192
PASS generatedKey.usages.join(',') is "encrypt,wrapKey,unwrapKey"
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is false
PASS generatedKey.algorithm.name is "AES-CBC"
PASS generatedKey.algorithm.length is 256
PASS generatedKey.usages.join(',') is "encrypt,wrapKey,unwrapKey"
PASS typeof generatedKey.extractable is 'boolean'
......@@ -157,13 +109,6 @@ PASS Generated unique key data of length: 128 bits
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is true
PASS generatedKey.algorithm.name is "AES-GCM"
PASS generatedKey.algorithm.length is 192
PASS generatedKey.usages.join(',') is ""
PASS keyData.byteLength is 24
PASS Generated unique key data of length: 192 bits
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is true
PASS generatedKey.algorithm.name is "AES-GCM"
PASS generatedKey.algorithm.length is 256
PASS generatedKey.usages.join(',') is ""
PASS keyData.byteLength is 32
......@@ -178,13 +123,6 @@ PASS Generated unique key data of length: 128 bits
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is true
PASS generatedKey.algorithm.name is "AES-GCM"
PASS generatedKey.algorithm.length is 192
PASS generatedKey.usages.join(',') is "encrypt"
PASS keyData.byteLength is 24
PASS Generated unique key data of length: 192 bits
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is true
PASS generatedKey.algorithm.name is "AES-GCM"
PASS generatedKey.algorithm.length is 256
PASS generatedKey.usages.join(',') is "encrypt"
PASS keyData.byteLength is 32
......@@ -199,13 +137,6 @@ PASS Generated unique key data of length: 128 bits
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is true
PASS generatedKey.algorithm.name is "AES-GCM"
PASS generatedKey.algorithm.length is 192
PASS generatedKey.usages.join(',') is "decrypt,wrapKey"
PASS keyData.byteLength is 24
PASS Generated unique key data of length: 192 bits
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is true
PASS generatedKey.algorithm.name is "AES-GCM"
PASS generatedKey.algorithm.length is 256
PASS generatedKey.usages.join(',') is "decrypt,wrapKey"
PASS keyData.byteLength is 32
......@@ -220,13 +151,6 @@ PASS Generated unique key data of length: 128 bits
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is true
PASS generatedKey.algorithm.name is "AES-GCM"
PASS generatedKey.algorithm.length is 192
PASS generatedKey.usages.join(',') is "encrypt,wrapKey,unwrapKey"
PASS keyData.byteLength is 24
PASS Generated unique key data of length: 192 bits
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is true
PASS generatedKey.algorithm.name is "AES-GCM"
PASS generatedKey.algorithm.length is 256
PASS generatedKey.usages.join(',') is "encrypt,wrapKey,unwrapKey"
PASS keyData.byteLength is 32
......@@ -239,11 +163,6 @@ PASS generatedKey.usages.join(',') is ""
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is false
PASS generatedKey.algorithm.name is "AES-GCM"
PASS generatedKey.algorithm.length is 192
PASS generatedKey.usages.join(',') is ""
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is false
PASS generatedKey.algorithm.name is "AES-GCM"
PASS generatedKey.algorithm.length is 256
PASS generatedKey.usages.join(',') is ""
PASS typeof generatedKey.extractable is 'boolean'
......@@ -254,11 +173,6 @@ PASS generatedKey.usages.join(',') is "encrypt"
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is false
PASS generatedKey.algorithm.name is "AES-GCM"
PASS generatedKey.algorithm.length is 192
PASS generatedKey.usages.join(',') is "encrypt"
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is false
PASS generatedKey.algorithm.name is "AES-GCM"
PASS generatedKey.algorithm.length is 256
PASS generatedKey.usages.join(',') is "encrypt"
PASS typeof generatedKey.extractable is 'boolean'
......@@ -269,11 +183,6 @@ PASS generatedKey.usages.join(',') is "decrypt,wrapKey"
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is false
PASS generatedKey.algorithm.name is "AES-GCM"
PASS generatedKey.algorithm.length is 192
PASS generatedKey.usages.join(',') is "decrypt,wrapKey"
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is false
PASS generatedKey.algorithm.name is "AES-GCM"
PASS generatedKey.algorithm.length is 256
PASS generatedKey.usages.join(',') is "decrypt,wrapKey"
PASS typeof generatedKey.extractable is 'boolean'
......@@ -284,11 +193,6 @@ PASS generatedKey.usages.join(',') is "encrypt,wrapKey,unwrapKey"
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is false
PASS generatedKey.algorithm.name is "AES-GCM"
PASS generatedKey.algorithm.length is 192
PASS generatedKey.usages.join(',') is "encrypt,wrapKey,unwrapKey"
PASS typeof generatedKey.extractable is 'boolean'
PASS generatedKey.extractable is false
PASS generatedKey.algorithm.name is "AES-GCM"
PASS generatedKey.algorithm.length is 256
PASS generatedKey.usages.join(',') is "encrypt,wrapKey,unwrapKey"
PASS successfullyParsed is true
......
......@@ -13,7 +13,7 @@ description("Tests generating AES keys");
jsTestIsAsync = true;
// Tests the 48 permutations of keys generated by:
// Tests the 32 permutations of keys generated by:
// kPossibleAlgorithms x kPossibleExtractable x kPossibleKeyUsages x kPossibleKeyLengths
//
// For practical reasons these tests are not exhaustive.
......@@ -21,7 +21,7 @@ jsTestIsAsync = true;
var kPossibleAlgorithms = ['AES-CBC', 'AES-GCM'];
var kPossibleExtractable = [true, false];
var kPossibleKeyUsages = [[], ['encrypt'], ['decrypt', 'wrapKey'], ['encrypt', 'wrapKey', 'unwrapKey']];
var kPossibleKeyLengths = [128, 192, 256];
var kPossibleKeyLengths = [128, 256];
// Set of all key data generated so far.
var allKeyDataGenerated = {};
......
......@@ -4,46 +4,36 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
PASS: Wrapped key data should be [1fa68b0a8112b447aef34bd8fb5a7b829d3e862371d2cfe5] and was
PASS unwrappedKey.algorithm.name is "AES-CBC"
PASS unwrappedKey.algorithm.name is "HMAC"
PASS unwrappedKey.algorithm.hash.name is "SHA-1"
PASS unwrappedKey.algorithm.length is 128
PASS typeof unwrappedKey.extractable is 'boolean'
PASS unwrappedKey.extractable is true
PASS unwrappedKey.usages.join(',') is "decrypt"
PASS: Unwrapped key data should be [00112233445566778899aabbccddeeff] and was
PASS: Wrapped key data should be [96778b25ae6ca435f92b5b97c050aed2468ab8a17ad84e5d] and was
PASS unwrappedKey.algorithm.name is "AES-CBC"
PASS unwrappedKey.algorithm.length is 128
PASS typeof unwrappedKey.extractable is 'boolean'
PASS unwrappedKey.extractable is true
PASS unwrappedKey.usages.join(',') is "decrypt"
PASS unwrappedKey.usages.join(',') is "sign"
PASS: Unwrapped key data should be [00112233445566778899aabbccddeeff] and was
PASS: Wrapped key data should be [64e8c3f9ce0f5ba263e9777905818a2a93c8191e7d6e8ae7] and was
PASS unwrappedKey.algorithm.name is "AES-CBC"
PASS unwrappedKey.algorithm.name is "HMAC"
PASS unwrappedKey.algorithm.hash.name is "SHA-1"
PASS unwrappedKey.algorithm.length is 128
PASS typeof unwrappedKey.extractable is 'boolean'
PASS unwrappedKey.extractable is true
PASS unwrappedKey.usages.join(',') is "decrypt"
PASS unwrappedKey.usages.join(',') is "sign"
PASS: Unwrapped key data should be [00112233445566778899aabbccddeeff] and was
PASS: Wrapped key data should be [031d33264e15d33268f24ec260743edce1c6c7ddee725a936ba814915c6762d2] and was
PASS unwrappedKey.algorithm.name is "AES-CBC"
PASS unwrappedKey.algorithm.length is 192
PASS typeof unwrappedKey.extractable is 'boolean'
PASS unwrappedKey.extractable is true
PASS unwrappedKey.usages.join(',') is "decrypt"
PASS: Unwrapped key data should be [00112233445566778899aabbccddeeff0001020304050607] and was
PASS: Wrapped key data should be [a8f9bc1612c68b3ff6e6f4fbe30e71e4769c8b80a32cb8958cd5d17d6b254da1] and was
PASS unwrappedKey.algorithm.name is "AES-CBC"
PASS unwrappedKey.algorithm.name is "HMAC"
PASS unwrappedKey.algorithm.hash.name is "SHA-1"
PASS unwrappedKey.algorithm.length is 192
PASS typeof unwrappedKey.extractable is 'boolean'
PASS unwrappedKey.extractable is true
PASS unwrappedKey.usages.join(',') is "decrypt"
PASS unwrappedKey.usages.join(',') is "sign"
PASS: Unwrapped key data should be [00112233445566778899aabbccddeeff0001020304050607] and was
PASS: Wrapped key data should be [28c9f404c4b810f4cbccb35cfb87f8263f5786e2d80ed326cbc7f0e71a99f43bfb988b9b7a02dd21] and was
PASS unwrappedKey.algorithm.name is "AES-CBC"
PASS unwrappedKey.algorithm.name is "HMAC"
PASS unwrappedKey.algorithm.hash.name is "SHA-1"
PASS unwrappedKey.algorithm.length is 256
PASS typeof unwrappedKey.extractable is 'boolean'
PASS unwrappedKey.extractable is true
PASS unwrappedKey.usages.join(',') is "decrypt"
PASS unwrappedKey.usages.join(',') is "sign"
PASS: Unwrapped key data should be [00112233445566778899aabbccddeeff000102030405060708090a0b0c0d0e0f] and was
PASS successfullyParsed is true
......
......@@ -21,24 +21,12 @@ var kWrappingTestCases = [
"key": "00112233445566778899AABBCCDDEEFF",
"ciphertext": "1FA68B0A8112B447AEF34BD8FB5A7B829D3E862371D2CFE5"
},
// 4.2 Wrap 128 bits of Key Data with a 192-bit KEK
{
"wrappingKey": "000102030405060708090A0B0C0D0E0F1011121314151617",
"key": "00112233445566778899AABBCCDDEEFF",
"ciphertext": "96778B25AE6CA435F92B5B97C050AED2468AB8A17AD84E5D"
},
// 4.3 Wrap 128 bits of Key Data with a 256-bit KEK
{
"wrappingKey": "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F",
"key": "00112233445566778899AABBCCDDEEFF",
"ciphertext": "64E8C3F9CE0F5BA263E9777905818A2A93C8191E7D6E8AE7"
},
// 4.4 Wrap 192 bits of Key Data with a 192-bit KEK
{
"wrappingKey": "000102030405060708090A0B0C0D0E0F1011121314151617",
"key": "00112233445566778899AABBCCDDEEFF0001020304050607",
"ciphertext": "031D33264E15D33268F24EC260743EDCE1C6C7DDEE725A936BA814915C6762D2"
},
// 4.5 Wrap 192 bits of Key Data with a 256-bit KEK
{
"wrappingKey": "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F",
......@@ -70,9 +58,9 @@ function runTestCase(testCase)
wrappingKey = result;
// Import the key to be wrapped.
var importAlgorithm = {name: 'aes-cbc'};
var importAlgorithm = {name: 'HMAC', hash: {name: 'sha-1'}};
var keyData = hexStringToUint8Array(testCase.key);
var usages = ['encrypt', 'decrypt'];
var usages = ['sign', 'verify'];
var extractable = true;
return crypto.subtle.importKey('raw', keyData, importAlgorithm, extractable, usages);
......@@ -88,17 +76,18 @@ function runTestCase(testCase)
// Unwrap the key.
var wrappedKeyData = hexStringToUint8Array(testCase.ciphertext);
var unwrapAlgorithm = {name: 'aes-kw'};
var unwrappedKeyAlgorithm = {name: 'aes-cbc'};
var unwrappedKeyAlgorithm = {name: 'HMAC', hash: {name: 'sha-1'}};
var extractable = true;
var usages = ['decrypt'];
var usages = ['sign'];
return crypto.subtle.unwrapKey('raw', wrappedKeyData, wrappingKey, unwrapAlgorithm, unwrappedKeyAlgorithm, extractable, usages);
}).then(function(result) {
unwrappedKey = result;
shouldEvaluateAs("unwrappedKey.algorithm.name", "AES-CBC");
shouldEvaluateAs("unwrappedKey.algorithm.name", "HMAC");
shouldEvaluateAs("unwrappedKey.algorithm.hash.name", "SHA-1");
shouldEvaluateAs("unwrappedKey.algorithm.length", testCase.key.length * 4);
shouldEvaluateAs("unwrappedKey.extractable", true);
shouldEvaluateAs("unwrappedKey.usages.join(',')", "decrypt");
shouldEvaluateAs("unwrappedKey.usages.join(',')", "sign");
return crypto.subtle.exportKey('raw', unwrappedKey);
}).then(function(result) {
......
......@@ -13,19 +13,18 @@ description("Tests structured cloning of AES keys");
jsTestIsAsync = true;
// Tests the 48 permutations of keys generated by:
// Tests the 32 permutations of keys generated by:
// kPossibleAlgorithms x kPossibleExtractable x kPossibleKeyUsages x kPossibleKeyData
//
// For practical reasons these tests are not exhaustive.
var k128BitData = "30112233445566778899aabbccddeeff"
var k192BitData = "800102030405060708090a0b0c0d0e0f1011121314151617";
var k256BitData = "00112233445546778899aabbccddeeff000102030405060708090a0b0c0d0e0f";
var kPossibleAlgorithms = ['AES-CBC', 'AES-GCM'];
var kPossibleExtractable = [true, false];
var kPossibleKeyUsages = [[], ['encrypt'], ['decrypt', 'wrapKey'], ['encrypt', 'wrapKey', 'unwrapKey']];
var kPossibleKeyData = [k128BitData, k192BitData, k256BitData];
var kPossibleKeyData = [k128BitData, k256BitData];
function runTest(algorithmName, extractable, keyUsages, keyData)
{
......
......@@ -15,7 +15,7 @@ jsTestIsAsync = true;
var extractable = true;
var aesKeyAsArrayBuffer = Base64URL.parse("jnOw99oOZFLIEPMrgJB55WL46tJSLGt7");
var aesKeyAsArrayBuffer = Base64URL.parse("jnOw99oOZFLIEPMrgJB55Q");
var hmacKeyAsArrayBuffer = Base64URL.parse("ahjkn-_387fgnsibf23qsvahjkn-_387fgnsibf23qs");
function testWithAESCBC(usages, expectedKeyOps)
......
......@@ -16,10 +16,10 @@ jsTestIsAsync = true;
var extractable = true;
var aesKeyAsJSON = {
"alg": "A192CBC",
"alg": "A128CBC",
"ext": true,
"kty": "oct",
"k": "jnOw99oOZFLIEPMrgJB55WL46tJSLGt7"
"k": "jnOw99oOZFLIEPMrgJB55Q"
};
var hmacKeyAsJSON = {
......
......@@ -123,13 +123,13 @@ function testHmac()
function testAesGcm()
{
var testCase = {
"key": "ae7972c025d7f2ca3dd37dcc3d41c506671765087c6b61b8",
"iv": "984c1379e6ba961c828d792d",
"plainText": "d30b02c343487105219d6fa080acc743",
"cipherText": "c4489fa64a6edf80e7e6a3b8855bc37c",
"additionalData": "edd8f630f9bbc31b0acf122998f15589d6e6e3e1a3ec89e0c6a6ece751610ebbf57fdfb9d82028ff1d9faebe37a268c1",
"authenticationTag": "772ee7de0f91a981c36c93a35c88"
};
"key": "e03548984a7ec8eaf0870637df0ac6bc17f7159315d0ae26a764fd224e483810",
"iv": "f4feb26b846be4cd224dbc5133a5ae13814ebe19d3032acdd3a006463fdb71e83a9d5d96679f26cc1719dd6b4feb3bab5b4b7993d0c0681f36d105ad3002fb66b201538e2b7479838ab83402b0d816cd6e0fe5857e6f4adf92de8ee72b122ba1ac81795024943b7d0151bbf84ce87c8911f512c397d14112296da7ecdd0da52a",
"cipherText": "fda718aa1ec163487e21afc34f5a3a34795a9ee71dd3e7ee9a18fdb24181dc982b29c6ec723294a130ca2234952bb0ef68c0f3",
"additionalData": "aab26eb3e7acd09a034a9e2651636ab3868e51281590ecc948355e457da42b7ad1391c7be0d9e82895e506173a81857c3226829fbd6dfb3f9657a71a2934445d7c05fa9401cddd5109016ba32c3856afaadc48de80b8a01b57cb",
"authenticationTag": "4795fbe0",
"plainText": "69fd0c9da10b56ec6786333f8d76d4b74f8a434195f2f241f088b2520fb5fa29455df9893164fb1638abe6617915d9497a8fe2"
}
var key = null;
var keyData = hexStringToUint8Array(testCase.key);
......
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