| 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/cert/x509_certificate.h" | 5 #include "net/cert/x509_certificate.h" |
| 6 | 6 |
| 7 #include <stdlib.h> | 7 #include <stdlib.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <map> | 10 #include <map> |
| (...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 658 return VerifyHostname(hostname, subject_.common_name, dns_names, ip_addrs, | 658 return VerifyHostname(hostname, subject_.common_name, dns_names, ip_addrs, |
| 659 common_name_fallback_used); | 659 common_name_fallback_used); |
| 660 } | 660 } |
| 661 | 661 |
| 662 // static | 662 // static |
| 663 bool X509Certificate::GetPEMEncodedFromDER(const std::string& der_encoded, | 663 bool X509Certificate::GetPEMEncodedFromDER(const std::string& der_encoded, |
| 664 std::string* pem_encoded) { | 664 std::string* pem_encoded) { |
| 665 if (der_encoded.empty()) | 665 if (der_encoded.empty()) |
| 666 return false; | 666 return false; |
| 667 std::string b64_encoded; | 667 std::string b64_encoded; |
| 668 if (!base::Base64Encode(der_encoded, &b64_encoded) || b64_encoded.empty()) | 668 base::Base64Encode(der_encoded, &b64_encoded); |
| 669 return false; | |
| 670 *pem_encoded = "-----BEGIN CERTIFICATE-----\n"; | 669 *pem_encoded = "-----BEGIN CERTIFICATE-----\n"; |
| 671 | 670 |
| 672 // Divide the Base-64 encoded data into 64-character chunks, as per | 671 // Divide the Base-64 encoded data into 64-character chunks, as per |
| 673 // 4.3.2.4 of RFC 1421. | 672 // 4.3.2.4 of RFC 1421. |
| 674 static const size_t kChunkSize = 64; | 673 static const size_t kChunkSize = 64; |
| 675 size_t chunks = (b64_encoded.size() + (kChunkSize - 1)) / kChunkSize; | 674 size_t chunks = (b64_encoded.size() + (kChunkSize - 1)) / kChunkSize; |
| 676 for (size_t i = 0, chunk_offset = 0; i < chunks; | 675 for (size_t i = 0, chunk_offset = 0; i < chunks; |
| 677 ++i, chunk_offset += kChunkSize) { | 676 ++i, chunk_offset += kChunkSize) { |
| 678 pem_encoded->append(b64_encoded, chunk_offset, kChunkSize); | 677 pem_encoded->append(b64_encoded, chunk_offset, kChunkSize); |
| 679 pem_encoded->append("\n"); | 678 pem_encoded->append("\n"); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 729 RemoveFromCache(cert_handle_); | 728 RemoveFromCache(cert_handle_); |
| 730 FreeOSCertHandle(cert_handle_); | 729 FreeOSCertHandle(cert_handle_); |
| 731 } | 730 } |
| 732 for (size_t i = 0; i < intermediate_ca_certs_.size(); ++i) { | 731 for (size_t i = 0; i < intermediate_ca_certs_.size(); ++i) { |
| 733 RemoveFromCache(intermediate_ca_certs_[i]); | 732 RemoveFromCache(intermediate_ca_certs_[i]); |
| 734 FreeOSCertHandle(intermediate_ca_certs_[i]); | 733 FreeOSCertHandle(intermediate_ca_certs_[i]); |
| 735 } | 734 } |
| 736 } | 735 } |
| 737 | 736 |
| 738 } // namespace net | 737 } // namespace net |
| OLD | NEW |