1 // Copyright 2015 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "net/cert/mock_client_cert_verifier.h" 6 7 #include <memory> 8 9 #include "net/base/net_errors.h" 10 #include "net/cert/x509_certificate.h" 11 12 namespace net { 13 14 struct MockClientCertVerifier::Rule { Rulenet::MockClientCertVerifier::Rule15 Rule(X509Certificate* cert, int rv) : cert(cert), rv(rv) { DCHECK(cert); } 16 17 scoped_refptr<X509Certificate> cert; 18 int rv; 19 }; 20 21 MockClientCertVerifier::MockClientCertVerifier() = default; 22 23 MockClientCertVerifier::~MockClientCertVerifier() = default; 24 Verify(X509Certificate * cert,CompletionOnceCallback callback,std::unique_ptr<Request> * out_req)25int MockClientCertVerifier::Verify(X509Certificate* cert, 26 CompletionOnceCallback callback, 27 std::unique_ptr<Request>* out_req) { 28 for (const Rule& rule : rules_) { 29 // Check just the client cert. Intermediates will be ignored. 30 if (rule.cert->EqualsExcludingChain(cert)) 31 return rule.rv; 32 } 33 return default_result_; 34 } 35 AddResultForCert(X509Certificate * cert,int rv)36void MockClientCertVerifier::AddResultForCert(X509Certificate* cert, int rv) { 37 Rule rule(cert, rv); 38 rules_.push_back(rule); 39 } 40 41 } // namespace net 42