xref: /aosp_15_r20/external/cronet/net/cert/client_cert_verifier.h (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 #ifndef NET_CERT_CLIENT_CERT_VERIFIER_H_
6 #define NET_CERT_CLIENT_CERT_VERIFIER_H_
7 
8 #include <memory>
9 
10 #include "net/base/completion_once_callback.h"
11 #include "net/base/net_export.h"
12 
13 namespace net {
14 
15 class X509Certificate;
16 
17 // ClientCertVerifier represents a service for verifying certificates.
18 class NET_EXPORT ClientCertVerifier {
19  public:
20   class Request {
21    public:
22     Request() = default;
23 
24     Request(const Request&) = delete;
25     Request& operator=(const Request&) = delete;
26 
27     // Destruction of the Request cancels it.
28     virtual ~Request() = default;
29   };
30 
31   virtual ~ClientCertVerifier() = default;
32 
33   // Verifies the given certificate as a client certificate.
34   // Returns OK if successful or an error code upon failure.
35   virtual int Verify(X509Certificate* cert,
36                      CompletionOnceCallback callback,
37                      std::unique_ptr<Request>* out_req) = 0;
38 };
39 
40 }  // namespace net
41 
42 #endif  // NET_CERT_CLIENT_CERT_VERIFIER_H_
43