4 <script src="../resources/js-test.js"></script>
5 <script src="resources/common.js"></script>
6 <script src="resources/keys.js"></script>
9 <p id="description"></p>
10 <div id="console"></div>
13 description("Tests that an unextractable key cannot be exported.");
17 // FIXME: Should also test unextractable keys created from generateKey().
19 function importUnextractableAesKey()
21 var keyData = new Uint8Array(16);
22 var usages = ['encrypt'];
23 var extractable = false;
24 var algorithm = {name: 'aes-cbc'};
26 return crypto.subtle.importKey('raw', keyData, algorithm, extractable, usages);
29 function importUnextractableHmacKey()
31 var keyData = new Uint8Array(16);
32 var usages = ['sign'];
33 var extractable = false;
34 var algorithm = {name: 'HMAC', hash: {name: 'sha-1'}};
36 return crypto.subtle.importKey('raw', keyData, algorithm, extractable, usages);
39 function importUnextractableRsaPrivateKey()
41 var keyData = hexStringToUint8Array(kKeyData.rsa1.pkcs8);
42 var usages = ['encrypt'];
43 var extractable = false;
44 var algorithm = {name: 'RSAES-PKCS1-v1_5'};
46 return crypto.subtle.importKey('pkcs8', keyData, algorithm, extractable, usages);
49 importUnextractableAesKey().then(function(key) {
50 return crypto.subtle.exportKey('raw', key);
51 }).then(failAndFinishJSTest, function(result) {
54 return importUnextractableHmacKey();
55 }).then(function(key) {
56 return crypto.subtle.exportKey('raw', key);
57 }).then(failAndFinishJSTest, function(result) {
60 return importUnextractableRsaPrivateKey();
61 }).then(function(key) {
62 return crypto.subtle.exportKey('pkcs8', key);
63 }).then(failAndFinishJSTest, function(result) {
65 }).then(finishJSTest, failAndFinishJSTest);