| Index: chrome/browser/ui/webui/certificate_viewer_webui.cc
|
| diff --git a/chrome/browser/ui/webui/certificate_viewer_webui.cc b/chrome/browser/ui/webui/certificate_viewer_webui.cc
|
| index eebe9f1998f233476586b1521c4c6ed7cf46a842..1ab60ce8fe4fd98d068cd496b386bca0727a0359 100644
|
| --- a/chrome/browser/ui/webui/certificate_viewer_webui.cc
|
| +++ b/chrome/browser/ui/webui/certificate_viewer_webui.cc
|
| @@ -291,55 +291,74 @@
|
|
|
| net::X509Certificate::OSCertHandle cert = cert_chain_[cert_index];
|
|
|
| + base::ListValue root_list;
|
| + base::DictionaryValue* node_details;
|
| + base::DictionaryValue* alt_node_details;
|
| + base::ListValue* cert_sub_fields;
|
| + root_list.Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| + node_details->SetString("label", x509_certificate_model::GetTitle(cert));
|
| +
|
| + base::ListValue* cert_fields;
|
| + node_details->Set("children", cert_fields = new base::ListValue());
|
| + cert_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| +
|
| + node_details->SetString("label",
|
| + l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE));
|
| + node_details->Set("children", cert_fields = new base::ListValue());
|
| +
|
| // Main certificate fields.
|
| - auto cert_fields = base::MakeUnique<base::ListValue>();
|
| - auto node_details = base::MakeUnique<base::DictionaryValue>();
|
| + cert_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| node_details->SetString("label",
|
| l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VERSION));
|
| std::string version = x509_certificate_model::GetVersion(cert);
|
| - if (!version.empty()) {
|
| + if (!version.empty())
|
| node_details->SetString("payload.val",
|
| l10n_util::GetStringFUTF8(IDS_CERT_DETAILS_VERSION_FORMAT,
|
| base::UTF8ToUTF16(version)));
|
| - }
|
| - cert_fields->Append(std::move(node_details));
|
| -
|
| - node_details = base::MakeUnique<base::DictionaryValue>();
|
| +
|
| + cert_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| node_details->SetString("label",
|
| l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SERIAL_NUMBER));
|
| node_details->SetString("payload.val",
|
| x509_certificate_model::GetSerialNumberHexified(cert,
|
| l10n_util::GetStringUTF8(IDS_CERT_INFO_FIELD_NOT_PRESENT)));
|
| - cert_fields->Append(std::move(node_details));
|
| -
|
| - node_details = base::MakeUnique<base::DictionaryValue>();
|
| +
|
| + cert_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| node_details->SetString("label",
|
| l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_ALG));
|
| node_details->SetString("payload.val",
|
| x509_certificate_model::ProcessSecAlgorithmSignature(cert));
|
| - cert_fields->Append(std::move(node_details));
|
| -
|
| - node_details = base::MakeUnique<base::DictionaryValue>();
|
| +
|
| + cert_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| node_details->SetString("label",
|
| l10n_util::GetStringUTF8(IDS_CERT_DETAILS_ISSUER));
|
| node_details->SetString("payload.val",
|
| x509_certificate_model::GetIssuerName(cert));
|
| - cert_fields->Append(std::move(node_details));
|
|
|
| // Validity period.
|
| - auto cert_sub_fields = base::MakeUnique<base::ListValue>();
|
| -
|
| - auto sub_node_details = base::MakeUnique<base::DictionaryValue>();
|
| - sub_node_details->SetString(
|
| - "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_BEFORE));
|
| -
|
| - auto alt_node_details = base::MakeUnique<base::DictionaryValue>();
|
| + cert_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| + node_details->SetString("label",
|
| + l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VALIDITY));
|
| +
|
| + node_details->Set("children", cert_sub_fields = new base::ListValue());
|
| + cert_sub_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| + node_details->SetString("label",
|
| + l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_BEFORE));
|
| + cert_sub_fields->Append(
|
| + base::WrapUnique(alt_node_details = new base::DictionaryValue()));
|
| alt_node_details->SetString("label",
|
| l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_AFTER));
|
| -
|
| base::Time issued, expires;
|
| if (x509_certificate_model::GetTimes(cert, &issued, &expires)) {
|
| - sub_node_details->SetString(
|
| + node_details->SetString(
|
| "payload.val",
|
| base::UTF16ToUTF8(
|
| base::TimeFormatShortDateAndTimeWithTimeZone(issued)));
|
| @@ -348,45 +367,33 @@
|
| base::UTF16ToUTF8(
|
| base::TimeFormatShortDateAndTimeWithTimeZone(expires)));
|
| }
|
| - cert_sub_fields->Append(std::move(sub_node_details));
|
| - cert_sub_fields->Append(std::move(alt_node_details));
|
| -
|
| - node_details = base::MakeUnique<base::DictionaryValue>();
|
| - node_details->SetString("label",
|
| - l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VALIDITY));
|
| - node_details->Set("children", std::move(cert_sub_fields));
|
| - cert_fields->Append(std::move(node_details));
|
| -
|
| - node_details = base::MakeUnique<base::DictionaryValue>();
|
| +
|
| + cert_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| node_details->SetString("label",
|
| l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT));
|
| node_details->SetString("payload.val",
|
| x509_certificate_model::GetSubjectName(cert));
|
| - cert_fields->Append(std::move(node_details));
|
|
|
| // Subject key information.
|
| - cert_sub_fields = base::MakeUnique<base::ListValue>();
|
| -
|
| - sub_node_details = base::MakeUnique<base::DictionaryValue>();
|
| - sub_node_details->SetString(
|
| - "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_ALG));
|
| - sub_node_details->SetString(
|
| - "payload.val",
|
| + cert_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| + node_details->SetString("label",
|
| + l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_INFO));
|
| +
|
| + node_details->Set("children", cert_sub_fields = new base::ListValue());
|
| + cert_sub_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| + node_details->SetString("label",
|
| + l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_ALG));
|
| + node_details->SetString("payload.val",
|
| x509_certificate_model::ProcessSecAlgorithmSubjectPublicKey(cert));
|
| - cert_sub_fields->Append(std::move(sub_node_details));
|
| -
|
| - sub_node_details = base::MakeUnique<base::DictionaryValue>();
|
| - sub_node_details->SetString(
|
| - "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY));
|
| - sub_node_details->SetString(
|
| - "payload.val", x509_certificate_model::ProcessSubjectPublicKeyInfo(cert));
|
| - cert_sub_fields->Append(std::move(sub_node_details));
|
| -
|
| - node_details = base::MakeUnique<base::DictionaryValue>();
|
| - node_details->SetString(
|
| - "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_INFO));
|
| - node_details->Set("children", std::move(cert_sub_fields));
|
| - cert_fields->Append(std::move(node_details));
|
| + cert_sub_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| + node_details->SetString("label",
|
| + l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY));
|
| + node_details->SetString("payload.val",
|
| + x509_certificate_model::ProcessSubjectPublicKeyInfo(cert));
|
|
|
| // Extensions.
|
| x509_certificate_model::Extensions extensions;
|
| @@ -396,76 +403,53 @@
|
| cert, &extensions);
|
|
|
| if (!extensions.empty()) {
|
| - cert_sub_fields = base::MakeUnique<base::ListValue>();
|
| -
|
| + cert_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| + node_details->SetString("label",
|
| + l10n_util::GetStringUTF8(IDS_CERT_DETAILS_EXTENSIONS));
|
| +
|
| + node_details->Set("children", cert_sub_fields = new base::ListValue());
|
| for (x509_certificate_model::Extensions::const_iterator i =
|
| extensions.begin(); i != extensions.end(); ++i) {
|
| - sub_node_details = base::MakeUnique<base::DictionaryValue>();
|
| - sub_node_details->SetString("label", i->name);
|
| - sub_node_details->SetString("payload.val", i->value);
|
| - cert_sub_fields->Append(std::move(sub_node_details));
|
| + cert_sub_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| + node_details->SetString("label", i->name);
|
| + node_details->SetString("payload.val", i->value);
|
| }
|
| -
|
| - node_details = base::MakeUnique<base::DictionaryValue>();
|
| - node_details->SetString(
|
| - "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_EXTENSIONS));
|
| - node_details->Set("children", std::move(cert_sub_fields));
|
| - cert_fields->Append(std::move(node_details));
|
| }
|
|
|
| - // Details certificate information.
|
| - node_details = base::MakeUnique<base::DictionaryValue>();
|
| + cert_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| node_details->SetString("label",
|
| l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_ALG));
|
| node_details->SetString("payload.val",
|
| x509_certificate_model::ProcessSecAlgorithmSignatureWrap(cert));
|
| - cert_fields->Append(std::move(node_details));
|
| -
|
| - node_details = base::MakeUnique<base::DictionaryValue>();
|
| +
|
| + cert_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| node_details->SetString("label",
|
| l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_VALUE));
|
| node_details->SetString("payload.val",
|
| x509_certificate_model::ProcessRawBitsSignatureWrap(cert));
|
| - cert_fields->Append(std::move(node_details));
|
| -
|
| - // Fingerprint information.
|
| - cert_sub_fields = base::MakeUnique<base::ListValue>();
|
| -
|
| - sub_node_details = base::MakeUnique<base::DictionaryValue>();
|
| - sub_node_details->SetString(
|
| - "label",
|
| +
|
| + cert_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| + node_details->SetString("label",
|
| + l10n_util::GetStringUTF8(IDS_CERT_INFO_FINGERPRINTS_GROUP));
|
| + node_details->Set("children", cert_sub_fields = new base::ListValue());
|
| +
|
| + cert_sub_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| + node_details->SetString("label",
|
| l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA256_FINGERPRINT_LABEL));
|
| - sub_node_details->SetString("payload.val",
|
| - x509_certificate_model::HashCertSHA256(cert));
|
| - cert_sub_fields->Append(std::move(sub_node_details));
|
| -
|
| - sub_node_details = base::MakeUnique<base::DictionaryValue>();
|
| - sub_node_details->SetString(
|
| - "label", l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA1_FINGERPRINT_LABEL));
|
| - sub_node_details->SetString("payload.val",
|
| - x509_certificate_model::HashCertSHA1(cert));
|
| - cert_sub_fields->Append(std::move(sub_node_details));
|
| -
|
| - node_details = base::MakeUnique<base::DictionaryValue>();
|
| - node_details->SetString(
|
| - "label", l10n_util::GetStringUTF8(IDS_CERT_INFO_FINGERPRINTS_GROUP));
|
| - node_details->Set("children", std::move(cert_sub_fields));
|
| - cert_fields->Append(std::move(node_details));
|
| -
|
| - // Certificate information.
|
| - node_details = base::MakeUnique<base::DictionaryValue>();
|
| - node_details->SetString(
|
| - "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE));
|
| - node_details->Set("children", std::move(cert_fields));
|
| - cert_fields = base::MakeUnique<base::ListValue>();
|
| - cert_fields->Append(std::move(node_details));
|
| -
|
| - // Top level information.
|
| - base::ListValue root_list;
|
| - node_details = base::MakeUnique<base::DictionaryValue>();
|
| - node_details->SetString("label", x509_certificate_model::GetTitle(cert));
|
| - node_details->Set("children", std::move(cert_fields));
|
| - root_list.Append(std::move(node_details));
|
| + node_details->SetString("payload.val",
|
| + x509_certificate_model::HashCertSHA256(cert));
|
| + cert_sub_fields->Append(
|
| + base::WrapUnique(node_details = new base::DictionaryValue()));
|
| + node_details->SetString("label",
|
| + l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA1_FINGERPRINT_LABEL));
|
| + node_details->SetString("payload.val",
|
| + x509_certificate_model::HashCertSHA1(cert));
|
|
|
| // Send certificate information to javascript.
|
| web_ui()->CallJavascriptFunctionUnsafe("cert_viewer.getCertificateFields",
|
|
|