OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/base/x509_certificate.h" | 5 #include "net/base/x509_certificate.h" |
6 | 6 |
7 #include <CommonCrypto/CommonDigest.h> | 7 #include <CommonCrypto/CommonDigest.h> |
8 #include <Security/Security.h> | 8 #include <Security/Security.h> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 x509_util::ParsePrincipal(&cert_handle->subject, &subject_); | 62 x509_util::ParsePrincipal(&cert_handle->subject, &subject_); |
63 x509_util::ParsePrincipal(&cert_handle->issuer, &issuer_); | 63 x509_util::ParsePrincipal(&cert_handle->issuer, &issuer_); |
64 x509_util::ParseDate(&cert_handle->validity.notBefore, &valid_start_); | 64 x509_util::ParseDate(&cert_handle->validity.notBefore, &valid_start_); |
65 x509_util::ParseDate(&cert_handle->validity.notAfter, &valid_expiry_); | 65 x509_util::ParseDate(&cert_handle->validity.notAfter, &valid_expiry_); |
66 serial_number_ = x509_util::ParseSerialNumber(cert_handle); | 66 serial_number_ = x509_util::ParseSerialNumber(cert_handle); |
67 } | 67 } |
68 fingerprint_ = CalculateFingerprint(cert_handle_); | 68 fingerprint_ = CalculateFingerprint(cert_handle_); |
69 ca_fingerprint_ = CalculateCAFingerprint(intermediate_ca_certs_); | 69 ca_fingerprint_ = CalculateCAFingerprint(intermediate_ca_certs_); |
70 } | 70 } |
71 | 71 |
| 72 bool X509Certificate::IsIssuedByEncoded( |
| 73 const std::vector<std::string>& valid_issuers) { |
| 74 x509_util_ios::NSSCertChain nss_chain(this); |
| 75 // Convert to scoped CERTName* list. |
| 76 std::vector<CERTName*> issuers; |
| 77 crypto::ScopedPLArenaPool arena(PORT_NewArena(DER_DEFAULT_CHUNKSIZE)); |
| 78 if (!x509_util::GetIssuersFromEncodedList(valid_issuers, |
| 79 arena.get(), |
| 80 &issuers)) { |
| 81 return false; |
| 82 } |
| 83 return x509_util::IsCertificateIssuedBy( |
| 84 nss_chain.cert_chain(), issuers); |
| 85 } |
| 86 |
72 // static | 87 // static |
73 X509Certificate* X509Certificate::CreateSelfSigned( | 88 X509Certificate* X509Certificate::CreateSelfSigned( |
74 crypto::RSAPrivateKey* key, | 89 crypto::RSAPrivateKey* key, |
75 const std::string& subject, | 90 const std::string& subject, |
76 uint32 serial_number, | 91 uint32 serial_number, |
77 base::TimeDelta valid_duration) { | 92 base::TimeDelta valid_duration) { |
78 DCHECK(key); | 93 DCHECK(key); |
79 DCHECK(!subject.empty()); | 94 DCHECK(!subject.empty()); |
80 NOTIMPLEMENTED(); | 95 NOTIMPLEMENTED(); |
81 return NULL; | 96 return NULL; |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 | 236 |
222 // static | 237 // static |
223 void X509Certificate::GetPublicKeyInfo(OSCertHandle cert_handle, | 238 void X509Certificate::GetPublicKeyInfo(OSCertHandle cert_handle, |
224 size_t* size_bits, | 239 size_t* size_bits, |
225 PublicKeyType* type) { | 240 PublicKeyType* type) { |
226 x509_util_ios::NSSCertificate nss_cert(cert_handle); | 241 x509_util_ios::NSSCertificate nss_cert(cert_handle); |
227 x509_util::GetPublicKeyInfo(nss_cert.cert_handle(), size_bits, type); | 242 x509_util::GetPublicKeyInfo(nss_cert.cert_handle(), size_bits, type); |
228 } | 243 } |
229 | 244 |
230 } // namespace net | 245 } // namespace net |
OLD | NEW |