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

Side by Side Diff: net/cert/x509_util_mac.cc

Issue 2864133002: Convert iOS to use X509CertificateBytes. (Closed)
Patch Set: static_cast, more unittest Created 3 years, 7 months 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 unified diff | Download patch
« no previous file with comments | « net/cert/x509_util_mac.h ('k') | net/ssl/client_cert_store_mac.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/cert/x509_util_mac.h" 5 #include "net/cert/x509_util_mac.h"
6 6
7 #include <CommonCrypto/CommonDigest.h> 7 #include <CommonCrypto/CommonDigest.h>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/mac/mac_util.h" 10 #include "base/mac/mac_util.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 return CreateSecCertificateFromBytes( 85 return CreateSecCertificateFromBytes(
86 CRYPTO_BUFFER_data(cert->os_cert_handle()), 86 CRYPTO_BUFFER_data(cert->os_cert_handle()),
87 CRYPTO_BUFFER_len(cert->os_cert_handle())); 87 CRYPTO_BUFFER_len(cert->os_cert_handle()));
88 #else 88 #else
89 return base::ScopedCFTypeRef<SecCertificateRef>( 89 return base::ScopedCFTypeRef<SecCertificateRef>(
90 reinterpret_cast<SecCertificateRef>( 90 reinterpret_cast<SecCertificateRef>(
91 const_cast<void*>(CFRetain(cert->os_cert_handle())))); 91 const_cast<void*>(CFRetain(cert->os_cert_handle()))));
92 #endif 92 #endif
93 } 93 }
94 94
95 base::ScopedCFTypeRef<CFMutableArrayRef>
96 CreateSecCertificateArrayForX509Certificate(X509Certificate* cert) {
97 base::ScopedCFTypeRef<CFMutableArrayRef> cert_list(
98 CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks));
99 if (!cert_list)
100 return base::ScopedCFTypeRef<CFMutableArrayRef>();
101 #if BUILDFLAG(USE_BYTE_CERTS)
102 std::string bytes;
103 base::ScopedCFTypeRef<SecCertificateRef> sec_cert(
104 CreateSecCertificateFromBytes(CRYPTO_BUFFER_data(cert->os_cert_handle()),
105 CRYPTO_BUFFER_len(cert->os_cert_handle())));
106 if (!sec_cert)
107 return base::ScopedCFTypeRef<CFMutableArrayRef>();
108 CFArrayAppendValue(cert_list, sec_cert);
109 for (X509Certificate::OSCertHandle intermediate :
110 cert->GetIntermediateCertificates()) {
111 base::ScopedCFTypeRef<SecCertificateRef> sec_cert(
112 CreateSecCertificateFromBytes(CRYPTO_BUFFER_data(intermediate),
113 CRYPTO_BUFFER_len(intermediate)));
114 if (!sec_cert)
115 return base::ScopedCFTypeRef<CFMutableArrayRef>();
116 CFArrayAppendValue(cert_list, sec_cert);
117 }
118 #else
119 X509Certificate::OSCertHandles intermediate_ca_certs =
120 cert->GetIntermediateCertificates();
121 CFArrayAppendValue(cert_list, cert->os_cert_handle());
122 for (size_t i = 0; i < intermediate_ca_certs.size(); ++i)
123 CFArrayAppendValue(cert_list, intermediate_ca_certs[i]);
124 #endif
125 return cert_list;
126 }
127
128 scoped_refptr<X509Certificate> CreateX509CertificateFromSecCertificate( 95 scoped_refptr<X509Certificate> CreateX509CertificateFromSecCertificate(
129 SecCertificateRef sec_cert, 96 SecCertificateRef sec_cert,
130 const std::vector<SecCertificateRef>& sec_chain) { 97 const std::vector<SecCertificateRef>& sec_chain) {
131 #if BUILDFLAG(USE_BYTE_CERTS) 98 #if BUILDFLAG(USE_BYTE_CERTS)
132 CSSM_DATA der_data; 99 CSSM_DATA der_data;
133 if (!sec_cert || SecCertificateGetData(sec_cert, &der_data) != noErr) 100 if (!sec_cert || SecCertificateGetData(sec_cert, &der_data) != noErr)
134 return nullptr; 101 return nullptr;
135 bssl::UniquePtr<CRYPTO_BUFFER> cert_handle( 102 bssl::UniquePtr<CRYPTO_BUFFER> cert_handle(
136 X509Certificate::CreateOSCertHandleFromBytes( 103 X509Certificate::CreateOSCertHandleFromBytes(
137 reinterpret_cast<const char*>(der_data.Data), der_data.Length)); 104 reinterpret_cast<const char*>(der_data.Data), der_data.Length));
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 CSSM_CL_CertAbortQuery(cl_handle_, results_handle); 379 CSSM_CL_CertAbortQuery(cl_handle_, results_handle);
413 field->Reset(cl_handle_, oid, field_ptr); 380 field->Reset(cl_handle_, oid, field_ptr);
414 return CSSM_OK; 381 return CSSM_OK;
415 } 382 }
416 383
417 } // namespace x509_util 384 } // namespace x509_util
418 385
419 #pragma clang diagnostic pop // "-Wdeprecated-declarations" 386 #pragma clang diagnostic pop // "-Wdeprecated-declarations"
420 387
421 } // namespace net 388 } // namespace net
OLDNEW
« no previous file with comments | « net/cert/x509_util_mac.h ('k') | net/ssl/client_cert_store_mac.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698