Index: net/cert/ct_objects_extractor_nss.cc |
diff --git a/net/cert/ct_objects_extractor_nss.cc b/net/cert/ct_objects_extractor_nss.cc |
index c29b34c10c63aba50acc8850d754412947fc7c76..bbc8ba4637761ab9a20b085bab6cde609a4c07d8 100644 |
--- a/net/cert/ct_objects_extractor_nss.cc |
+++ b/net/cert/ct_objects_extractor_nss.cc |
@@ -76,19 +76,16 @@ const unsigned char kOCSPExtensionOid[] = {0x2B, 0x06, 0x01, 0x04, 0x01, |
0xD6, 0x79, 0x02, 0x04, 0x05}; |
const SECItem kOCSPExtensionOidItem = { |
- siBuffer, const_cast<unsigned char*>(kOCSPExtensionOid), |
- sizeof(kOCSPExtensionOid) |
-}; |
+ siBuffer, const_cast<unsigned char*>(kOCSPExtensionOid), |
+ sizeof(kOCSPExtensionOid)}; |
// id-ad-ocsp: 1.3.6.1.5.5.7.48.1.1 |
const unsigned char kBasicOCSPResponseOid[] = {0x2B, 0x06, 0x01, 0x05, 0x05, |
0x07, 0x30, 0x01, 0x01}; |
const SECItem kBasicOCSPResponseOidItem = { |
- siBuffer, const_cast<unsigned char*>(kBasicOCSPResponseOid), |
- sizeof(kBasicOCSPResponseOid) |
-}; |
- |
+ siBuffer, const_cast<unsigned char*>(kBasicOCSPResponseOid), |
+ sizeof(kBasicOCSPResponseOid)}; |
// Initializes the necessary NSS internals for use with Certificate |
// Transparency. |
@@ -151,7 +148,7 @@ bool GetCertOctetStringExtension(CERTCertificate* cert, |
extension.len); |
base::StringPiece parsed_data; |
if (!asn1::GetElement(&raw_data, asn1::kOCTETSTRING, &parsed_data) || |
- raw_data.size() > 0) { // Decoding failure or raw data left |
+ raw_data.size() > 0) { // Decoding failure or raw data left |
rv = SECFailure; |
} else { |
parsed_data.CopyToString(extension_data); |
@@ -191,9 +188,8 @@ bool GetSCTListFromOCSPExtension(PLArenaPool* arena, |
SECItem contents; |
// SEC_QuickDERDecodeItem sets |contents| to point to |match|, so it is not |
// necessary to free the contents of |contents|. |
- SECStatus rv = SEC_QuickDERDecodeItem(arena, &contents, |
- SEC_ASN1_GET(SEC_OctetStringTemplate), |
- &match->value); |
+ SECStatus rv = SEC_QuickDERDecodeItem( |
+ arena, &contents, SEC_ASN1_GET(SEC_OctetStringTemplate), &match->value); |
if (rv != SECSuccess) |
return false; |
@@ -262,11 +258,10 @@ struct ResponseBytes { |
}; |
const SEC_ASN1Template kResponseBytesTemplate[] = { |
- { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(ResponseBytes) }, |
- { SEC_ASN1_OBJECT_ID, offsetof(ResponseBytes, response_type) }, |
- { SEC_ASN1_OCTET_STRING, offsetof(ResponseBytes, der_response) }, |
- { 0 } |
-}; |
+ {SEC_ASN1_SEQUENCE, 0, NULL, sizeof(ResponseBytes)}, |
+ {SEC_ASN1_OBJECT_ID, offsetof(ResponseBytes, response_type)}, |
+ {SEC_ASN1_OCTET_STRING, offsetof(ResponseBytes, der_response)}, |
+ {0}}; |
// OCSPResponse ::= SEQUENCE { |
// responseStatus OCSPResponseStatus, |
@@ -279,17 +274,15 @@ struct OCSPResponse { |
}; |
const SEC_ASN1Template kPointerToResponseBytesTemplate[] = { |
- { SEC_ASN1_POINTER, 0, kResponseBytesTemplate } |
-}; |
+ {SEC_ASN1_POINTER, 0, kResponseBytesTemplate}}; |
const SEC_ASN1Template kOCSPResponseTemplate[] = { |
- { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(OCSPResponse) }, |
- { SEC_ASN1_ENUMERATED, offsetof(OCSPResponse, response_status) }, |
- { SEC_ASN1_OPTIONAL | SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED | |
- SEC_ASN1_CONTEXT_SPECIFIC | 0, offsetof(OCSPResponse, response_bytes), |
- kPointerToResponseBytesTemplate }, |
- { 0 } |
-}; |
+ {SEC_ASN1_SEQUENCE, 0, NULL, sizeof(OCSPResponse)}, |
+ {SEC_ASN1_ENUMERATED, offsetof(OCSPResponse, response_status)}, |
+ {SEC_ASN1_OPTIONAL | SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED | |
+ SEC_ASN1_CONTEXT_SPECIFIC | 0, |
+ offsetof(OCSPResponse, response_bytes), kPointerToResponseBytesTemplate}, |
+ {0}}; |
// CertID ::= SEQUENCE { |
// hashAlgorithm AlgorithmIdentifier, |
@@ -304,14 +297,13 @@ struct CertID { |
}; |
const SEC_ASN1Template kCertIDTemplate[] = { |
- { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(CertID) }, |
- { SEC_ASN1_INLINE | SEC_ASN1_XTRN, offsetof(CertID, hash_algorithm), |
- SEC_ASN1_SUB(SECOID_AlgorithmIDTemplate) }, |
- { SEC_ASN1_OCTET_STRING, offsetof(CertID, issuer_name_hash) }, |
- { SEC_ASN1_OCTET_STRING, offsetof(CertID, issuer_key_hash) }, |
- { SEC_ASN1_INTEGER, offsetof(CertID, serial_number) }, |
- { 0 } |
-}; |
+ {SEC_ASN1_SEQUENCE, 0, NULL, sizeof(CertID)}, |
+ {SEC_ASN1_INLINE | SEC_ASN1_XTRN, offsetof(CertID, hash_algorithm), |
+ SEC_ASN1_SUB(SECOID_AlgorithmIDTemplate)}, |
+ {SEC_ASN1_OCTET_STRING, offsetof(CertID, issuer_name_hash)}, |
+ {SEC_ASN1_OCTET_STRING, offsetof(CertID, issuer_key_hash)}, |
+ {SEC_ASN1_INTEGER, offsetof(CertID, serial_number)}, |
+ {0}}; |
// SingleResponse ::= SEQUENCE { |
// certID CertID, |
@@ -329,23 +321,22 @@ struct SingleResponse { |
}; |
const SEC_ASN1Template kSingleResponseTemplate[] = { |
- { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(SingleResponse) }, |
- { SEC_ASN1_INLINE, offsetof(SingleResponse, cert_id), kCertIDTemplate }, |
- // Really a CHOICE but we make it an ANY because we don't care about the |
- // contents of this field. |
- // TODO(ekasper): use SEC_ASN1_CHOICE. |
- { SEC_ASN1_ANY, offsetof(SingleResponse, der_cert_status) }, |
- { SEC_ASN1_GENERALIZED_TIME, offsetof(SingleResponse, this_update) }, |
- { SEC_ASN1_OPTIONAL | SEC_ASN1_EXPLICIT | |
- SEC_ASN1_CONSTRUCTED | SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_XTRN | 0, |
- offsetof(SingleResponse, next_update), |
- SEC_ASN1_SUB(SEC_GeneralizedTimeTemplate) }, |
- { SEC_ASN1_OPTIONAL | SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED | |
- SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_XTRN | 1, |
- offsetof(SingleResponse, single_extensions), |
- SEC_ASN1_SUB(CERT_SequenceOfCertExtensionTemplate) }, |
- { 0 } |
-}; |
+ {SEC_ASN1_SEQUENCE, 0, NULL, sizeof(SingleResponse)}, |
+ {SEC_ASN1_INLINE, offsetof(SingleResponse, cert_id), kCertIDTemplate}, |
+ // Really a CHOICE but we make it an ANY because we don't care about the |
+ // contents of this field. |
+ // TODO(ekasper): use SEC_ASN1_CHOICE. |
+ {SEC_ASN1_ANY, offsetof(SingleResponse, der_cert_status)}, |
+ {SEC_ASN1_GENERALIZED_TIME, offsetof(SingleResponse, this_update)}, |
+ {SEC_ASN1_OPTIONAL | SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED | |
+ SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_XTRN | 0, |
+ offsetof(SingleResponse, next_update), |
+ SEC_ASN1_SUB(SEC_GeneralizedTimeTemplate)}, |
+ {SEC_ASN1_OPTIONAL | SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED | |
+ SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_XTRN | 1, |
+ offsetof(SingleResponse, single_extensions), |
+ SEC_ASN1_SUB(CERT_SequenceOfCertExtensionTemplate)}, |
+ {0}}; |
// ResponseData ::= SEQUENCE { |
// version [0] EXPLICIT Version DEFAULT v1, |
@@ -363,20 +354,19 @@ struct ResponseData { |
}; |
const SEC_ASN1Template kResponseDataTemplate[] = { |
- { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(ResponseData) }, |
- { SEC_ASN1_OPTIONAL | SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED | |
- SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_XTRN | 0, |
- offsetof(ResponseData, version), SEC_ASN1_SUB(SEC_IntegerTemplate) }, |
- // Really a CHOICE but we make it an ANY because we don't care about the |
- // contents of this field. |
- // TODO(ekasper): use SEC_ASN1_CHOICE. |
- { SEC_ASN1_ANY, offsetof(ResponseData, der_responder_id) }, |
- { SEC_ASN1_GENERALIZED_TIME, offsetof(ResponseData, produced_at) }, |
- { SEC_ASN1_SEQUENCE_OF, offsetof(ResponseData, single_responses), |
- kSingleResponseTemplate }, |
- { SEC_ASN1_SKIP_REST }, |
- { 0 } |
-}; |
+ {SEC_ASN1_SEQUENCE, 0, NULL, sizeof(ResponseData)}, |
+ {SEC_ASN1_OPTIONAL | SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED | |
+ SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_XTRN | 0, |
+ offsetof(ResponseData, version), SEC_ASN1_SUB(SEC_IntegerTemplate)}, |
+ // Really a CHOICE but we make it an ANY because we don't care about the |
+ // contents of this field. |
+ // TODO(ekasper): use SEC_ASN1_CHOICE. |
+ {SEC_ASN1_ANY, offsetof(ResponseData, der_responder_id)}, |
+ {SEC_ASN1_GENERALIZED_TIME, offsetof(ResponseData, produced_at)}, |
+ {SEC_ASN1_SEQUENCE_OF, offsetof(ResponseData, single_responses), |
+ kSingleResponseTemplate}, |
+ {SEC_ASN1_SKIP_REST}, |
+ {0}}; |
// BasicOCSPResponse ::= SEQUENCE { |
// tbsResponseData ResponseData, |
@@ -389,12 +379,11 @@ struct BasicOCSPResponse { |
}; |
const SEC_ASN1Template kBasicOCSPResponseTemplate[] = { |
- { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(BasicOCSPResponse) }, |
- { SEC_ASN1_INLINE, offsetof(BasicOCSPResponse, tbs_response_data), |
- kResponseDataTemplate }, |
- { SEC_ASN1_SKIP_REST }, |
- { 0 } |
-}; |
+ {SEC_ASN1_SEQUENCE, 0, NULL, sizeof(BasicOCSPResponse)}, |
+ {SEC_ASN1_INLINE, offsetof(BasicOCSPResponse, tbs_response_data), |
+ kResponseDataTemplate}, |
+ {SEC_ASN1_SKIP_REST}, |
+ {0}}; |
bool StringEqualToSECItem(const std::string& value1, const SECItem& value2) { |
if (value1.size() != value2.len) |
@@ -433,9 +422,8 @@ bool ExtractEmbeddedSCTList(X509Certificate::OSCertHandle cert, |
if (!leaf_cert.cert) |
return false; |
- return GetCertOctetStringExtension(leaf_cert.cert.get(), |
- g_ct_singleton.Get().embedded_oid(), |
- sct_list); |
+ return GetCertOctetStringExtension( |
+ leaf_cert.cert.get(), g_ct_singleton.Get().embedded_oid(), sct_list); |
} |
bool GetPrecertLogEntry(X509Certificate::OSCertHandle leaf, |
@@ -530,16 +518,15 @@ bool ExtractSCTListFromOCSPResponse(X509Certificate::OSCertHandle issuer, |
OCSPResponse response; |
memset(&response, 0, sizeof(response)); |
- SECItem src = { siBuffer, |
- reinterpret_cast<unsigned char*>(const_cast<char*>( |
- ocsp_response.data())), |
- static_cast<unsigned int>(ocsp_response.size()) }; |
+ SECItem src = {siBuffer, reinterpret_cast<unsigned char*>( |
+ const_cast<char*>(ocsp_response.data())), |
+ static_cast<unsigned int>(ocsp_response.size())}; |
// |response| will point directly into |src|, so it's not necessary to |
// free the |response| contents, but they may only be used while |src| |
// is valid (i.e., in this method). |
- SECStatus rv = SEC_QuickDERDecodeItem(arena.get(), &response, |
- kOCSPResponseTemplate, &src); |
+ SECStatus rv = SEC_QuickDERDecodeItem( |
+ arena.get(), &response, kOCSPResponseTemplate, &src); |
if (rv != SECSuccess) |
return false; |
@@ -554,7 +541,8 @@ bool ExtractSCTListFromOCSPResponse(X509Certificate::OSCertHandle issuer, |
BasicOCSPResponse basic_response; |
memset(&basic_response, 0, sizeof(basic_response)); |
- rv = SEC_QuickDERDecodeItem(arena.get(), &basic_response, |
+ rv = SEC_QuickDERDecodeItem(arena.get(), |
+ &basic_response, |
kBasicOCSPResponseTemplate, |
&response.response_bytes->der_response); |
if (rv != SECSuccess) |
@@ -592,14 +580,16 @@ bool ExtractSCTListFromOCSPResponse(X509Certificate::OSCertHandle issuer, |
// necessary. |
// TODO(ekasper): only compute the hashes on demand. |
std::string issuer_key_sha256_hash = crypto::SHA256HashString(issuer_spk); |
- std::string issuer_key_sha1_hash = base::SHA1HashString( |
- issuer_spk.as_string()); |
+ std::string issuer_key_sha1_hash = |
+ base::SHA1HashString(issuer_spk.as_string()); |
const SingleResponse* match = NULL; |
for (const SingleResponse* const* resps = responses; *resps; ++resps) { |
const SingleResponse* resp = *resps; |
- if (CertIDMatches(resp->cert_id, cert_serial_number, |
- issuer_key_sha1_hash, issuer_key_sha256_hash)) { |
+ if (CertIDMatches(resp->cert_id, |
+ cert_serial_number, |
+ issuer_key_sha1_hash, |
+ issuer_key_sha256_hash)) { |
match = resp; |
break; |
} |
@@ -608,8 +598,8 @@ bool ExtractSCTListFromOCSPResponse(X509Certificate::OSCertHandle issuer, |
if (!match) |
return false; |
- return GetSCTListFromOCSPExtension(arena.get(), match->single_extensions, |
- sct_list); |
+ return GetSCTListFromOCSPExtension( |
+ arena.get(), match->single_extensions, sct_list); |
} |
} // namespace ct |