| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium OS 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 /** | 5 /** |
| 6 * Namespace object for the client side code. | 6 * Namespace object for the client side code. |
| 7 */ | 7 */ |
| 8 var client = new Object(); | 8 var client = new Object(); |
| 9 | 9 |
| 10 /** | 10 /** |
| 11 * Port to contact the policy's callback server. | 11 * Port to contact the policy's callback server. |
| 12 */ | 12 */ |
| 13 client.policyCallbackPort = 5199; | 13 client.policyCallbackPort = 5199; |
| 14 | 14 |
| 15 client.cryptohome_init_pkcs11 = false; |
| 16 |
| 15 /** | 17 /** |
| 16 * Initialize the client. | 18 * Initialize the client. |
| 17 */ | 19 */ |
| 18 client.onLoad = | 20 client.onLoad = |
| 19 function onLoad() { | 21 function onLoad() { |
| 20 client.modalShade = document.getElementById('modal-shade'); | 22 client.modalShade = document.getElementById('modal-shade'); |
| 21 client.loadManifest(); | 23 client.loadManifest(); |
| 22 }; | 24 }; |
| 23 | 25 |
| 24 client.onManifestLoaded = | 26 client.onManifestLoaded = |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 'PKCS#11 services have not started, you may need to clear your ' + | 132 'PKCS#11 services have not started, you may need to clear your ' + |
| 131 'TPM to recover.', 'Error', | 133 'TPM to recover.', 'Error', |
| 132 { details: 'current state: ' + pkcs11.state + '\n' + | 134 { details: 'current state: ' + pkcs11.state + '\n' + |
| 133 pkcs11.log }); | 135 pkcs11.log }); |
| 134 } | 136 } |
| 135 } else { | 137 } else { |
| 136 $("#pkcs11-status"). | 138 $("#pkcs11-status"). |
| 137 text('Ready'). | 139 text('Ready'). |
| 138 attr('status', 'green'); | 140 attr('status', 'green'); |
| 139 | 141 |
| 142 // Use presence of isTokenReady to determine if |
| 143 // cryptohome_init_pkcs11 is true. |
| 144 // TODO(crosbug.com/14277): Remove this conditional and code |
| 145 // to recognize if TPM has been initialized (only check token). |
| 146 client.cryptohome_init_pkcs11 = 'isTokenReady' in pkcs11; |
| 147 |
| 140 if (retval.data.isLibcrosLoaded && !retval.data.tpm.isEnabled) { | 148 if (retval.data.isLibcrosLoaded && !retval.data.tpm.isEnabled) { |
| 141 if (!tpmError) { | 149 if (!tpmError) { |
| 142 client.showError("Your TPM is not enabled. Please enable " + | 150 client.showError("Your TPM is not enabled. Please enable " + |
| 143 "it in the BIOS."); | 151 "it in the BIOS."); |
| 144 $('#entd-message'). | 152 $('#entd-message'). |
| 145 text('Please reboot and enable your TPM.'). | 153 text('Please reboot and enable your TPM.'). |
| 146 attr('status', 'red'); | 154 attr('status', 'red'); |
| 147 tpmError = true; | 155 tpmError = true; |
| 148 } | 156 } |
| 149 } else if (retval.data.isLibcrosLoaded && !retval.data.tpm.isReady) { | 157 } else if (retval.data.isLibcrosLoaded && !retval.data.tpm.isReady) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 160 client.showError('Your TPM is not properly configured. Please ' + | 168 client.showError('Your TPM is not properly configured. Please ' + |
| 161 'clear your TPM and try again.', 'Error', | 169 'clear your TPM and try again.', 'Error', |
| 162 options); | 170 options); |
| 163 } | 171 } |
| 164 | 172 |
| 165 $('#entd-message'). | 173 $('#entd-message'). |
| 166 text('Waiting for TPM.'). | 174 text('Waiting for TPM.'). |
| 167 attr('status', 'red'); | 175 attr('status', 'red'); |
| 168 tpmError = true; | 176 tpmError = true; |
| 169 } | 177 } |
| 178 } else if (retval.data.isLibcrosLoaded && |
| 179 client.cryptohome_init_pkcs11 && |
| 180 !pkcs11.isTokenReady) { |
| 181 if (!tpmError) { |
| 182 client.showAlert('Please wait while your TPM Token is being ' + |
| 183 'created. This dialog should go away on its ' + |
| 184 'own when the process completes.', 'Alert', |
| 185 options); |
| 186 $('#entd-message'). |
| 187 text('Waiting for TPM Token.'). |
| 188 attr('status', 'red'); |
| 189 tpmError = true; |
| 190 } |
| 170 } else { | 191 } else { |
| 171 ready = true; | 192 ready = true; |
| 172 } | 193 } |
| 173 } | 194 } |
| 174 } else { | 195 } else { |
| 175 $("#entd-status"). | 196 $("#entd-status"). |
| 176 text('Waiting...'). | 197 text('Waiting...'). |
| 177 attr('status', 'red'); | 198 attr('status', 'red'); |
| 178 | 199 |
| 179 $("#pkcs11-status"). | 200 $("#pkcs11-status"). |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 345 client.invokePolicyCallback( | 366 client.invokePolicyCallback( |
| 346 'initiateCSR', { certificateId: cert.id, variables: variables }, | 367 'initiateCSR', { certificateId: cert.id, variables: variables }, |
| 347 onerror); | 368 onerror); |
| 348 } | 369 } |
| 349 | 370 |
| 350 /** | 371 /** |
| 351 * Initiate a token initialization. | 372 * Initiate a token initialization. |
| 352 * | 373 * |
| 353 * This causes the token initialization progress dialog to be shown, and manages | 374 * This causes the token initialization progress dialog to be shown, and manages |
| 354 * the asynchronous initialization of a token. | 375 * the asynchronous initialization of a token. |
| 376 * TODO(crosbug.com/14277): Remove token initialization UI. |
| 355 */ | 377 */ |
| 356 client.initToken = | 378 client.initToken = |
| 357 function initToken(token, force) { | 379 function initToken(token, force) { |
| 358 var slotId = token.slotId; | 380 var slotId = token.slotId; |
| 359 | 381 |
| 360 // Called for any kind of error from the enterprise daemon. | 382 // Called for any kind of error from the enterprise daemon. |
| 361 function onerror(retval) { | 383 function onerror(retval) { |
| 362 if (retval instanceof client.CallbackError) | 384 if (retval instanceof client.CallbackError) |
| 363 client.showError('There was an error initializing your token. ' + | 385 client.showError('There was an error initializing your token. ' + |
| 364 'If the problem persists, clear your TPM and try ' + | 386 'If the problem persists, clear your TPM and try ' + |
| (...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 915 */ | 937 */ |
| 916 client.renderToken = | 938 client.renderToken = |
| 917 function renderToken(token) { | 939 function renderToken(token) { |
| 918 var li = document.createElement('li'); | 940 var li = document.createElement('li'); |
| 919 li.className = 'token'; | 941 li.className = 'token'; |
| 920 li.setAttribute('id', 'token-' + token.slotId); | 942 li.setAttribute('id', 'token-' + token.slotId); |
| 921 | 943 |
| 922 $(li).html( | 944 $(li).html( |
| 923 '<table width="100%">' + | 945 '<table width="100%">' + |
| 924 '<tr><td><span class="desc"></span> (<span class="label"></span>)</td>' + | 946 '<tr><td><span class="desc"></span> (<span class="label"></span>)</td>' + |
| 925 '<td rowspan="2" width="1%"><button>Initialize</button></td></tr>' + | 947 '<td rowspan="2" width="1%"><button class="init-button">Initialize' + |
| 926 '<tr><td class="status"></td></tr></table>'); | 948 '</button></td></tr><tr><td class="status"></td></tr></table>'); |
| 927 | 949 |
| 928 $(li).find('button').click(function () { | 950 $(li).find('button').click(function () { |
| 929 client.onTokenClick_(client.tokens[token.slotId]); | 951 client.onTokenClick_(client.tokens[token.slotId]); |
| 930 }); | 952 }); |
| 931 | 953 |
| 932 $(li).find('.status').click(function () { | 954 $(li).find('.status').click(function () { |
| 933 client.showTokenDetails(client.tokens[token.slotId]); | 955 client.showTokenDetails(client.tokens[token.slotId]); |
| 934 }); | 956 }); |
| 935 | 957 |
| 936 client.refreshToken(li, token); | 958 client.refreshToken(li, token); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 958 status = 'PINs not initialized.'; | 980 status = 'PINs not initialized.'; |
| 959 } else { | 981 } else { |
| 960 color = 'red'; | 982 color = 'red'; |
| 961 status = 'Token error'; | 983 status = 'Token error'; |
| 962 } | 984 } |
| 963 | 985 |
| 964 $('.desc', li).text(token.manufacturerID + ', ' + token.model); | 986 $('.desc', li).text(token.manufacturerID + ', ' + token.model); |
| 965 $('.label', li).text(token.label || 'Unlabeled'); | 987 $('.label', li).text(token.label || 'Unlabeled'); |
| 966 $('.status', li).attr('status', color); | 988 $('.status', li).attr('status', color); |
| 967 $('.status', li).text(status); | 989 $('.status', li).text(status); |
| 968 $('button', li).text(color == 'red' ? 'Initialize' : 'Reinitialize'); | 990 if (client.cryptohome_init_pkcs11) { |
| 991 // If automatic initialization is enabled, do not give the user |
| 992 // the option to initialize. |
| 993 $('.init-button', li).css('display', 'none'); |
| 994 } else { |
| 995 $('button', li).text(color == 'red' ? 'Initialize' : 'Reinitialize'); |
| 996 } |
| 969 } | 997 } |
| 970 | 998 |
| 971 /** | 999 /** |
| 972 * Create the UI for a list of certificates. | 1000 * Create the UI for a list of certificates. |
| 973 * | 1001 * |
| 974 * This will destroy any existing cert UI before proceeding. | 1002 * This will destroy any existing cert UI before proceeding. |
| 975 * | 1003 * |
| 976 * @param {Array} certs The list of known certificates. | 1004 * @param {Array} certs The list of known certificates. |
| 977 */ | 1005 */ |
| 978 client.resetCertificates = | 1006 client.resetCertificates = |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1177 * @param {string} name The name of the callback that returned this data. | 1205 * @param {string} name The name of the callback that returned this data. |
| 1178 * @param {Object} arg The argument object originally passed to the callback. | 1206 * @param {Object} arg The argument object originally passed to the callback. |
| 1179 * @param {Object} data The data returned by the callback. | 1207 * @param {Object} data The data returned by the callback. |
| 1180 */ | 1208 */ |
| 1181 client.CallbackError = | 1209 client.CallbackError = |
| 1182 function CallbackError(name, arg, data) { | 1210 function CallbackError(name, arg, data) { |
| 1183 this.init_(name, arg, data); | 1211 this.init_(name, arg, data); |
| 1184 }; | 1212 }; |
| 1185 | 1213 |
| 1186 client.CallbackError.prototype.init_ = client.CallbackSuccess.prototype.init_; | 1214 client.CallbackError.prototype.init_ = client.CallbackSuccess.prototype.init_; |
| OLD | NEW |