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 Provides a client view of a gnubby, aka USB security key. | 6 * @fileoverview Provides a client view of a gnubby, aka USB security key. |
7 */ | 7 */ |
8 'use strict'; | 8 'use strict'; |
9 | 9 |
10 /** | 10 /** |
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
516 (f.length == 7 || /* fw pre-0.2.1 bug: does not echo sentinel */ | 516 (f.length == 7 || /* fw pre-0.2.1 bug: does not echo sentinel */ |
517 f[7] == self.synccnt)); | 517 f[7] == self.synccnt)); |
518 } | 518 } |
519 | 519 |
520 function syncCompletionAction(rc, opt_frame) { | 520 function syncCompletionAction(rc, opt_frame) { |
521 if (rc) console.warn(UTIL_fmt('sync failed: ' + rc)); | 521 if (rc) console.warn(UTIL_fmt('sync failed: ' + rc)); |
522 returnValue(rc); | 522 returnValue(rc); |
523 } | 523 } |
524 | 524 |
525 function sendInitSentinel() { | 525 function sendInitSentinel() { |
526 var cid = Gnubby.BROADCAST_CID; | 526 var cid = self.cid; |
| 527 if (cid == Gnubby.defaultChannelId_(self.gnubbyInstance, self.which)) { |
| 528 cid = Gnubby.BROADCAST_CID; |
| 529 } |
527 var cmd = GnubbyDevice.CMD_INIT; | 530 var cmd = GnubbyDevice.CMD_INIT; |
528 self.dev.queueCommand(cid, cmd, nonce); | 531 self.dev.queueCommand(cid, cmd, nonce); |
529 } | 532 } |
530 | 533 |
531 function initSentinelEquals(f) { | 534 function initSentinelEquals(f) { |
532 return (f[4] == GnubbyDevice.CMD_INIT && | 535 return (f[4] == GnubbyDevice.CMD_INIT && |
533 f.length >= nonce.length + 7 && | 536 f.length >= nonce.length + 7 && |
534 UTIL_equalArrays(f.subarray(7, nonce.length + 7), nonce)); | 537 UTIL_equalArrays(f.subarray(7, nonce.length + 7), nonce)); |
535 } | 538 } |
536 | 539 |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
621 sentinelEquals = initSentinelEquals; | 624 sentinelEquals = initSentinelEquals; |
622 completionAction = initCompletionAction; | 625 completionAction = initCompletionAction; |
623 } | 626 } |
624 | 627 |
625 function setSync() { | 628 function setSync() { |
626 sendSentinel = sendSyncSentinel; | 629 sendSentinel = sendSyncSentinel; |
627 sentinelEquals = syncSentinelEquals; | 630 sentinelEquals = syncSentinelEquals; |
628 completionAction = syncCompletionAction; | 631 completionAction = syncCompletionAction; |
629 } | 632 } |
630 | 633 |
631 if (Gnubby.gnubbies_.isSharedAccess(this.which) && | 634 if (Gnubby.gnubbies_.isSharedAccess(this.which)) { |
632 this.cid == Gnubby.defaultChannelId_(this.gnubbyInstance, this.which)) { | |
633 setInit(); | 635 setInit(); |
634 } else { | 636 } else { |
635 setSync(); | 637 setSync(); |
636 } | 638 } |
637 timeoutLoop(); | 639 timeoutLoop(); |
638 }; | 640 }; |
639 | 641 |
640 /** Short timeout value in seconds */ | 642 /** Short timeout value in seconds */ |
641 Gnubby.SHORT_TIMEOUT = 1; | 643 Gnubby.SHORT_TIMEOUT = 1; |
642 /** Normal timeout value in seconds */ | 644 /** Normal timeout value in seconds */ |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
784 } | 786 } |
785 } | 787 } |
786 // Warn on errors other than waiting for touch, wrong data, and | 788 // Warn on errors other than waiting for touch, wrong data, and |
787 // unrecognized command. | 789 // unrecognized command. |
788 if (rc != 0x6985 && rc != 0x6a80 && rc != 0x6d00) { | 790 if (rc != 0x6985 && rc != 0x6a80 && rc != 0x6d00) { |
789 console.warn(UTIL_fmt('apduReply_ fail: ' + rc.toString(16))); | 791 console.warn(UTIL_fmt('apduReply_ fail: ' + rc.toString(16))); |
790 } | 792 } |
791 cb(rc); | 793 cb(rc); |
792 }); | 794 }); |
793 }; | 795 }; |
OLD | NEW |