Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2134)

Unified Diff: net/cert/ocsp_parser.h

Issue 1541213002: Adding OCSP Parser (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adding initial unittest. Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | net/cert/ocsp_parser.cc » ('j') | net/cert/ocsp_parser.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/cert/ocsp_parser.h
diff --git a/net/cert/ocsp_parser.h b/net/cert/ocsp_parser.h
new file mode 100644
index 0000000000000000000000000000000000000000..ec51bcd13318e242d8a62b0a304168eb7f017902
--- /dev/null
+++ b/net/cert/ocsp_parser.h
@@ -0,0 +1,100 @@
+// Copyright 2015 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_CERT_OCSP_PARSER_H_
+#define NET_CERT_OCSP_PARSER_H_
+
+#include <string>
+#include <vector>
+
+#include "base/memory/scoped_ptr.h"
+#include "net/cert/internal/parse_certificate.h"
+#include "net/cert/internal/signature_algorithm.h"
+#include "net/der/input.h"
+#include "net/der/parse_values.h"
+#include "net/der/parser.h"
+#include "net/der/tag.h"
+
+namespace net {
+
+namespace ct {
Ryan Sleevi 2015/12/30 18:55:18 wrong namespace ;)
svaldez 2015/12/30 19:31:37 Done.
+
+// 1.3.6.1.5.5.7.48.1.1 - Basic OCSP Response
+const uint8_t kOidPkixOcspBasic[] = {0x2b, 0x06, 0x01, 0x05, 0x05,
Ryan Sleevi 2015/12/30 18:55:18 Don't want this in a header (will end up duplicati
svaldez 2015/12/30 19:31:37 Done.
+ 0x07, 0x30, 0x01, 0x01};
+
+enum OCSPRevocationReason {
Ryan Sleevi 2015/12/30 18:55:18 Inline to single response?
svaldez 2015/12/30 19:31:37 Done.
+ OCSP_REVOKE_UNSPECIFIED,
+ OCSP_REVOKE_KEY_COMPROMISE,
+ OCSP_REVOKE_CA_COMPROMISE,
+ OCSP_REVOKE_AFFILIATION_CHANGED,
+ OCSP_REVOKE_SUPERSEDED,
+ OCSP_REVOKE_CESSATION_OF_OPERATION,
+ OCSP_REVOKE_CERTIFICATE_HOLD,
+ OCSP_REVOKE_UNUSED,
+ OCSP_REVOKE_REMOVE_FROM_CRL,
+ OCSP_REVOKE_PRIVILEGE_WITHDRAWN,
+ OCSP_REVOKE_A_COMPROMISE,
+};
+
+enum OCSPCertStatus {
Ryan Sleevi 2015/12/30 18:55:18 Inline to single response?
svaldez 2015/12/30 19:31:37 Done.
+ OCSP_CERT_GOOD,
+ OCSP_CERT_REVOKED,
+ OCSP_CERT_UNKNOWN,
+};
+
+enum OCSPResponseStatus {
Ryan Sleevi 2015/12/30 18:55:18 inline to Response
svaldez 2015/12/30 19:31:37 Done.
+ OCSP_SUCCESSFUL,
+ OCSP_MALFORMED_REQUEST,
+ OCSP_INTERNAL_ERROR,
+ OCSP_TRY_LATER,
+ OCSP_SIG_REQUIRED,
+ OCSP_UNAUTHORIZED,
+};
+
+struct OCSPSingleResponse {
+ OCSPSingleResponse();
+ ~OCSPSingleResponse();
+
+ std::string cert_id;
+ OCSPCertStatus cert_status;
+ der::GeneralizedTime revocation_time;
+ OCSPRevocationReason revocation_reason;
+ der::GeneralizedTime this_update;
+ der::GeneralizedTime next_update;
+ std::vector<ParsedExtension> extensions;
+};
+
+struct OCSPResponseData {
+ OCSPResponseData();
+ ~OCSPResponseData();
+
+ uint8_t version;
+ std::string responder_id_name;
+ std::string responder_id_key;
+ der::GeneralizedTime produced_at;
+ std::vector<OCSPSingleResponse> responses;
+ std::vector<ParsedExtension> extensions;
Ryan Sleevi 2015/12/30 18:55:18 Not sure if we want to fully parse these; much of
+};
+
+struct NET_EXPORT OCSPResponse {
+ OCSPResponse();
+ ~OCSPResponse();
+
+ OCSPResponseStatus status;
+ OCSPResponseData data;
+ scoped_ptr<SignatureAlgorithm> signature_algorithm;
+ der::BitString signature;
+ std::vector<ParsedCertificate> certs;
+};
+
+// Parses the OCSP Response.
+NET_EXPORT_PRIVATE bool ParseOCSPResponse(const std::string& ocsp_response,
+ OCSPResponse* response);
+
+} // namespace ct
+
+} // namespace net
+
+#endif // NET_CERT_OCSP_PARSER_H_
« no previous file with comments | « no previous file | net/cert/ocsp_parser.cc » ('j') | net/cert/ocsp_parser.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698