Chromium Code Reviews| 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 #include <cert.h> | 5 #include <cert.h> |
| 6 #include <cryptohi.h> | 6 #include <cryptohi.h> |
| 7 #include <keyhi.h> | 7 #include <keyhi.h> |
| 8 #include <secder.h> | 8 #include <secder.h> |
| 9 #include <stddef.h> | 9 #include <stddef.h> |
| 10 #include <stdint.h> | 10 #include <stdint.h> |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 236 std::unique_ptr<net::CertificateList> matches, | 236 std::unique_ptr<net::CertificateList> matches, |
| 237 const std::string& error_message) { | 237 const std::string& error_message) { |
| 238 origin_task_runner_->PostTask( | 238 origin_task_runner_->PostTask( |
| 239 from, base::Bind(callback_, base::Passed(&matches), error_message)); | 239 from, base::Bind(callback_, base::Passed(&matches), error_message)); |
| 240 } | 240 } |
| 241 | 241 |
| 242 const std::string username_hash_; | 242 const std::string username_hash_; |
| 243 const bool use_system_key_slot_; | 243 const bool use_system_key_slot_; |
| 244 scoped_refptr<net::SSLCertRequestInfo> cert_request_info_; | 244 scoped_refptr<net::SSLCertRequestInfo> cert_request_info_; |
| 245 std::unique_ptr<net::ClientCertStore> cert_store_; | 245 std::unique_ptr<net::ClientCertStore> cert_store_; |
| 246 std::unique_ptr<net::CertificateList> certs_; | |
| 247 | 246 |
| 248 private: | 247 private: |
| 249 // Must be called on origin thread, therefore use CallBack(). | 248 // Must be called on origin thread, therefore use CallBack(). |
| 250 subtle::SelectCertificatesCallback callback_; | 249 subtle::SelectCertificatesCallback callback_; |
| 251 }; | 250 }; |
| 252 | 251 |
| 253 class GetCertificatesState : public NSSOperationState { | 252 class GetCertificatesState : public NSSOperationState { |
| 254 public: | 253 public: |
| 255 explicit GetCertificatesState(const GetCertificatesCallback& callback); | 254 explicit GetCertificatesState(const GetCertificatesCallback& callback); |
| 256 ~GetCertificatesState() override {} | 255 ~GetCertificatesState() override {} |
| 257 | 256 |
| 258 void OnError(const tracked_objects::Location& from, | 257 void OnError(const tracked_objects::Location& from, |
| 259 const std::string& error_message) override { | 258 const std::string& error_message) override { |
| 260 CallBack(from, | 259 CallBack(from, |
| 261 std::unique_ptr<net::CertificateList>() /* no certificates */, | 260 std::unique_ptr<net::CertificateList>() /* no certificates */, |
| 262 error_message); | 261 error_message); |
| 263 } | 262 } |
| 264 | 263 |
| 265 void CallBack(const tracked_objects::Location& from, | 264 void CallBack(const tracked_objects::Location& from, |
| 266 std::unique_ptr<net::CertificateList> certs, | 265 std::unique_ptr<net::CertificateList> certs, |
| 267 const std::string& error_message) { | 266 const std::string& error_message) { |
| 268 origin_task_runner_->PostTask( | 267 origin_task_runner_->PostTask( |
| 269 from, base::Bind(callback_, base::Passed(&certs), error_message)); | 268 from, base::Bind(callback_, base::Passed(&certs), error_message)); |
| 270 } | 269 } |
| 271 | |
|
davidben
2017/04/26 02:37:56
Stray change?
mattm
2017/04/26 04:46:15
Done.
| |
| 272 std::unique_ptr<net::CertificateList> certs_; | 270 std::unique_ptr<net::CertificateList> certs_; |
| 273 | 271 |
| 274 private: | 272 private: |
| 275 // Must be called on origin thread, therefore use CallBack(). | 273 // Must be called on origin thread, therefore use CallBack(). |
| 276 GetCertificatesCallback callback_; | 274 GetCertificatesCallback callback_; |
| 277 }; | 275 }; |
| 278 | 276 |
| 279 class ImportCertificateState : public NSSOperationState { | 277 class ImportCertificateState : public NSSOperationState { |
| 280 public: | 278 public: |
| 281 ImportCertificateState(const scoped_refptr<net::X509Certificate>& certificate, | 279 ImportCertificateState(const scoped_refptr<net::X509Certificate>& certificate, |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 543 .WithPriority(base::TaskPriority::BACKGROUND) | 541 .WithPriority(base::TaskPriority::BACKGROUND) |
| 544 .WithShutdownBehavior( | 542 .WithShutdownBehavior( |
| 545 base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN), | 543 base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN), |
| 546 base::Bind(&SignRSAOnWorkerThread, base::Passed(&state))); | 544 base::Bind(&SignRSAOnWorkerThread, base::Passed(&state))); |
| 547 } | 545 } |
| 548 | 546 |
| 549 // Called when ClientCertStoreChromeOS::GetClientCerts is done. Builds the list | 547 // Called when ClientCertStoreChromeOS::GetClientCerts is done. Builds the list |
| 550 // of net::CertificateList and calls back. Used by | 548 // of net::CertificateList and calls back. Used by |
| 551 // SelectCertificatesOnIOThread(). | 549 // SelectCertificatesOnIOThread(). |
| 552 void DidSelectCertificatesOnIOThread( | 550 void DidSelectCertificatesOnIOThread( |
| 553 std::unique_ptr<SelectCertificatesState> state) { | 551 std::unique_ptr<SelectCertificatesState> state, |
| 552 net::CertificateList certs) { | |
| 554 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 553 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 555 state->CallBack(FROM_HERE, std::move(state->certs_), | 554 state->CallBack(FROM_HERE, |
| 555 base::MakeUnique<net::CertificateList>(std::move(certs)), | |
| 556 std::string() /* no error */); | 556 std::string() /* no error */); |
| 557 } | 557 } |
| 558 | 558 |
| 559 // Continues selecting certificates on the IO thread. Used by | 559 // Continues selecting certificates on the IO thread. Used by |
| 560 // SelectClientCertificates(). | 560 // SelectClientCertificates(). |
| 561 void SelectCertificatesOnIOThread( | 561 void SelectCertificatesOnIOThread( |
| 562 std::unique_ptr<SelectCertificatesState> state) { | 562 std::unique_ptr<SelectCertificatesState> state) { |
| 563 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 563 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 564 state->cert_store_.reset(new ClientCertStoreChromeOS( | 564 state->cert_store_.reset(new ClientCertStoreChromeOS( |
| 565 nullptr, // no additional provider | 565 nullptr, // no additional provider |
| 566 base::MakeUnique<ClientCertFilterChromeOS>(state->use_system_key_slot_, | 566 base::MakeUnique<ClientCertFilterChromeOS>(state->use_system_key_slot_, |
| 567 state->username_hash_), | 567 state->username_hash_), |
| 568 ClientCertStoreChromeOS::PasswordDelegateFactory())); | 568 ClientCertStoreChromeOS::PasswordDelegateFactory())); |
| 569 | 569 |
| 570 state->certs_.reset(new net::CertificateList); | |
| 571 | |
| 572 SelectCertificatesState* state_ptr = state.get(); | 570 SelectCertificatesState* state_ptr = state.get(); |
| 573 state_ptr->cert_store_->GetClientCerts( | 571 state_ptr->cert_store_->GetClientCerts( |
| 574 *state_ptr->cert_request_info_, state_ptr->certs_.get(), | 572 *state_ptr->cert_request_info_, |
| 575 base::Bind(&DidSelectCertificatesOnIOThread, base::Passed(&state))); | 573 base::Bind(&DidSelectCertificatesOnIOThread, base::Passed(&state))); |
| 576 } | 574 } |
| 577 | 575 |
| 578 // Filters the obtained certificates on a worker thread. Used by | 576 // Filters the obtained certificates on a worker thread. Used by |
| 579 // DidGetCertificates(). | 577 // DidGetCertificates(). |
| 580 void FilterCertificatesOnWorkerThread( | 578 void FilterCertificatesOnWorkerThread( |
| 581 std::unique_ptr<GetCertificatesState> state) { | 579 std::unique_ptr<GetCertificatesState> state) { |
| 582 std::unique_ptr<net::CertificateList> client_certs(new net::CertificateList); | 580 std::unique_ptr<net::CertificateList> client_certs(new net::CertificateList); |
| 583 for (net::CertificateList::const_iterator it = state->certs_->begin(); | 581 for (net::CertificateList::const_iterator it = state->certs_->begin(); |
| 584 it != state->certs_->end(); | 582 it != state->certs_->end(); |
| (...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 906 NSSOperationState* state_ptr = state.get(); | 904 NSSOperationState* state_ptr = state.get(); |
| 907 GetCertDatabase(std::string() /* don't get any specific slot */, | 905 GetCertDatabase(std::string() /* don't get any specific slot */, |
| 908 base::Bind(&GetTokensWithDB, base::Passed(&state)), | 906 base::Bind(&GetTokensWithDB, base::Passed(&state)), |
| 909 browser_context, | 907 browser_context, |
| 910 state_ptr); | 908 state_ptr); |
| 911 } | 909 } |
| 912 | 910 |
| 913 } // namespace platform_keys | 911 } // namespace platform_keys |
| 914 | 912 |
| 915 } // namespace chromeos | 913 } // namespace chromeos |
| OLD | NEW |