xref: /aosp_15_r20/external/cronet/net/cert/mock_client_cert_verifier.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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)25 int 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)36 void MockClientCertVerifier::AddResultForCert(X509Certificate* cert, int rv) {
37   Rule rule(cert, rv);
38   rules_.push_back(rule);
39 }
40 
41 }  // namespace net
42