Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
| 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_INTERNAL_PARSE_CERTIFICATE_H_ | |
| 6 #define NET_CERT_INTERNAL_PARSE_CERTIFICATE_H_ | |
| 7 | |
| 8 #include "base/basictypes.h" | |
| 9 #include "base/compiler_specific.h" | |
| 10 #include "net/base/net_export.h" | |
| 11 #include "net/der/input.h" | |
| 12 #include "net/der/parse_values.h" | |
| 13 | |
| 14 namespace net { | |
| 15 | |
| 16 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
| |
| 17 | |
| 18 // Parses a DER-encoded "Certificate" as specified by RFC 5280. Returns true on | |
| 19 // success and sets the results in |out|. | |
| 20 // | |
| 21 // Refer to the per-field documention of the ParsedCertificate structure for | |
| 22 // details on what validity checks parsing performs. | |
| 23 // | |
| 24 // Certificate ::= SEQUENCE { | |
| 25 // tbsCertificate TBSCertificate, | |
| 26 // signatureAlgorithm AlgorithmIdentifier, | |
| 27 // signatureValue BIT STRING } | |
| 28 NET_EXPORT bool ParseCertificate(const der::Input& certificate_tlv, | |
| 29 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.
| |
| 30 | |
| 31 // ParsedCertificate contains pointers to the main fields of a DER-encoded RFC | |
| 32 // 5280 "Certificate". | |
| 33 // | |
| 34 // ParsedCertificate is expected to be filled by ParseCertificate(), so | |
| 35 // subsequent field descriptions are in terms of what ParseCertificate() sets. | |
| 36 struct NET_EXPORT ParsedCertificate { | |
| 37 // Corresponds with "tbsCertificate" from RFC 5280: | |
| 38 // tbsCertificate TBSCertificate, | |
| 39 // | |
| 40 // This contains the full (unverified) Tag-Length-Value for a SEQUENCE. No | |
| 41 // guarantees are made regarding the value of this SEQUENCE. | |
| 42 der::Input tbs_certificate_tlv; | |
| 43 | |
| 44 // Corresponds with "signatureAlgorithm" from RFC 5280: | |
| 45 // signatureAlgorithm AlgorithmIdentifier, | |
| 46 // | |
| 47 // This contains the full (unverified) Tag-Length-Value for a SEQUENCE. No | |
| 48 // guarantees are made regarding the value of this SEQUENCE. | |
| 49 // | |
| 50 // This can be further parsed using SignatureValue::CreateFromDer(). | |
| 51 der::Input signature_algorithm_tlv; | |
| 52 | |
| 53 // Corresponds with "signatureValue" from RFC 5280: | |
| 54 // signatureValue BIT STRING } | |
| 55 // | |
| 56 // Parsing guarantees that this is a valid BIT STRING. | |
| 57 der::BitString signature_value; | |
| 58 }; | |
| 59 | |
| 60 } // namespace net | |
| 61 | |
| 62 #endif // NET_CERT_INTERNAL_PARSE_CERTIFICATE_H_ | |
| OLD | NEW |