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

Unified Diff: chrome/browser/ui/login/login_prompt.cc

Issue 6804032: Add TLS-SRP (RFC 5054) support Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: use system srp and mpi libs, not local copies Created 9 years, 8 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/ui/login/login_prompt.cc
diff --git a/chrome/browser/ui/login/login_prompt.cc b/chrome/browser/ui/login/login_prompt.cc
index 380f7b559a9229350334e4c99bc899b83591010f..7cf93c546d9572d65ab95a09ec54ee85e1ca812f 100644
--- a/chrome/browser/ui/login/login_prompt.cc
+++ b/chrome/browser/ui/login/login_prompt.cc
@@ -350,7 +350,14 @@ void LoginHandler::SetAuthDeferred(const std::wstring& username,
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
if (request_) {
- request_->SetAuth(WideToUTF16Hack(username), WideToUTF16Hack(password));
+ if (auth_info->over_protocol == AUTH_OVER_TLS) {
+ DCHECK_EQ(ASCIIToWide(net::kTLSSRPScheme), auth_info_->scheme);
+ request_->SetTLSLogin(WideToUTF16Hack(username),
+ WideToUTF16Hack(password));
+ request_->ContinueWithTLSLogin();
+ } else {
+ request_->SetAuth(WideToUTF16Hack(username), WideToUTF16Hack(password));
+ }
ResetLoginHandlerForRequest(request_);
}
}
@@ -360,8 +367,14 @@ void LoginHandler::CancelAuthDeferred() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
if (request_) {
- request_->CancelAuth();
- // Verify that CancelAuth doesn't destroy the request via our delegate.
+ if (auth_info->over_protocol == AUTH_OVER_TLS) {
+ DCHECK_EQ(ASCIIToWide(net::kTLSSRPScheme), auth_info_->scheme);
+ request_->CancelTLSLogin();
+ } else {
+ request_->CancelAuth();
+ }
+ // Verify that CancelAuth/CancelTLSLogin doesn't destroy the request via
+ // our delegate.
DCHECK(request_ != NULL);
ResetLoginHandlerForRequest(request_);
}
@@ -435,6 +448,8 @@ class LoginDialogTask : public Task {
dialog_form.scheme = PasswordForm::SCHEME_BASIC;
} else if (LowerCaseEqualsASCII(auth_info_->scheme, "digest")) {
dialog_form.scheme = PasswordForm::SCHEME_DIGEST;
+ } else if (LowerCaseEqualsASCII(auth_info_->scheme, "tls-srp")) {
+ dialog_form.scheme = PasswordForm::SCHEME_TLS_SRP;
} else {
dialog_form.scheme = PasswordForm::SCHEME_OTHER;
}
@@ -442,10 +457,12 @@ class LoginDialogTask : public Task {
if (auth_info_->is_proxy) {
std::string origin = host_and_port;
// We don't expect this to already start with http:// or https://.
- DCHECK(origin.find("http://") != 0 && origin.find("https://") != 0);
+ DCHECK(origin.find("http://") != 0 && origin.find("https://") != 0 &&
+ origin.find("httpsv://") != 0);
origin = std::string("http://") + origin;
dialog_form.origin = GURL(origin);
} else if (net::GetHostAndPort(request_url_) != host_and_port) {
+ LOG(INFO) << net::GetHostAndPort(request_url_) << " vs " << host_and_port;
dialog_form.origin = GURL();
NOTREACHED(); // crbug.com/32718
} else {

Powered by Google App Engine
This is Rietveld 408576698