summaryrefslogtreecommitdiffstats
path: root/net/base/cert_verifier.h
diff options
context:
space:
mode:
authorwtc@google.com <wtc@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-12-19 00:17:48 +0000
committerwtc@google.com <wtc@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-12-19 00:17:48 +0000
commit5b62083c99317965244123c031c707d53f0a03f1 (patch)
tree80d8d2b4811aeb65736101fdc88cfdc4a2c28ff3 /net/base/cert_verifier.h
parent349f6911964be4226312f970d038bdfc3339face (diff)
downloadchromium_src-5b62083c99317965244123c031c707d53f0a03f1.zip
chromium_src-5b62083c99317965244123c031c707d53f0a03f1.tar.gz
chromium_src-5b62083c99317965244123c031c707d53f0a03f1.tar.bz2
Add the CertVerifier class. It is based on the
HostResolver class. It's not being compiled yet. R=eroman BUG=3592 Review URL: http://codereview.chromium.org/14868 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@7280 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/cert_verifier.h')
-rw-r--r--net/base/cert_verifier.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/net/base/cert_verifier.h b/net/base/cert_verifier.h
new file mode 100644
index 0000000..06f7cef
--- /dev/null
+++ b/net/base/cert_verifier.h
@@ -0,0 +1,65 @@
+// Copyright (c) 2008 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef NET_BASE_CERT_VERIFIER_H_
+#define NET_BASE_CERT_VERIFIER_H_
+
+#include <string>
+
+#include "base/basictypes.h"
+#include "base/ref_counted.h"
+#include "net/base/completion_callback.h"
+
+namespace net {
+
+class X509Certificate;
+
+// This class represents the task of verifying a certificate. It can only
+// verify a single certificate at a time, so if you need to verify multiple
+// certificates at the same time, you will need to allocate a CertVerifier
+// object for each certificate.
+//
+// TODO(wtc): This class is based on HostResolver. We should create a base
+// class for the common code between the two classes.
+//
+class CertVerifier {
+ public:
+ CertVerifier();
+
+ // If a completion callback is pending when the verifier is destroyed, the
+ // certificate verification is cancelled, and the completion callback will
+ // not be called.
+ ~CertVerifier();
+
+ // Verifies the given certificate against the given hostname. Returns OK if
+ // successful or an error code upon failure.
+ //
+ // The |cert_status| bitmask is always filled out regardless of the return
+ // value. If the certificate has multiple errors, the corresponding status
+ // flags are set in |cert_status|, and the error code for the most serious
+ // error is returned.
+ //
+ // If |rev_checking_enabled| is true, certificate revocation checking is
+ // performed.
+ //
+ // When callback is null, the operation completes synchronously.
+ //
+ // When callback is non-null, ERR_IO_PENDING is returned if the operation
+ // could not be completed synchronously, in which case the result code will
+ // be passed to the callback when available.
+ //
+ int Verify(X509Certificate* cert, const std::string& hostname,
+ bool rev_checking_enabled, int* cert_status,
+ CompletionCallback* callback);
+
+ private:
+ class Request;
+ friend class Request;
+ scoped_refptr<Request> request_;
+ DISALLOW_COPY_AND_ASSIGN(CertVerifier);
+};
+
+} // namespace net
+
+#endif // NET_BASE_CERT_VERIFIER_H_