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

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

Issue 430563002: Enable system token in platformKeys api. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 6 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Must be packed to ../enterprise_platform_keys.crx using the private key 5 // Must be packed to ../enterprise_platform_keys.crx using the private key
6 // ../enterprise_platform_keys.pem . 6 // ../enterprise_platform_keys.pem .
7 7
8 'use strict'; 8 'use strict';
9 9
10 var assertEq = chrome.test.assertEq; 10 var assertEq = chrome.test.assertEq;
11 var assertTrue = chrome.test.assertTrue; 11 var assertTrue = chrome.test.assertTrue;
12 var assertThrows = chrome.test.assertThrows; 12 var assertThrows = chrome.test.assertThrows;
13 var fail = chrome.test.fail; 13 var fail = chrome.test.fail;
14 var succeed = chrome.test.succeed; 14 var succeed = chrome.test.succeed;
15 var callbackPass = chrome.test.callbackPass; 15 var callbackPass = chrome.test.callbackPass;
16 var callbackFail= chrome.test.callbackFail; 16 var callbackFail= chrome.test.callbackFail;
17 17
18 // openssl req -new -x509 -key privkey.pem \ 18 // openssl req -new -x509 -key privkey.pem \
19 // -outform der -out cert.der -days 36500 19 // -outform der -out cert.der -days 36500
20 // xxd -i cert.der 20 // xxd -i cert.der
21 // based on privateKeyPkcs8 21 // Based on privateKeyPkcs8User, which is stored in the user's token.
22 var cert1a = new Uint8Array([ 22 var cert1a = new Uint8Array([
23 0x30, 0x82, 0x01, 0xd5, 0x30, 0x82, 0x01, 0x7f, 0xa0, 0x03, 0x02, 0x01, 23 0x30, 0x82, 0x01, 0xd5, 0x30, 0x82, 0x01, 0x7f, 0xa0, 0x03, 0x02, 0x01,
24 0x02, 0x02, 0x09, 0x00, 0xd2, 0xcc, 0x76, 0xeb, 0x19, 0xb9, 0x3a, 0x33, 24 0x02, 0x02, 0x09, 0x00, 0xd2, 0xcc, 0x76, 0xeb, 0x19, 0xb9, 0x3a, 0x33,
25 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 25 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
26 0x05, 0x05, 0x00, 0x30, 0x45, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 26 0x05, 0x05, 0x00, 0x30, 0x45, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
27 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 27 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03,
28 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74, 28 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74,
29 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 29 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a,
30 0x0c, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57, 30 0x0c, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57,
31 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c, 31 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c,
(...skipping 23 matching lines...) Expand all
55 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 55 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a,
56 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x41, 56 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x41,
57 0x00, 0x37, 0x23, 0x2f, 0x81, 0x24, 0xfc, 0xec, 0x2d, 0x0b, 0xd1, 0xa0, 57 0x00, 0x37, 0x23, 0x2f, 0x81, 0x24, 0xfc, 0xec, 0x2d, 0x0b, 0xd1, 0xa0,
58 0x74, 0xdf, 0x2e, 0x34, 0x9a, 0x92, 0x33, 0xae, 0x75, 0xd6, 0x60, 0xfc, 58 0x74, 0xdf, 0x2e, 0x34, 0x9a, 0x92, 0x33, 0xae, 0x75, 0xd6, 0x60, 0xfc,
59 0x44, 0x1d, 0x65, 0x8c, 0xb7, 0xd9, 0x60, 0x3b, 0xc7, 0x20, 0x30, 0xdf, 59 0x44, 0x1d, 0x65, 0x8c, 0xb7, 0xd9, 0x60, 0x3b, 0xc7, 0x20, 0x30, 0xdf,
60 0x17, 0x07, 0xd1, 0x87, 0xda, 0x2b, 0x7f, 0x84, 0xf3, 0xfc, 0xb0, 0x31, 60 0x17, 0x07, 0xd1, 0x87, 0xda, 0x2b, 0x7f, 0x84, 0xf3, 0xfc, 0xb0, 0x31,
61 0x42, 0x08, 0x17, 0x96, 0xd2, 0x1b, 0xdc, 0x28, 0xae, 0xf8, 0xbd, 0xf9, 61 0x42, 0x08, 0x17, 0x96, 0xd2, 0x1b, 0xdc, 0x28, 0xae, 0xf8, 0xbd, 0xf9,
62 0x4e, 0x78, 0xc3, 0xe8, 0x80 62 0x4e, 0x78, 0xc3, 0xe8, 0x80
63 ]); 63 ]);
64 64
65 // based on privateKeyPkcs8, different from cert1a 65 // Based on privateKeyPkcs8User, different from cert1a.
66 var cert1b = new Uint8Array([ 66 var cert1b = new Uint8Array([
67 0x30, 0x82, 0x01, 0xd5, 0x30, 0x82, 0x01, 0x7f, 0xa0, 0x03, 0x02, 0x01, 67 0x30, 0x82, 0x01, 0xd5, 0x30, 0x82, 0x01, 0x7f, 0xa0, 0x03, 0x02, 0x01,
68 0x02, 0x02, 0x09, 0x00, 0xe7, 0x1e, 0x6e, 0xb0, 0x12, 0x87, 0xf5, 0x09, 68 0x02, 0x02, 0x09, 0x00, 0xe7, 0x1e, 0x6e, 0xb0, 0x12, 0x87, 0xf5, 0x09,
69 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 69 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
70 0x05, 0x05, 0x00, 0x30, 0x45, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 70 0x05, 0x05, 0x00, 0x30, 0x45, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
71 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 71 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03,
72 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74, 72 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74,
73 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 73 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a,
74 0x0c, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57, 74 0x0c, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57,
75 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c, 75 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c,
(...skipping 23 matching lines...) Expand all
99 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 99 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a,
100 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x41, 100 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x41,
101 0x00, 0x82, 0x95, 0xa7, 0x08, 0x6c, 0xbd, 0x49, 0xe6, 0x1e, 0xc1, 0xd9, 101 0x00, 0x82, 0x95, 0xa7, 0x08, 0x6c, 0xbd, 0x49, 0xe6, 0x1e, 0xc1, 0xd9,
102 0x58, 0x54, 0x11, 0x11, 0x84, 0x77, 0x1e, 0xad, 0xe9, 0x73, 0x69, 0x1c, 102 0x58, 0x54, 0x11, 0x11, 0x84, 0x77, 0x1e, 0xad, 0xe9, 0x73, 0x69, 0x1c,
103 0x5c, 0xaa, 0x26, 0x3e, 0x5f, 0x1d, 0x89, 0x20, 0xc3, 0x90, 0xa4, 0x67, 103 0x5c, 0xaa, 0x26, 0x3e, 0x5f, 0x1d, 0x89, 0x20, 0xc3, 0x90, 0xa4, 0x67,
104 0xfa, 0x26, 0x20, 0xd7, 0x1f, 0xae, 0x42, 0x89, 0x30, 0x61, 0x43, 0x8a, 104 0xfa, 0x26, 0x20, 0xd7, 0x1f, 0xae, 0x42, 0x89, 0x30, 0x61, 0x43, 0x8a,
105 0x8c, 0xbe, 0xd4, 0x32, 0xf7, 0x96, 0x71, 0x2a, 0xcd, 0xeb, 0x26, 0xf6, 105 0x8c, 0xbe, 0xd4, 0x32, 0xf7, 0x96, 0x71, 0x2a, 0xcd, 0xeb, 0x26, 0xf6,
106 0xdb, 0x54, 0x95, 0xca, 0x5a 106 0xdb, 0x54, 0x95, 0xca, 0x5a
107 ]); 107 ]);
108 108
109 // based on a private key different than privateKeyPkcs8 109 // Based on a private key different than privateKeyPkcs8User or
110 // privateKeyPkcs8System.
110 var cert2 = new Uint8Array([ 111 var cert2 = new Uint8Array([
111 0x30, 0x82, 0x01, 0xd5, 0x30, 0x82, 0x01, 0x7f, 0xa0, 0x03, 0x02, 0x01, 112 0x30, 0x82, 0x01, 0xd5, 0x30, 0x82, 0x01, 0x7f, 0xa0, 0x03, 0x02, 0x01,
112 0x02, 0x02, 0x09, 0x00, 0x9e, 0x11, 0x7e, 0xff, 0x43, 0x84, 0xd4, 0xe6, 113 0x02, 0x02, 0x09, 0x00, 0x9e, 0x11, 0x7e, 0xff, 0x43, 0x84, 0xd4, 0xe6,
113 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 114 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
114 0x05, 0x05, 0x00, 0x30, 0x45, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 115 0x05, 0x05, 0x00, 0x30, 0x45, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
115 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 116 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03,
116 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74, 117 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74,
117 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 118 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a,
118 0x0c, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57, 119 0x0c, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57,
119 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c, 120 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c,
(...skipping 23 matching lines...) Expand all
143 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 144 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a,
144 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x41, 145 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x41,
145 0x00, 0xa5, 0xe8, 0x9d, 0x3d, 0xc4, 0x1a, 0x6e, 0xd2, 0x92, 0x42, 0x37, 146 0x00, 0xa5, 0xe8, 0x9d, 0x3d, 0xc4, 0x1a, 0x6e, 0xd2, 0x92, 0x42, 0x37,
146 0xb9, 0x3a, 0xb3, 0x8e, 0x2f, 0x55, 0xb5, 0xf2, 0xe4, 0x6e, 0x39, 0x0d, 147 0xb9, 0x3a, 0xb3, 0x8e, 0x2f, 0x55, 0xb5, 0xf2, 0xe4, 0x6e, 0x39, 0x0d,
147 0xa8, 0xba, 0x10, 0x43, 0x57, 0xdd, 0x4e, 0x4e, 0x52, 0xc6, 0xbe, 0x07, 148 0xa8, 0xba, 0x10, 0x43, 0x57, 0xdd, 0x4e, 0x4e, 0x52, 0xc6, 0xbe, 0x07,
148 0xdb, 0x83, 0x05, 0x97, 0x97, 0xc1, 0x7b, 0xd5, 0x5c, 0x50, 0x64, 0x0f, 149 0xdb, 0x83, 0x05, 0x97, 0x97, 0xc1, 0x7b, 0xd5, 0x5c, 0x50, 0x64, 0x0f,
149 0x96, 0xff, 0x3d, 0x83, 0x37, 0x8f, 0x3a, 0x85, 0x08, 0x62, 0x5c, 0xb1, 150 0x96, 0xff, 0x3d, 0x83, 0x37, 0x8f, 0x3a, 0x85, 0x08, 0x62, 0x5c, 0xb1,
150 0x2f, 0x68, 0xb2, 0x4a, 0x4a 151 0x2f, 0x68, 0xb2, 0x4a, 0x4a
151 ]); 152 ]);
152 153
154 // Based on privateKeyPkcs8System, which is stored in the system token.
155 var certSystem = new Uint8Array([
156 0x30, 0x82, 0x01, 0xd5, 0x30, 0x82, 0x01, 0x7f, 0xa0, 0x03, 0x02, 0x01,
157 0x02, 0x02, 0x09, 0x00, 0xf4, 0x3d, 0x9f, 0xd2, 0x1e, 0xa4, 0xf5, 0x82,
158 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
159 0x05, 0x05, 0x00, 0x30, 0x45, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
160 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03,
161 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74,
162 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a,
163 0x0c, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57,
164 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c,
165 0x74, 0x64, 0x30, 0x20, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x37, 0x32, 0x38,
166 0x31, 0x33, 0x31, 0x36, 0x34, 0x35, 0x5a, 0x18, 0x0f, 0x32, 0x31, 0x31,
167 0x34, 0x30, 0x37, 0x30, 0x34, 0x31, 0x33, 0x31, 0x36, 0x34, 0x35, 0x5a,
168 0x30, 0x45, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
169 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08,
170 0x0c, 0x0a, 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74, 0x61, 0x74, 0x65,
171 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x18, 0x49,
172 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67,
173 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x30,
174 0x5c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
175 0x01, 0x01, 0x05, 0x00, 0x03, 0x4b, 0x00, 0x30, 0x48, 0x02, 0x41, 0x00,
176 0xe8, 0xb3, 0x04, 0xb1, 0xad, 0xef, 0x6b, 0xe5, 0xbe, 0xc9, 0x05, 0x75,
177 0x07, 0x41, 0xf5, 0x70, 0x50, 0xc2, 0xe8, 0xee, 0xeb, 0x09, 0x9d, 0x49,
178 0x64, 0x4c, 0x60, 0x61, 0x80, 0xbe, 0xc5, 0x41, 0xf3, 0x8c, 0x57, 0x90,
179 0x3a, 0x44, 0x62, 0x6d, 0x51, 0xb8, 0xbb, 0xc6, 0x9a, 0x16, 0xdf, 0xf9,
180 0xce, 0xe3, 0xb8, 0x8c, 0x2e, 0xa2, 0x16, 0xc8, 0xed, 0xc7, 0xf8, 0x4f,
181 0xbd, 0xd3, 0x6e, 0x63, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x50, 0x30,
182 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
183 0xcd, 0x97, 0x2d, 0xb2, 0xe2, 0xb8, 0x11, 0xea, 0xcf, 0x0b, 0xca, 0xad,
184 0x61, 0xf4, 0x2e, 0x49, 0x3e, 0xa0, 0x7e, 0xa7, 0x30, 0x1f, 0x06, 0x03,
185 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xcd, 0x97, 0x2d,
186 0xb2, 0xe2, 0xb8, 0x11, 0xea, 0xcf, 0x0b, 0xca, 0xad, 0x61, 0xf4, 0x2e,
187 0x49, 0x3e, 0xa0, 0x7e, 0xa7, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13,
188 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a,
189 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x41,
190 0x00, 0x8c, 0x05, 0x7e, 0xb1, 0xef, 0x5f, 0x7d, 0x80, 0x0c, 0x70, 0x9c,
191 0x99, 0x70, 0x97, 0x5f, 0x83, 0x89, 0xe3, 0x4e, 0x3c, 0x77, 0xed, 0xf3,
192 0x66, 0x2d, 0xd6, 0xa9, 0x46, 0x7d, 0xeb, 0x58, 0xbc, 0x50, 0xa7, 0xe6,
193 0xd7, 0x7d, 0xfc, 0xdd, 0x18, 0x20, 0x53, 0xfb, 0x11, 0x3d, 0xfc, 0x2f,
194 0xf3, 0x30, 0x60, 0x47, 0x2d, 0x8e, 0xd7, 0xbf, 0x0f, 0x0d, 0x47, 0x99,
195 0xcc, 0x6d, 0xab, 0xb6, 0xd6
196 ]);
197
153 /** 198 /**
154 * Runs an array of asynchronous functions [f1, f2, ...] of the form 199 * Runs an array of asynchronous functions [f1, f2, ...] of the form
155 * function(callback) {} 200 * function(callback) {}
156 * by chaining, i.e. f1(f2(...)). Additionally, each callback is wrapped with 201 * by chaining, i.e. f1(f2(...)). Additionally, each callback is wrapped with
157 * callbackPass. 202 * callbackPass.
158 */ 203 */
159 function runAsyncSequence(funcs) { 204 function runAsyncSequence(funcs) {
160 if (funcs.length == 0) 205 if (funcs.length == 0)
161 return; 206 return;
162 function go(i) { 207 function go(i) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 'Certs at index ' + i + ' differ'); 261 'Certs at index ' + i + ' differ');
217 } 262 }
218 } 263 }
219 if (callback) 264 if (callback)
220 callback(); 265 callback();
221 })); 266 }));
222 } 267 }
223 268
224 /** 269 /**
225 * Fetches all available tokens using platformKeys.getTokens and calls 270 * Fetches all available tokens using platformKeys.getTokens and calls
226 * |callback| with the user token if available or with undefined otherwise. 271 * |callback| with the user and system token if available or with undefined
272 * otherwise.
227 */ 273 */
228 function getUserToken(callback) { 274 function getTokens(callback) {
229 chrome.enterprise.platformKeys.getTokens(function(tokens) { 275 chrome.enterprise.platformKeys.getTokens(function(tokens) {
276 var userToken = null;
277 var systemToken = null;
230 for (var i = 0; i < tokens.length; i++) { 278 for (var i = 0; i < tokens.length; i++) {
231 if (tokens[i].id == 'user') { 279 if (tokens[i].id == 'user')
232 callback(tokens[i]); 280 userToken = tokens[i];
233 return; 281 else if (tokens[i].id == 'system')
234 } 282 systemToken = tokens[i];
235 } 283 }
236 callback(undefined); 284 callback(userToken, systemToken);
237 }); 285 });
238 } 286 }
239 287
240 /** 288 /**
241 * Runs preparations before the actual tests. Calls |callback| with |userToken|. 289 * Runs preparations before the actual tests. Calls |callback| with |userToken|.
242 */ 290 */
243 function beforeTests(callback) { 291 function beforeTests(callback) {
244 assertTrue(!!chrome.enterprise, "No enterprise namespace."); 292 assertTrue(!!chrome.enterprise, "No enterprise namespace.");
245 assertTrue(!!chrome.enterprise.platformKeys, "No platformKeys namespace."); 293 assertTrue(!!chrome.enterprise.platformKeys, "No platformKeys namespace.");
246 assertTrue(!!chrome.enterprise.platformKeys.getTokens, 294 assertTrue(!!chrome.enterprise.platformKeys.getTokens,
247 "No getTokens function."); 295 "No getTokens function.");
248 assertTrue(!!chrome.enterprise.platformKeys.importCertificate, 296 assertTrue(!!chrome.enterprise.platformKeys.importCertificate,
249 "No importCertificate function."); 297 "No importCertificate function.");
250 assertTrue(!!chrome.enterprise.platformKeys.removeCertificate, 298 assertTrue(!!chrome.enterprise.platformKeys.removeCertificate,
251 "No removeCertificate function."); 299 "No removeCertificate function.");
252 300
253 getUserToken(function(userToken) { 301 getTokens(function(userToken, systemToken) {
254 if (!userToken) 302 if (!userToken)
255 fail('no user token'); 303 fail('no user token');
256 if (userToken.id != 'user') 304 if (userToken.id != 'user')
257 fail('token is not named "user".'); 305 fail('user token is not named "user".');
258 306
259 callback(userToken); 307 if (!systemToken)
308 fail('no system token');
309 if (systemToken.id != 'system')
310 fail('system token is not named "system".');
311
312 callback(userToken, systemToken);
260 }); 313 });
261 } 314 }
262 315
263 function checkAlgorithmIsCopiedOnRead(key) { 316 function checkAlgorithmIsCopiedOnRead(key) {
264 var algorithm = key.algorithm; 317 var algorithm = key.algorithm;
265 var originalAlgorithm = { 318 var originalAlgorithm = {
266 name: algorithm.name, 319 name: algorithm.name,
267 modulusLength: algorithm.modulusLength, 320 modulusLength: algorithm.modulusLength,
268 publicExponent: algorithm.publicExponent, 321 publicExponent: algorithm.publicExponent,
269 hash: {name: algorithm.hash.name} 322 hash: {name: algorithm.hash.name}
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 return window.crypto.subtle.verify( 424 return window.crypto.subtle.verify(
372 algorithm, webCryptoPublicKey, cachedSignature, data); 425 algorithm, webCryptoPublicKey, cachedSignature, data);
373 }), 426 }),
374 function(error) { fail("Import failed: " + error); }) 427 function(error) { fail("Import failed: " + error); })
375 .then(callbackPass(function(success) { 428 .then(callbackPass(function(success) {
376 assertEq(true, success, "Signature invalid."); 429 assertEq(true, success, "Signature invalid.");
377 callback(cachedKeyPair); 430 callback(cachedKeyPair);
378 }), function(error) { fail("Verification failed: " + error); }); 431 }), function(error) { fail("Verification failed: " + error); });
379 } 432 }
380 433
381 function runTests(userToken) { 434 function runTests(userToken, systemToken) {
382 chrome.test.runTests([ 435 chrome.test.runTests([
383 function hasSubtleCryptoMethods() { 436 function hasSubtleCryptoMethods() {
384 assertTrue(!!userToken.subtleCrypto.generateKey, 437 assertTrue(!!userToken.subtleCrypto.generateKey,
385 "user token has no generateKey method"); 438 "user token has no generateKey method");
386 assertTrue(!!userToken.subtleCrypto.sign, 439 assertTrue(!!userToken.subtleCrypto.sign,
387 "user token has no sign method"); 440 "user token has no sign method");
388 assertTrue(!!userToken.subtleCrypto.exportKey, 441 assertTrue(!!userToken.subtleCrypto.exportKey,
389 "user token has no exportKey method"); 442 "user token has no exportKey method");
390 succeed(); 443 succeed();
391 }, 444 },
392 function initiallyNoCerts() { assertCertsStored(userToken, []); }, 445
446 function initiallyNoCerts() {
447 assertCertsStored(userToken, []);
448 assertCertsStored(systemToken, []);
449 },
393 450
394 // Generates a key and signs some data with it. Verifies the signature using 451 // Generates a key and signs some data with it. Verifies the signature using
395 // WebCrypto. Verifies also that a second sign operation fails. 452 // WebCrypto. Verifies also that a second sign operation fails.
396 function generateKeyAndSign() { 453 function generateKeyAndSign() {
397 var algorithm = { 454 var algorithm = {
398 name: "RSASSA-PKCS1-v1_5", 455 name: "RSASSA-PKCS1-v1_5",
399 // RsaHashedKeyGenParams 456 // RsaHashedKeyGenParams
400 modulusLength: 512, 457 modulusLength: 512,
401 // Equivalent to 65537 458 // Equivalent to 65537
402 publicExponent: new Uint8Array([0x01, 0x00, 0x01]), 459 publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 hash: { 495 hash: {
439 name: "SHA-512", 496 name: "SHA-512",
440 } 497 }
441 }; 498 };
442 499
443 // Some random data to sign. 500 // Some random data to sign.
444 var data = new Uint8Array([5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 0, 0, 254]); 501 var data = new Uint8Array([5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 0, 0, 254]);
445 generateKeyAndVerify(userToken, algorithm, data, callbackPass()); 502 generateKeyAndVerify(userToken, algorithm, data, callbackPass());
446 }, 503 },
447 504
448 // Imports and removes certificates for privateKeyPkcs8, which was imported 505 // Importing a cert should fail, if the private key is stored in another
449 // by on C++'s side. 506 // token.
450 // Note: After this test, privateKeyPkcs8 is not stored anymore! 507 // This uses the cert that refers to the privateKeyPkcs8, which was imported
451 function importAndRemoveCerts() { 508 // on C++'s side.
509 function importCertWithKeyInOtherToken() {
510 chrome.enterprise.platformKeys.importCertificate(
511 systemToken.id, cert1a.buffer, callbackFail('Key not found.'));
512 },
513
514 // Imports and removes certificates for privateKeyPkcs8User, which was
515 // imported on C++'s side.
516 // Note: After this test, privateKeyPkcs8User is not stored anymore!
517 function importAndRemoveCertsToUserToken() {
452 runAsyncSequence([ 518 runAsyncSequence([
453 chrome.enterprise.platformKeys.importCertificate.bind( 519 chrome.enterprise.platformKeys.importCertificate.bind(
454 null, userToken.id, cert1a.buffer), 520 null, userToken.id, cert1a.buffer),
455 assertCertsStored.bind(null, userToken, [cert1a]), 521 assertCertsStored.bind(null, userToken, [cert1a]),
456 // Importing the same cert again shouldn't change anything. 522 // Importing the same cert again shouldn't change anything.
457 chrome.enterprise.platformKeys.importCertificate.bind( 523 chrome.enterprise.platformKeys.importCertificate.bind(
458 null, userToken.id, cert1a.buffer), 524 null, userToken.id, cert1a.buffer),
459 assertCertsStored.bind(null, userToken, [cert1a]), 525 assertCertsStored.bind(null, userToken, [cert1a]),
460 // Importing another certificate should succeed. 526 // Importing another certificate should succeed.
461 chrome.enterprise.platformKeys.importCertificate.bind( 527 chrome.enterprise.platformKeys.importCertificate.bind(
462 null, userToken.id, cert1b.buffer), 528 null, userToken.id, cert1b.buffer),
463 assertCertsStored.bind(null, userToken, [cert1a, cert1b]), 529 assertCertsStored.bind(null, userToken, [cert1a, cert1b]),
530 // Shouldn't affect the system token.
531 assertCertsStored.bind(null, systemToken, []),
464 chrome.enterprise.platformKeys.removeCertificate.bind( 532 chrome.enterprise.platformKeys.removeCertificate.bind(
465 null, userToken.id, cert1a.buffer), 533 null, userToken.id, cert1a.buffer),
466 assertCertsStored.bind(null, userToken, [cert1b]), 534 assertCertsStored.bind(null, userToken, [cert1b]),
467 chrome.enterprise.platformKeys.removeCertificate.bind( 535 chrome.enterprise.platformKeys.removeCertificate.bind(
468 null, userToken.id, cert1b.buffer), 536 null, userToken.id, cert1b.buffer),
469 assertCertsStored.bind(null, userToken, []) 537 assertCertsStored.bind(null, userToken, [])
470 ]); 538 ]);
471 }, 539 },
472 540
541 // Imports and removes certificates for privateKeyPkcs8System, which was
542 // imported on C++'s side.
543 // Note: After this test, privateKeyPkcs8System is not stored anymore!
544 function importAndRemoveCertsToSystemToken() {
545 runAsyncSequence([
546 chrome.enterprise.platformKeys.importCertificate.bind(
547 null, systemToken.id, certSystem.buffer),
548 assertCertsStored.bind(null, systemToken, [certSystem]),
549 // Importing the same cert again shouldn't change anything.
550 chrome.enterprise.platformKeys.importCertificate.bind(
551 null, systemToken.id, certSystem.buffer),
552 assertCertsStored.bind(null, systemToken, [certSystem]),
553 // Shouldn't affect the user token.
554 assertCertsStored.bind(null, userToken, []),
555 chrome.enterprise.platformKeys.removeCertificate.bind(
556 null, systemToken.id, certSystem.buffer),
557 assertCertsStored.bind(null, systemToken, []),
558 ]);
559 },
560
473 // Call generate key with invalid algorithm parameter, missing 561 // Call generate key with invalid algorithm parameter, missing
474 // modulusLength. 562 // modulusLength.
475 function algorithmParameterMissingModulusLength() { 563 function algorithmParameterMissingModulusLength() {
476 var algorithm = { 564 var algorithm = {
477 name: "RSASSA-PKCS1-v1_5", 565 name: "RSASSA-PKCS1-v1_5",
478 // Equivalent to 65537 566 // Equivalent to 65537
479 publicExponent: new Uint8Array([0x01, 0x00, 0x01]), 567 publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
480 hash: { 568 hash: {
481 name: "SHA-1", 569 name: "SHA-1",
482 } 570 }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 }; 606 };
519 userToken.subtleCrypto.generateKey(algorithm, false, ['sign']).then( 607 userToken.subtleCrypto.generateKey(algorithm, false, ['sign']).then(
520 function(keyPair) { fail('generateKey was expected to fail'); }, 608 function(keyPair) { fail('generateKey was expected to fail'); },
521 callbackPass(function(error) { 609 callbackPass(function(error) {
522 assertTrue(error instanceof Error); 610 assertTrue(error instanceof Error);
523 assertEq('A required parameter was missing or out-of-range', 611 assertEq('A required parameter was missing or out-of-range',
524 error.message); 612 error.message);
525 })); 613 }));
526 }, 614 },
527 615
528 // Imports a certificate for which now private key was imported/generated 616 // Imports a certificate for which no private key was imported/generated
529 // before. 617 // before.
530 function missingPrivateKey() { 618 function missingPrivateKey() {
531 chrome.enterprise.platformKeys.importCertificate( 619 chrome.enterprise.platformKeys.importCertificate(
532 userToken.id, cert2.buffer, callbackFail('Key not found.')); 620 userToken.id, cert2.buffer, callbackFail('Key not found.'));
533 }, 621 },
622
534 function importInvalidCert() { 623 function importInvalidCert() {
535 var invalidCert = new ArrayBuffer(16); 624 var invalidCert = new ArrayBuffer(16);
536 chrome.enterprise.platformKeys.importCertificate( 625 chrome.enterprise.platformKeys.importCertificate(
537 userToken.id, 626 userToken.id,
538 invalidCert, 627 invalidCert,
539 callbackFail('Certificate is not a valid X.509 certificate.')); 628 callbackFail('Certificate is not a valid X.509 certificate.'));
540 }, 629 },
630
541 function removeUnknownCert() { 631 function removeUnknownCert() {
542 chrome.enterprise.platformKeys.removeCertificate( 632 chrome.enterprise.platformKeys.removeCertificate(
543 userToken.id, 633 userToken.id,
544 cert2.buffer, 634 cert2.buffer,
545 callbackFail('Certificate could not be found.')); 635 callbackFail('Certificate could not be found.'));
546 }, 636 },
637
547 function removeInvalidCert() { 638 function removeInvalidCert() {
548 var invalidCert = new ArrayBuffer(16); 639 var invalidCert = new ArrayBuffer(16);
549 chrome.enterprise.platformKeys.removeCertificate( 640 chrome.enterprise.platformKeys.removeCertificate(
550 userToken.id, 641 userToken.id,
551 invalidCert, 642 invalidCert,
552 callbackFail('Certificate is not a valid X.509 certificate.')); 643 callbackFail('Certificate is not a valid X.509 certificate.'));
553 }, 644 },
645
554 function getCertsInvalidToken() { 646 function getCertsInvalidToken() {
555 chrome.enterprise.platformKeys.getCertificates( 647 chrome.enterprise.platformKeys.getCertificates(
556 'invalid token id', callbackFail('The token is not valid.')); 648 'invalid token id', callbackFail('The token is not valid.'));
557 } 649 }
558 ]); 650 ]);
559 } 651 }
560 652
561 beforeTests(runTests); 653 beforeTests(runTests);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698