| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 #include "chrome/browser/ui/android/ssl_client_certificate_request.h" | 5 #include "chrome/browser/ui/android/ssl_client_certificate_request.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/android/jni_array.h" | 10 #include "base/android/jni_array.h" |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 const scoped_refptr<net::X509Certificate>& client_cert, | 39 const scoped_refptr<net::X509Certificate>& client_cert, |
| 40 crypto::ScopedEVP_PKEY private_key) { | 40 crypto::ScopedEVP_PKEY private_key) { |
| 41 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | 41 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
| 42 net::OpenSSLClientKeyStore::GetInstance()->RecordClientCertPrivateKey( | 42 net::OpenSSLClientKeyStore::GetInstance()->RecordClientCertPrivateKey( |
| 43 client_cert.get(), private_key.get()); | 43 client_cert.get(), private_key.get()); |
| 44 } | 44 } |
| 45 | 45 |
| 46 void StartClientCertificateRequest( | 46 void StartClientCertificateRequest( |
| 47 const net::SSLCertRequestInfo* cert_request_info, | 47 const net::SSLCertRequestInfo* cert_request_info, |
| 48 ui::WindowAndroid* window, | 48 ui::WindowAndroid* window, |
| 49 scoped_ptr<content::ClientCertificateDelegate> delegate) { | 49 std::unique_ptr<content::ClientCertificateDelegate> delegate) { |
| 50 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 50 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 51 | 51 |
| 52 // Build the |key_types| JNI parameter, as a String[] | 52 // Build the |key_types| JNI parameter, as a String[] |
| 53 std::vector<std::string> key_types; | 53 std::vector<std::string> key_types; |
| 54 for (size_t n = 0; n < cert_request_info->cert_key_types.size(); ++n) { | 54 for (size_t n = 0; n < cert_request_info->cert_key_types.size(); ++n) { |
| 55 switch (cert_request_info->cert_key_types[n]) { | 55 switch (cert_request_info->cert_key_types[n]) { |
| 56 case net::CLIENT_CERT_RSA_SIGN: | 56 case net::CLIENT_CERT_RSA_SIGN: |
| 57 key_types.push_back("RSA"); | 57 key_types.push_back("RSA"); |
| 58 break; | 58 break; |
| 59 case net::CLIENT_CERT_ECDSA_SIGN: | 59 case net::CLIENT_CERT_ECDSA_SIGN: |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 // the user didn't select a certificate. | 124 // the user didn't select a certificate. |
| 125 static void OnSystemRequestCompletion( | 125 static void OnSystemRequestCompletion( |
| 126 JNIEnv* env, | 126 JNIEnv* env, |
| 127 const JavaParamRef<jclass>& clazz, | 127 const JavaParamRef<jclass>& clazz, |
| 128 jlong request_id, | 128 jlong request_id, |
| 129 const JavaParamRef<jobjectArray>& encoded_chain_ref, | 129 const JavaParamRef<jobjectArray>& encoded_chain_ref, |
| 130 const JavaParamRef<jobject>& private_key_ref) { | 130 const JavaParamRef<jobject>& private_key_ref) { |
| 131 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 131 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 132 | 132 |
| 133 // Take back ownership of the delegate object. | 133 // Take back ownership of the delegate object. |
| 134 scoped_ptr<content::ClientCertificateDelegate> delegate( | 134 std::unique_ptr<content::ClientCertificateDelegate> delegate( |
| 135 reinterpret_cast<content::ClientCertificateDelegate*>(request_id)); | 135 reinterpret_cast<content::ClientCertificateDelegate*>(request_id)); |
| 136 | 136 |
| 137 if (encoded_chain_ref == NULL || private_key_ref == NULL) { | 137 if (encoded_chain_ref == NULL || private_key_ref == NULL) { |
| 138 LOG(ERROR) << "No client certificate selected"; | 138 LOG(ERROR) << "No client certificate selected"; |
| 139 delegate->ContinueWithCertificate(nullptr); | 139 delegate->ContinueWithCertificate(nullptr); |
| 140 return; | 140 return; |
| 141 } | 141 } |
| 142 | 142 |
| 143 // Convert the encoded chain to a vector of strings. | 143 // Convert the encoded chain to a vector of strings. |
| 144 std::vector<std::string> encoded_chain_strings; | 144 std::vector<std::string> encoded_chain_strings; |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 | 198 |
| 199 bool RegisterSSLClientCertificateRequestAndroid(JNIEnv* env) { | 199 bool RegisterSSLClientCertificateRequestAndroid(JNIEnv* env) { |
| 200 return RegisterNativesImpl(env); | 200 return RegisterNativesImpl(env); |
| 201 } | 201 } |
| 202 | 202 |
| 203 } // namespace android | 203 } // namespace android |
| 204 | 204 |
| 205 void ShowSSLClientCertificateSelector( | 205 void ShowSSLClientCertificateSelector( |
| 206 content::WebContents* contents, | 206 content::WebContents* contents, |
| 207 net::SSLCertRequestInfo* cert_request_info, | 207 net::SSLCertRequestInfo* cert_request_info, |
| 208 scoped_ptr<content::ClientCertificateDelegate> delegate) { | 208 std::unique_ptr<content::ClientCertificateDelegate> delegate) { |
| 209 ui::WindowAndroid* window = ViewAndroidHelper::FromWebContents(contents) | 209 ui::WindowAndroid* window = ViewAndroidHelper::FromWebContents(contents) |
| 210 ->GetViewAndroid()->GetWindowAndroid(); | 210 ->GetViewAndroid()->GetWindowAndroid(); |
| 211 DCHECK(window); | 211 DCHECK(window); |
| 212 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 212 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 213 StartClientCertificateRequest(cert_request_info, window, std::move(delegate)); | 213 StartClientCertificateRequest(cert_request_info, window, std::move(delegate)); |
| 214 } | 214 } |
| 215 | 215 |
| 216 } // namespace chrome | 216 } // namespace chrome |
| OLD | NEW |