| Index: net/cert/internal/trust_store_nss.cc
|
| diff --git a/net/cert/internal/trust_store_nss.cc b/net/cert/internal/trust_store_nss.cc
|
| index 1a01875ecdfcced55049df537806cf7e0e5b5c57..dd214dca4cf6efdb3501cef6327e4e79baf8a4d6 100644
|
| --- a/net/cert/internal/trust_store_nss.cc
|
| +++ b/net/cert/internal/trust_store_nss.cc
|
| @@ -7,11 +7,7 @@
|
| #include <cert.h>
|
| #include <certdb.h>
|
|
|
| -#include "base/bind.h"
|
| -#include "base/callback_helpers.h"
|
| #include "base/memory/ptr_util.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "base/task_runner.h"
|
| #include "crypto/nss_util.h"
|
| #include "net/cert/internal/cert_errors.h"
|
| #include "net/cert/internal/parsed_certificate.h"
|
| @@ -22,13 +18,14 @@
|
|
|
| namespace net {
|
|
|
| -namespace {
|
| +TrustStoreNSS::TrustStoreNSS(SECTrustType trust_type)
|
| + : trust_type_(trust_type) {}
|
|
|
| -// Get all certs in NSS which have a subject matching |der_name| and which are
|
| -// marked as a trusted CA.
|
| -void GetAnchors(const scoped_refptr<ParsedCertificate>& cert,
|
| - SECTrustType trust_type,
|
| - TrustAnchors* out_anchors) {
|
| +TrustStoreNSS::~TrustStoreNSS() = default;
|
| +
|
| +void TrustStoreNSS::FindTrustAnchorsForCert(
|
| + const scoped_refptr<ParsedCertificate>& cert,
|
| + TrustAnchors* out_anchors) const {
|
| crypto::EnsureNSSInit();
|
|
|
| SECItem name;
|
| @@ -54,7 +51,7 @@ void GetAnchors(const scoped_refptr<ParsedCertificate>& cert,
|
|
|
| // TODO(mattm): handle explicit distrust (blacklisting)?
|
| const int ca_trust = CERTDB_TRUSTED_CA;
|
| - if ((SEC_GET_TRUST_FLAGS(&trust, trust_type) & ca_trust) != ca_trust)
|
| + if ((SEC_GET_TRUST_FLAGS(&trust, trust_type_) & ca_trust) != ca_trust)
|
| continue;
|
|
|
| CertErrors errors;
|
| @@ -73,65 +70,4 @@ void GetAnchors(const scoped_refptr<ParsedCertificate>& cert,
|
| CERT_DestroyCertList(found_certs);
|
| }
|
|
|
| -class GetAnchorsRequest : public TrustStore::Request {
|
| - public:
|
| - explicit GetAnchorsRequest(const TrustStore::TrustAnchorsCallback& callback);
|
| - // Destruction of the Request cancels it. GetAnchors will still run, but the
|
| - // callback will not be called since the WeakPtr will be invalidated.
|
| - ~GetAnchorsRequest() override = default;
|
| -
|
| - void Start(const scoped_refptr<ParsedCertificate>& cert,
|
| - SECTrustType trust_type,
|
| - base::TaskRunner* task_runner);
|
| -
|
| - private:
|
| - void HandleGetAnchors(std::unique_ptr<TrustAnchors> anchors);
|
| -
|
| - TrustStore::TrustAnchorsCallback callback_;
|
| - base::WeakPtrFactory<GetAnchorsRequest> weak_ptr_factory_;
|
| -};
|
| -
|
| -GetAnchorsRequest::GetAnchorsRequest(
|
| - const TrustStore::TrustAnchorsCallback& callback)
|
| - : callback_(callback), weak_ptr_factory_(this) {}
|
| -
|
| -void GetAnchorsRequest::Start(const scoped_refptr<ParsedCertificate>& cert,
|
| - SECTrustType trust_type,
|
| - base::TaskRunner* task_runner) {
|
| - auto anchors = base::MakeUnique<TrustAnchors>();
|
| -
|
| - auto* anchors_ptr = anchors.get();
|
| - task_runner->PostTaskAndReply(
|
| - FROM_HERE, base::Bind(&GetAnchors, cert, trust_type, anchors_ptr),
|
| - base::Bind(&GetAnchorsRequest::HandleGetAnchors,
|
| - weak_ptr_factory_.GetWeakPtr(), base::Passed(&anchors)));
|
| -}
|
| -
|
| -void GetAnchorsRequest::HandleGetAnchors(
|
| - std::unique_ptr<TrustAnchors> anchors) {
|
| - base::ResetAndReturn(&callback_).Run(std::move(*anchors));
|
| - // |this| may be deleted here.
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -TrustStoreNSS::TrustStoreNSS(SECTrustType trust_type,
|
| - scoped_refptr<base::TaskRunner> nss_task_runner)
|
| - : trust_type_(trust_type), nss_task_runner_(std::move(nss_task_runner)) {}
|
| -
|
| -TrustStoreNSS::~TrustStoreNSS() = default;
|
| -
|
| -void TrustStoreNSS::FindTrustAnchorsForCert(
|
| - const scoped_refptr<ParsedCertificate>& cert,
|
| - const TrustAnchorsCallback& callback,
|
| - TrustAnchors* synchronous_matches,
|
| - std::unique_ptr<Request>* out_req) const {
|
| - if (callback.is_null())
|
| - return;
|
| -
|
| - auto req = base::MakeUnique<GetAnchorsRequest>(callback);
|
| - req->Start(cert, trust_type_, nss_task_runner_.get());
|
| - *out_req = std::move(req);
|
| -}
|
| -
|
| } // namespace net
|
|
|