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

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

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 | Annotate | Revision Log
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_certificate.h" 5 #include "net/cert/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 9
10 #include <cert.h> 10 #include <cert.h>
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 fingerprint_ = CalculateFingerprint(cert_handle_); 69 fingerprint_ = CalculateFingerprint(cert_handle_);
70 ca_fingerprint_ = CalculateCAFingerprint(intermediate_ca_certs_); 70 ca_fingerprint_ = CalculateCAFingerprint(intermediate_ca_certs_);
71 } 71 }
72 72
73 bool X509Certificate::IsIssuedByEncoded( 73 bool X509Certificate::IsIssuedByEncoded(
74 const std::vector<std::string>& valid_issuers) { 74 const std::vector<std::string>& valid_issuers) {
75 x509_util_ios::NSSCertChain nss_chain(this); 75 x509_util_ios::NSSCertChain nss_chain(this);
76 // Convert to scoped CERTName* list. 76 // Convert to scoped CERTName* list.
77 std::vector<CERTName*> issuers; 77 std::vector<CERTName*> issuers;
78 crypto::ScopedPLArenaPool arena(PORT_NewArena(DER_DEFAULT_CHUNKSIZE)); 78 crypto::ScopedPLArenaPool arena(PORT_NewArena(DER_DEFAULT_CHUNKSIZE));
79 if (!x509_util::GetIssuersFromEncodedList(valid_issuers, 79 if (!x509_util::GetIssuersFromEncodedList(
80 arena.get(), 80 valid_issuers, arena.get(), &issuers)) {
81 &issuers)) {
82 return false; 81 return false;
83 } 82 }
84 return x509_util::IsCertificateIssuedBy( 83 return x509_util::IsCertificateIssuedBy(nss_chain.cert_chain(), issuers);
85 nss_chain.cert_chain(), issuers);
86 } 84 }
87 85
88 void X509Certificate::GetSubjectAltName( 86 void X509Certificate::GetSubjectAltName(
89 std::vector<std::string>* dns_names, 87 std::vector<std::string>* dns_names,
90 std::vector<std::string>* ip_addrs) const { 88 std::vector<std::string>* ip_addrs) const {
91 x509_util_ios::NSSCertificate nss_cert(cert_handle_); 89 x509_util_ios::NSSCertificate nss_cert(cert_handle_);
92 CERTCertificate* cert_handle = nss_cert.cert_handle(); 90 CERTCertificate* cert_handle = nss_cert.cert_handle();
93 if (!cert_handle) { 91 if (!cert_handle) {
94 if (dns_names) 92 if (dns_names)
95 dns_names->clear(); 93 dns_names->clear();
(...skipping 20 matching lines...) Expand all
116 X509Certificate::OSCertHandle b) { 114 X509Certificate::OSCertHandle b) {
117 DCHECK(a && b); 115 DCHECK(a && b);
118 if (a == b) 116 if (a == b)
119 return true; 117 return true;
120 if (CFEqual(a, b)) 118 if (CFEqual(a, b))
121 return true; 119 return true;
122 ScopedCFTypeRef<CFDataRef> a_data(SecCertificateCopyData(a)); 120 ScopedCFTypeRef<CFDataRef> a_data(SecCertificateCopyData(a));
123 ScopedCFTypeRef<CFDataRef> b_data(SecCertificateCopyData(b)); 121 ScopedCFTypeRef<CFDataRef> b_data(SecCertificateCopyData(b));
124 return a_data && b_data && 122 return a_data && b_data &&
125 CFDataGetLength(a_data) == CFDataGetLength(b_data) && 123 CFDataGetLength(a_data) == CFDataGetLength(b_data) &&
126 memcmp(CFDataGetBytePtr(a_data), CFDataGetBytePtr(b_data), 124 memcmp(CFDataGetBytePtr(a_data),
125 CFDataGetBytePtr(b_data),
127 CFDataGetLength(a_data)) == 0; 126 CFDataGetLength(a_data)) == 0;
128 } 127 }
129 128
130 // static 129 // static
131 X509Certificate::OSCertHandle X509Certificate::CreateOSCertHandleFromBytes( 130 X509Certificate::OSCertHandle X509Certificate::CreateOSCertHandleFromBytes(
132 const char* data, int length) { 131 const char* data,
133 ScopedCFTypeRef<CFDataRef> cert_data(CFDataCreateWithBytesNoCopy( 132 int length) {
134 kCFAllocatorDefault, reinterpret_cast<const UInt8 *>(data), length, 133 ScopedCFTypeRef<CFDataRef> cert_data(
135 kCFAllocatorNull)); 134 CFDataCreateWithBytesNoCopy(kCFAllocatorDefault,
135 reinterpret_cast<const UInt8*>(data),
136 length,
137 kCFAllocatorNull));
136 if (!cert_data) 138 if (!cert_data)
137 return NULL; 139 return NULL;
138 OSCertHandle cert_handle = SecCertificateCreateWithData(NULL, cert_data); 140 OSCertHandle cert_handle = SecCertificateCreateWithData(NULL, cert_data);
139 if (!cert_handle) 141 if (!cert_handle)
140 return NULL; 142 return NULL;
141 if (!IsValidOSCertHandle(cert_handle)) { 143 if (!IsValidOSCertHandle(cert_handle)) {
142 CFRelease(cert_handle); 144 CFRelease(cert_handle);
143 return NULL; 145 return NULL;
144 } 146 }
145 return cert_handle; 147 return cert_handle;
(...skipping 14 matching lines...) Expand all
160 return NULL; 162 return NULL;
161 return reinterpret_cast<OSCertHandle>(const_cast<void*>(CFRetain(handle))); 163 return reinterpret_cast<OSCertHandle>(const_cast<void*>(CFRetain(handle)));
162 } 164 }
163 165
164 // static 166 // static
165 void X509Certificate::FreeOSCertHandle(OSCertHandle cert_handle) { 167 void X509Certificate::FreeOSCertHandle(OSCertHandle cert_handle) {
166 CFRelease(cert_handle); 168 CFRelease(cert_handle);
167 } 169 }
168 170
169 // static 171 // static
170 SHA1HashValue X509Certificate::CalculateFingerprint( 172 SHA1HashValue X509Certificate::CalculateFingerprint(OSCertHandle cert) {
171 OSCertHandle cert) {
172 SHA1HashValue sha1; 173 SHA1HashValue sha1;
173 memset(sha1.data, 0, sizeof(sha1.data)); 174 memset(sha1.data, 0, sizeof(sha1.data));
174 175
175 ScopedCFTypeRef<CFDataRef> cert_data(SecCertificateCopyData(cert)); 176 ScopedCFTypeRef<CFDataRef> cert_data(SecCertificateCopyData(cert));
176 if (!cert_data) 177 if (!cert_data)
177 return sha1; 178 return sha1;
178 DCHECK(CFDataGetBytePtr(cert_data)); 179 DCHECK(CFDataGetBytePtr(cert_data));
179 DCHECK_NE(0, CFDataGetLength(cert_data)); 180 DCHECK_NE(0, CFDataGetLength(cert_data));
180 CC_SHA1(CFDataGetBytePtr(cert_data), CFDataGetLength(cert_data), sha1.data); 181 CC_SHA1(CFDataGetBytePtr(cert_data), CFDataGetLength(cert_data), sha1.data);
181 182
182 return sha1; 183 return sha1;
183 } 184 }
184 185
185 // static 186 // static
186 SHA1HashValue X509Certificate::CalculateCAFingerprint( 187 SHA1HashValue X509Certificate::CalculateCAFingerprint(
187 const OSCertHandles& intermediates) { 188 const OSCertHandles& intermediates) {
188 SHA1HashValue sha1; 189 SHA1HashValue sha1;
189 memset(sha1.data, 0, sizeof(sha1.data)); 190 memset(sha1.data, 0, sizeof(sha1.data));
190 191
191 // The CC_SHA(3cc) man page says all CC_SHA1_xxx routines return 1, so 192 // The CC_SHA(3cc) man page says all CC_SHA1_xxx routines return 1, so
192 // we don't check their return values. 193 // we don't check their return values.
193 CC_SHA1_CTX sha1_ctx; 194 CC_SHA1_CTX sha1_ctx;
194 CC_SHA1_Init(&sha1_ctx); 195 CC_SHA1_Init(&sha1_ctx);
195 for (size_t i = 0; i < intermediates.size(); ++i) { 196 for (size_t i = 0; i < intermediates.size(); ++i) {
196 ScopedCFTypeRef<CFDataRef> 197 ScopedCFTypeRef<CFDataRef> cert_data(
197 cert_data(SecCertificateCopyData(intermediates[i])); 198 SecCertificateCopyData(intermediates[i]));
198 if (!cert_data) 199 if (!cert_data)
199 return sha1; 200 return sha1;
200 CC_SHA1_Update(&sha1_ctx, 201 CC_SHA1_Update(
201 CFDataGetBytePtr(cert_data), 202 &sha1_ctx, CFDataGetBytePtr(cert_data), CFDataGetLength(cert_data));
202 CFDataGetLength(cert_data));
203 } 203 }
204 CC_SHA1_Final(sha1.data, &sha1_ctx); 204 CC_SHA1_Final(sha1.data, &sha1_ctx);
205 return sha1; 205 return sha1;
206 } 206 }
207 207
208 // static 208 // static
209 X509Certificate::OSCertHandle 209 X509Certificate::OSCertHandle X509Certificate::ReadOSCertHandleFromPickle(
210 X509Certificate::ReadOSCertHandleFromPickle(PickleIterator* pickle_iter) { 210 PickleIterator* pickle_iter) {
211 return x509_util::ReadOSCertHandleFromPickle(pickle_iter); 211 return x509_util::ReadOSCertHandleFromPickle(pickle_iter);
212 } 212 }
213 213
214 // static 214 // static
215 bool X509Certificate::WriteOSCertHandleToPickle(OSCertHandle cert_handle, 215 bool X509Certificate::WriteOSCertHandleToPickle(OSCertHandle cert_handle,
216 Pickle* pickle) { 216 Pickle* pickle) {
217 ScopedCFTypeRef<CFDataRef> cert_data(SecCertificateCopyData(cert_handle)); 217 ScopedCFTypeRef<CFDataRef> cert_data(SecCertificateCopyData(cert_handle));
218 if (!cert_data) 218 if (!cert_data)
219 return false; 219 return false;
220 220
221 return pickle->WriteData( 221 return pickle->WriteData(
222 reinterpret_cast<const char*>(CFDataGetBytePtr(cert_data)), 222 reinterpret_cast<const char*>(CFDataGetBytePtr(cert_data)),
223 CFDataGetLength(cert_data)); 223 CFDataGetLength(cert_data));
224 } 224 }
225 225
226 // static 226 // static
227 void X509Certificate::GetPublicKeyInfo(OSCertHandle cert_handle, 227 void X509Certificate::GetPublicKeyInfo(OSCertHandle cert_handle,
228 size_t* size_bits, 228 size_t* size_bits,
229 PublicKeyType* type) { 229 PublicKeyType* type) {
230 x509_util_ios::NSSCertificate nss_cert(cert_handle); 230 x509_util_ios::NSSCertificate nss_cert(cert_handle);
231 x509_util::GetPublicKeyInfo(nss_cert.cert_handle(), size_bits, type); 231 x509_util::GetPublicKeyInfo(nss_cert.cert_handle(), size_bits, type);
232 } 232 }
233 233
234 } // namespace net 234 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698