diff --git a/atom/common/native_mate_converters/net_converter.cc b/atom/common/native_mate_converters/net_converter.cc index 59f897c8a74b..5ceb23a04b8d 100644 --- a/atom/common/native_mate_converters/net_converter.cc +++ b/atom/common/native_mate_converters/net_converter.cc @@ -59,7 +59,8 @@ v8::Local Converter>::ToV8( net::HashValue( val->CalculateFingerprint256(val->os_cert_handle())).ToString()); - if (!val->GetIntermediateCertificates().empty()) { + auto intermediates = val->GetIntermediateCertificates(); + if (!intermediates.empty()) { net::X509Certificate::OSCertHandles issuer_intermediates( val->GetIntermediateCertificates().begin() + 1, val->GetIntermediateCertificates().end()); @@ -68,6 +69,16 @@ v8::Local Converter>::ToV8( val->GetIntermediateCertificates().front(), issuer_intermediates); dict.Set("issuerCert", issuer_cert); + + std::vector intermediates_encoded; + for (size_t i = 0; i < intermediates.size(); i++) { + auto native_cert = intermediates[i]; + std::string encoded; + net::X509Certificate::GetPEMEncoded(native_cert, &encoded); + intermediates_encoded.push_back(encoded); + } + + dict.Set("intermediates", intermediates_encoded); } return dict.GetHandle();