Remove OSCertHandle typedefs, use smart pointers for CRYPTO_BUFFER ownership.

https://chromium-review.googlesource.com/c/chromium/src/+/775540
This commit is contained in:
deepak1556 2018-04-13 01:25:43 +05:30 committed by Samuel Attard
parent 77f427acc8
commit f1e2304585

View file

@ -18,6 +18,7 @@
#include "net/base/upload_element_reader.h" #include "net/base/upload_element_reader.h"
#include "net/base/upload_file_element_reader.h" #include "net/base/upload_file_element_reader.h"
#include "net/cert/x509_certificate.h" #include "net/cert/x509_certificate.h"
#include "net/cert/x509_util.h"
#include "net/http/http_response_headers.h" #include "net/http/http_response_headers.h"
#include "net/url_request/url_request.h" #include "net/url_request/url_request.h"
#include "storage/browser/blob/upload_blob_element_reader.h" #include "storage/browser/blob/upload_blob_element_reader.h"
@ -66,7 +67,7 @@ v8::Local<v8::Value> Converter<scoped_refptr<net::X509Certificate>>::ToV8(
const scoped_refptr<net::X509Certificate>& val) { const scoped_refptr<net::X509Certificate>& val) {
mate::Dictionary dict(isolate, v8::Object::New(isolate)); mate::Dictionary dict(isolate, v8::Object::New(isolate));
std::string encoded_data; std::string encoded_data;
net::X509Certificate::GetPEMEncoded(val->os_cert_handle(), &encoded_data); net::X509Certificate::GetPEMEncoded(val->cert_buffer(), &encoded_data);
dict.Set("data", encoded_data); dict.Set("data", encoded_data);
dict.Set("issuer", val->issuer()); dict.Set("issuer", val->issuer());
@ -78,16 +79,21 @@ v8::Local<v8::Value> Converter<scoped_refptr<net::X509Certificate>>::ToV8(
dict.Set("validStart", val->valid_start().ToDoubleT()); dict.Set("validStart", val->valid_start().ToDoubleT());
dict.Set("validExpiry", val->valid_expiry().ToDoubleT()); dict.Set("validExpiry", val->valid_expiry().ToDoubleT());
dict.Set("fingerprint", dict.Set("fingerprint",
net::HashValue(val->CalculateFingerprint256(val->os_cert_handle())) net::HashValue(val->CalculateFingerprint256(val->cert_buffer()))
.ToString()); .ToString());
if (!val->GetIntermediateCertificates().empty()) { const auto& intermediate_buffers = val->intermediate_buffers();
net::X509Certificate::OSCertHandles issuer_intermediates( if (!intermediate_buffers.empty()) {
val->GetIntermediateCertificates().begin() + 1, std::vector<bssl::UniquePtr<CRYPTO_BUFFER>> issuer_intermediates;
val->GetIntermediateCertificates().end()); issuer_intermediates.reserve(intermediate_buffers.size() - 1);
for (size_t i = 1; i < intermediate_buffers.size(); ++i) {
issuer_intermediates.push_back(
net::x509_util::DupCryptoBuffer(intermediate_buffers[i].get()));
}
const scoped_refptr<net::X509Certificate>& issuer_cert = const scoped_refptr<net::X509Certificate>& issuer_cert =
net::X509Certificate::CreateFromHandle( net::X509Certificate::CreateFromBuffer(
val->GetIntermediateCertificates().front(), issuer_intermediates); net::x509_util::DupCryptoBuffer(intermediate_buffers[0].get()),
std::move(issuer_intermediates));
dict.Set("issuerCert", issuer_cert); dict.Set("issuerCert", issuer_cert);
} }
@ -108,13 +114,14 @@ bool Converter<scoped_refptr<net::X509Certificate>>::FromV8(
if (!CertFromData(data, &leaf_cert)) if (!CertFromData(data, &leaf_cert))
return false; return false;
scoped_refptr<net::X509Certificate> parent; scoped_refptr<net::X509Certificate> issuer_cert;
if (dict.Get("issuerCert", &parent)) { if (dict.Get("issuerCert", &issuer_cert)) {
auto parents = std::vector<net::X509Certificate::OSCertHandle>( std::vector<bssl::UniquePtr<CRYPTO_BUFFER>> intermediates;
parent->GetIntermediateCertificates()); intermediates.push_back(
parents.insert(parents.begin(), parent->os_cert_handle()); net::x509_util::DupCryptoBuffer(issuer_cert->cert_buffer()));
auto cert = net::X509Certificate::CreateFromHandle( auto cert = net::X509Certificate::CreateFromBuffer(
leaf_cert->os_cert_handle(), parents); net::x509_util::DupCryptoBuffer(leaf_cert->cert_buffer()),
std::move(intermediates));
if (!cert) if (!cert)
return false; return false;