| OLD | NEW |
| 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 /** | 5 /** |
| 6 * @fileoverview A multiple gnubby signer wraps the process of opening a number | 6 * @fileoverview A multiple gnubby signer wraps the process of opening a number |
| 7 * of gnubbies, signing each challenge in an array of challenges until a | 7 * of gnubbies, signing each challenge in an array of challenges until a |
| 8 * success condition is satisfied, and yielding each succeeding gnubby. | 8 * success condition is satisfied, and yielding each succeeding gnubby. |
| 9 * | 9 * |
| 10 */ | 10 */ |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 timeoutMillis, opt_logMsgUrl) { | 45 timeoutMillis, opt_logMsgUrl) { |
| 46 /** @private {boolean} */ | 46 /** @private {boolean} */ |
| 47 this.forEnroll_ = forEnroll; | 47 this.forEnroll_ = forEnroll; |
| 48 /** @private {function(boolean)} */ | 48 /** @private {function(boolean)} */ |
| 49 this.allCompleteCb_ = allCompleteCb; | 49 this.allCompleteCb_ = allCompleteCb; |
| 50 /** @private {function(MultipleSignerResult, boolean)} */ | 50 /** @private {function(MultipleSignerResult, boolean)} */ |
| 51 this.gnubbyCompleteCb_ = gnubbyCompleteCb; | 51 this.gnubbyCompleteCb_ = gnubbyCompleteCb; |
| 52 /** @private {string|undefined} */ | 52 /** @private {string|undefined} */ |
| 53 this.logMsgUrl_ = opt_logMsgUrl; | 53 this.logMsgUrl_ = opt_logMsgUrl; |
| 54 | 54 |
| 55 /** @private {Array.<SignHelperChallenge>} */ | 55 /** @private {Array<SignHelperChallenge>} */ |
| 56 this.challenges_ = []; | 56 this.challenges_ = []; |
| 57 /** @private {boolean} */ | 57 /** @private {boolean} */ |
| 58 this.challengesSet_ = false; | 58 this.challengesSet_ = false; |
| 59 /** @private {boolean} */ | 59 /** @private {boolean} */ |
| 60 this.complete_ = false; | 60 this.complete_ = false; |
| 61 /** @private {number} */ | 61 /** @private {number} */ |
| 62 this.numComplete_ = 0; | 62 this.numComplete_ = 0; |
| 63 /** @private {!Object.<string, GnubbyTracker>} */ | 63 /** @private {!Object<string, GnubbyTracker>} */ |
| 64 this.gnubbies_ = {}; | 64 this.gnubbies_ = {}; |
| 65 /** @private {Countdown} */ | 65 /** @private {Countdown} */ |
| 66 this.timer_ = DEVICE_FACTORY_REGISTRY.getCountdownFactory() | 66 this.timer_ = DEVICE_FACTORY_REGISTRY.getCountdownFactory() |
| 67 .createTimer(timeoutMillis); | 67 .createTimer(timeoutMillis); |
| 68 /** @private {Countdown} */ | 68 /** @private {Countdown} */ |
| 69 this.reenumerateTimer_ = DEVICE_FACTORY_REGISTRY.getCountdownFactory() | 69 this.reenumerateTimer_ = DEVICE_FACTORY_REGISTRY.getCountdownFactory() |
| 70 .createTimer(timeoutMillis); | 70 .createTimer(timeoutMillis); |
| 71 } | 71 } |
| 72 | 72 |
| 73 /** | 73 /** |
| (...skipping 15 matching lines...) Expand all Loading... |
| 89 } | 89 } |
| 90 this.reenumerateTimer_.clearTimeout(); | 90 this.reenumerateTimer_.clearTimeout(); |
| 91 this.timer_.clearTimeout(); | 91 this.timer_.clearTimeout(); |
| 92 if (this.reenumerateIntervalTimer_) { | 92 if (this.reenumerateIntervalTimer_) { |
| 93 this.reenumerateIntervalTimer_.clearTimeout(); | 93 this.reenumerateIntervalTimer_.clearTimeout(); |
| 94 } | 94 } |
| 95 }; | 95 }; |
| 96 | 96 |
| 97 /** | 97 /** |
| 98 * Begins signing the given challenges. | 98 * Begins signing the given challenges. |
| 99 * @param {Array.<SignHelperChallenge>} challenges The challenges to sign. | 99 * @param {Array<SignHelperChallenge>} challenges The challenges to sign. |
| 100 * @return {boolean} whether the challenges were successfully added. | 100 * @return {boolean} whether the challenges were successfully added. |
| 101 */ | 101 */ |
| 102 MultipleGnubbySigner.prototype.doSign = function(challenges) { | 102 MultipleGnubbySigner.prototype.doSign = function(challenges) { |
| 103 if (this.challengesSet_) { | 103 if (this.challengesSet_) { |
| 104 // Can't add new challenges once they're finalized. | 104 // Can't add new challenges once they're finalized. |
| 105 return false; | 105 return false; |
| 106 } | 106 } |
| 107 | 107 |
| 108 if (challenges) { | 108 if (challenges) { |
| 109 for (var i = 0; i < challenges.length; i++) { | 109 for (var i = 0; i < challenges.length; i++) { |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 * @private | 141 * @private |
| 142 */ | 142 */ |
| 143 MultipleGnubbySigner.prototype.enumerateGnubbies_ = function() { | 143 MultipleGnubbySigner.prototype.enumerateGnubbies_ = function() { |
| 144 DEVICE_FACTORY_REGISTRY.getGnubbyFactory().enumerate( | 144 DEVICE_FACTORY_REGISTRY.getGnubbyFactory().enumerate( |
| 145 this.enumerateCallback_.bind(this)); | 145 this.enumerateCallback_.bind(this)); |
| 146 }; | 146 }; |
| 147 | 147 |
| 148 /** | 148 /** |
| 149 * Called with the result of enumerating gnubbies. | 149 * Called with the result of enumerating gnubbies. |
| 150 * @param {number} rc The return code from enumerating. | 150 * @param {number} rc The return code from enumerating. |
| 151 * @param {Array.<GnubbyDeviceId>} ids The gnubbies enumerated. | 151 * @param {Array<GnubbyDeviceId>} ids The gnubbies enumerated. |
| 152 * @private | 152 * @private |
| 153 */ | 153 */ |
| 154 MultipleGnubbySigner.prototype.enumerateCallback_ = function(rc, ids) { | 154 MultipleGnubbySigner.prototype.enumerateCallback_ = function(rc, ids) { |
| 155 if (this.complete_) { | 155 if (this.complete_) { |
| 156 return; | 156 return; |
| 157 } | 157 } |
| 158 if (rc || !ids || !ids.length) { | 158 if (rc || !ids || !ids.length) { |
| 159 this.maybeReEnumerateGnubbies_(true); | 159 this.maybeReEnumerateGnubbies_(true); |
| 160 return; | 160 return; |
| 161 } | 161 } |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 'code': result.code, | 344 'code': result.code, |
| 345 'gnubby': result.gnubby, | 345 'gnubby': result.gnubby, |
| 346 'gnubbyId': tracker.signer.getDeviceId() | 346 'gnubbyId': tracker.signer.getDeviceId() |
| 347 }; | 347 }; |
| 348 if (result['challenge']) | 348 if (result['challenge']) |
| 349 signResult['challenge'] = result['challenge']; | 349 signResult['challenge'] = result['challenge']; |
| 350 if (result['info']) | 350 if (result['info']) |
| 351 signResult['info'] = result['info']; | 351 signResult['info'] = result['info']; |
| 352 this.gnubbyCompleteCb_(signResult, moreExpected); | 352 this.gnubbyCompleteCb_(signResult, moreExpected); |
| 353 }; | 353 }; |
| OLD | NEW |