Skip to content

Commit

Permalink
Fix of:
Browse files Browse the repository at this point in the history
SHA-1: ea828bd
Event on webview invoked when SSL state changes.
-sslchange event on webview invoked when SSL state changed.
  • Loading branch information
janRucka committed Dec 13, 2016
1 parent 8ff1c40 commit 97a387e
Showing 1 changed file with 25 additions and 29 deletions.
54 changes: 25 additions & 29 deletions extensions/browser/guest_view/web_view/web_view_guest.cc
Expand Up @@ -68,7 +68,7 @@
#include "ui/events/keycodes/keyboard_codes.h"
#include "url/url_constants.h"

#include "content/browser/cert_store_impl.h"
#include "content/public/browser/ssl_status.h"
#include "net/cert/x509_certificate.h"

using base::UserMetricsAction;
Expand Down Expand Up @@ -1423,35 +1423,31 @@ void WebViewGuest::VisibleSSLStateChanged(const content::WebContents* source) {
dict->SetInteger("status", web_contents()->GetController().GetActiveEntry()->GetSSL().cert_status);
dict->SetInteger("security_style", web_contents()->GetController().GetActiveEntry()->GetSSL().security_style);

int certId = web_contents()->GetController().GetActiveEntry()->GetSSL().cert_id;
if (certId) {
content::CertStoreImpl* certStore = content::CertStoreImpl::GetInstance();
scoped_refptr<net::X509Certificate> cert;
certStore->RetrieveCert(certId, &cert);

dict->SetString("issuer.common_name", cert->issuer().common_name);
dict->SetString("issuer.country_name", cert->issuer().country_name);
dict->SetString("issuer.locality_name", cert->issuer().locality_name);
dict->Set("issuer.street_addresses", ListValue_FromStringArray(cert->issuer().street_addresses));
dict->Set("issuer.domain_components", ListValue_FromStringArray(cert->issuer().domain_components));
dict->Set("issuer.organization_names", ListValue_FromStringArray(cert->issuer().organization_names));
dict->Set("issuer.organization_unit_names", ListValue_FromStringArray(cert->issuer().organization_unit_names));
dict->SetString("subject.common_name", cert->subject().common_name);
dict->SetString("subject.country_name", cert->subject().country_name);
dict->SetString("subject.locality_name", cert->subject().locality_name);
dict->Set("subject.street_addresses", ListValue_FromStringArray(cert->subject().street_addresses));
dict->Set("subject.domain_components", ListValue_FromStringArray(cert->subject().domain_components));
dict->Set("subject.organization_names", ListValue_FromStringArray(cert->subject().organization_names));
dict->Set("subject.organization_unit_names", ListValue_FromStringArray(cert->subject().organization_unit_names));
dict->SetString("fingerprint", base::HexEncode(cert->CalculateFingerprint256(cert->os_cert_handle()).data, sizeof(net::SHA1HashValue)));
}
scoped_refptr<net::X509Certificate> cert = web_contents()->GetController().GetActiveEntry()->GetSSL().certificate;
if (!!cert) {
dict->SetString("issuer.common_name", cert->issuer().common_name);
dict->SetString("issuer.country_name", cert->issuer().country_name);
dict->SetString("issuer.locality_name", cert->issuer().locality_name);
dict->Set("issuer.street_addresses", ListValue_FromStringArray(cert->issuer().street_addresses));
dict->Set("issuer.domain_components", ListValue_FromStringArray(cert->issuer().domain_components));
dict->Set("issuer.organization_names", ListValue_FromStringArray(cert->issuer().organization_names));
dict->Set("issuer.organization_unit_names", ListValue_FromStringArray(cert->issuer().organization_unit_names));
dict->SetString("subject.common_name", cert->subject().common_name);
dict->SetString("subject.country_name", cert->subject().country_name);
dict->SetString("subject.locality_name", cert->subject().locality_name);
dict->Set("subject.street_addresses", ListValue_FromStringArray(cert->subject().street_addresses));
dict->Set("subject.domain_components", ListValue_FromStringArray(cert->subject().domain_components));
dict->Set("subject.organization_names", ListValue_FromStringArray(cert->subject().organization_names));
dict->Set("subject.organization_unit_names", ListValue_FromStringArray(cert->subject().organization_unit_names));
dict->SetString("fingerprint", base::HexEncode(cert->CalculateFingerprint256(cert->os_cert_handle()).data, sizeof(net::SHA1HashValue)));
}

base::ListValue* certificateInfo = new base::ListValue();
certificateInfo->Append(dict);
std::unique_ptr<base::DictionaryValue> args(new base::DictionaryValue());
args->Set(webview::kCertificate, certificateInfo);
DispatchEventToView(base::MakeUnique<GuestViewEvent>(
webview::kEventSSLChange, std::move(args)));
base::ListValue* certificateInfo = new base::ListValue();
certificateInfo->Append(dict);
std::unique_ptr<base::DictionaryValue> args(new base::DictionaryValue());
args->Set(webview::kCertificate, certificateInfo);
DispatchEventToView(base::MakeUnique<GuestViewEvent>(
webview::kEventSSLChange, std::move(args)));
}

void WebViewGuest::LoadURLWithParams(
Expand Down

0 comments on commit 97a387e

Please sign in to comment.