Index: net/cert/internal/parse_certificate.h |
diff --git a/net/cert/internal/parse_certificate.h b/net/cert/internal/parse_certificate.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d4968435826820e73b718d176e3ff3449a403744 |
--- /dev/null |
+++ b/net/cert/internal/parse_certificate.h |
@@ -0,0 +1,62 @@ |
+// 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_INTERNAL_PARSE_CERTIFICATE_H_ |
+#define NET_CERT_INTERNAL_PARSE_CERTIFICATE_H_ |
+ |
+#include "base/basictypes.h" |
+#include "base/compiler_specific.h" |
+#include "net/base/net_export.h" |
+#include "net/der/input.h" |
+#include "net/der/parse_values.h" |
+ |
+namespace net { |
+ |
+struct ParsedCertificate; |
davidben
2015/08/14 17:14:50
Any reason for the forward-decl like this? You cou
eroman
2015/08/14 17:41:00
It was just an aesthetic decision (I can move thin
davidben
2015/08/14 17:45:39
Mmm, that's true. Do we typically do that? I don't
|
+ |
+// Parses a DER-encoded "Certificate" as specified by RFC 5280. Returns true on |
+// success and sets the results in |out|. |
+// |
+// Refer to the per-field documention of the ParsedCertificate structure for |
+// details on what validity checks parsing performs. |
+// |
+// Certificate ::= SEQUENCE { |
+// tbsCertificate TBSCertificate, |
+// signatureAlgorithm AlgorithmIdentifier, |
+// signatureValue BIT STRING } |
+NET_EXPORT bool ParseCertificate(const der::Input& certificate_tlv, |
+ ParsedCertificate* out) WARN_UNUSED_RESULT; |
davidben
2015/08/14 17:45:39
Oh transplanting my comment from the other CL sinc
eroman
2015/08/14 17:57:48
I am not sure the best way to handle this either.
|
+ |
+// ParsedCertificate contains pointers to the main fields of a DER-encoded RFC |
+// 5280 "Certificate". |
+// |
+// ParsedCertificate is expected to be filled by ParseCertificate(), so |
+// subsequent field descriptions are in terms of what ParseCertificate() sets. |
+struct NET_EXPORT ParsedCertificate { |
+ // Corresponds with "tbsCertificate" from RFC 5280: |
+ // tbsCertificate TBSCertificate, |
+ // |
+ // This contains the full (unverified) Tag-Length-Value for a SEQUENCE. No |
+ // guarantees are made regarding the value of this SEQUENCE. |
+ der::Input tbs_certificate_tlv; |
+ |
+ // Corresponds with "signatureAlgorithm" from RFC 5280: |
+ // signatureAlgorithm AlgorithmIdentifier, |
+ // |
+ // This contains the full (unverified) Tag-Length-Value for a SEQUENCE. No |
+ // guarantees are made regarding the value of this SEQUENCE. |
+ // |
+ // This can be further parsed using SignatureValue::CreateFromDer(). |
+ der::Input signature_algorithm_tlv; |
+ |
+ // Corresponds with "signatureValue" from RFC 5280: |
+ // signatureValue BIT STRING } |
+ // |
+ // Parsing guarantees that this is a valid BIT STRING. |
+ der::BitString signature_value; |
+}; |
+ |
+} // namespace net |
+ |
+#endif // NET_CERT_INTERNAL_PARSE_CERTIFICATE_H_ |