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

Unified Diff: chrome/browser/resources/cryptotoken/signer.js

Issue 596083002: Update cryptotoken to 0.8.63 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove a deprecated line Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/cryptotoken/signer.js
diff --git a/chrome/browser/resources/cryptotoken/signer.js b/chrome/browser/resources/cryptotoken/signer.js
index d0a14c1ffe01f2aeead90ba0ea6accfaca50ec25..77fe39082394c57dfe48b14af55d7ec6343e6234 100644
--- a/chrome/browser/resources/cryptotoken/signer.js
+++ b/chrome/browser/resources/cryptotoken/signer.js
@@ -144,9 +144,20 @@ function validateAndEnqueueSignRequest(sender, request,
}
var signChallenges = request[signChallengesName];
- // A valid sign data has at least one challenge, so get the first appId from
- // the first challenge.
- var firstAppId = signChallenges[0]['appId'];
+ var appId;
+ if (request['appId']) {
+ appId = request['appId'];
+ } else {
+ // A valid sign data has at least one challenge, so get the appId from
+ // the first challenge.
+ appId = signChallenges[0]['appId'];
+ }
+ // Sanity check
+ if (!appId) {
+ console.warn(UTIL_fmt('empty sign appId?'));
+ errorCb(ErrorCodes.BAD_REQUEST);
+ return null;
+ }
var timer = createTimerForRequest(
FACTORY_REGISTRY.getCountdownFactory(), request);
var logMsgUrl = request['logMsgUrl'];
@@ -154,9 +165,9 @@ function validateAndEnqueueSignRequest(sender, request,
// Queue sign requests from the same origin, to protect against simultaneous
// sign-out on many tabs resulting in repeated sign-in requests.
var queuedSignRequest = new QueuedSignRequest(signChallenges,
- timer, nonNullOrigin, errorCb, successCb, sender.tlsChannelId,
+ timer, nonNullOrigin, errorCb, successCb, appId, sender.tlsChannelId,
logMsgUrl);
- var requestToken = signRequestQueue.queueRequest(firstAppId, nonNullOrigin,
+ var requestToken = signRequestQueue.queueRequest(appId, nonNullOrigin,
queuedSignRequest.begin.bind(queuedSignRequest), timer);
queuedSignRequest.setToken(requestToken);
return queuedSignRequest;
@@ -177,7 +188,8 @@ function isValidSignRequest(request, signChallengesName) {
// be fulfilled. Fail.
if (!signChallenges.length)
return false;
- return isValidSignChallengeArray(signChallenges);
+ var hasAppId = request.hasOwnProperty('appId');
+ return isValidSignChallengeArray(signChallenges, !hasAppId);
}
/**
@@ -187,13 +199,14 @@ function isValidSignRequest(request, signChallengesName) {
* @param {string} origin Signature origin
* @param {function(ErrorCodes)} errorCb Error callback
* @param {function(SignChallenge, string, string)} successCb Success callback
+ * @param {string|undefined} opt_appId The app id for the entire request.
* @param {string|undefined} opt_tlsChannelId TLS Channel Id
* @param {string|undefined} opt_logMsgUrl Url to post log messages to
* @constructor
* @implements {Closeable}
*/
function QueuedSignRequest(signChallenges, timer, origin, errorCb,
- successCb, opt_tlsChannelId, opt_logMsgUrl) {
+ successCb, opt_appId, opt_tlsChannelId, opt_logMsgUrl) {
/** @private {!Array.<SignChallenge>} */
this.signChallenges_ = signChallenges;
/** @private {Countdown} */
@@ -205,6 +218,8 @@ function QueuedSignRequest(signChallenges, timer, origin, errorCb,
/** @private {function(SignChallenge, string, string)} */
this.successCb_ = successCb;
/** @private {string|undefined} */
+ this.appId_ = opt_appId;
+ /** @private {string|undefined} */
this.tlsChannelId_ = opt_tlsChannelId;
/** @private {string|undefined} */
this.logMsgUrl_ = opt_logMsgUrl;
@@ -244,7 +259,7 @@ QueuedSignRequest.prototype.begin = function(token) {
this.signer_ = new Signer(this.timer_, this.origin_,
this.signerFailed_.bind(this), this.signerSucceeded_.bind(this),
this.tlsChannelId_, this.logMsgUrl_);
- if (!this.signer_.setChallenges(this.signChallenges_)) {
+ if (!this.signer_.setChallenges(this.signChallenges_, this.appId_)) {
token.complete();
this.errorCb_(ErrorCodes.BAD_REQUEST);
}
@@ -320,13 +335,16 @@ function Signer(timer, origin, errorCb, successCb,
/**
* Sets the challenges to be signed.
* @param {Array.<SignChallenge>} signChallenges The challenges to set.
+ * @param {string=} opt_appId The app id for the entire request.
* @return {boolean} Whether the challenges could be set.
*/
-Signer.prototype.setChallenges = function(signChallenges) {
+Signer.prototype.setChallenges = function(signChallenges, opt_appId) {
if (this.challengesSet_ || this.done_)
return false;
/** @private {Array.<SignChallenge>} */
this.signChallenges_ = signChallenges;
+ /** @private {string|undefined} */
+ this.appId_ = opt_appId;
/** @private {boolean} */
this.challengesSet_ = true;
@@ -340,6 +358,9 @@ Signer.prototype.setChallenges = function(signChallenges) {
*/
Signer.prototype.checkAppIds_ = function() {
var appIds = getDistinctAppIds(this.signChallenges_);
+ if (this.appId_) {
+ appIds = UTIL_unionArrays([this.appId_], appIds);
+ }
if (!appIds || !appIds.length) {
this.notifyError_(ErrorCodes.BAD_REQUEST);
return;
@@ -405,7 +426,7 @@ Signer.prototype.doSign_ = function() {
}
var encodedChallenges = encodeSignChallenges(this.signChallenges_,
- this.getChallengeHash_.bind(this));
+ this.appId_, this.getChallengeHash_.bind(this));
var timeoutSeconds = this.timer_.millisecondsUntilExpired() / 1000.0;
var request = makeSignHelperRequest(encodedChallenges, timeoutSeconds,
« no previous file with comments | « chrome/browser/resources/cryptotoken/multiplesigner.js ('k') | chrome/browser/resources/cryptotoken/singlesigner.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698