Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Side by Side Diff: chrome/browser/ui/webui/certificate_viewer_webui.cc

Issue 2740143002: Change base::Value::ListStorage to std::vector<base::Value> (Closed)
Patch Set: Rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "chrome/browser/ui/webui/certificate_viewer_webui.h" 5 #include "chrome/browser/ui/webui/certificate_viewer_webui.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 } 284 }
285 285
286 void CertificateViewerDialogHandler::RequestCertificateFields( 286 void CertificateViewerDialogHandler::RequestCertificateFields(
287 const base::ListValue* args) { 287 const base::ListValue* args) {
288 int cert_index = GetCertificateIndex(args); 288 int cert_index = GetCertificateIndex(args);
289 if (cert_index < 0) 289 if (cert_index < 0)
290 return; 290 return;
291 291
292 net::X509Certificate::OSCertHandle cert = cert_chain_[cert_index]; 292 net::X509Certificate::OSCertHandle cert = cert_chain_[cert_index];
293 293
294 base::ListValue root_list;
295 base::DictionaryValue* node_details;
296 base::DictionaryValue* alt_node_details;
297 base::ListValue* cert_sub_fields;
298 root_list.Append(
299 base::WrapUnique(node_details = new base::DictionaryValue()));
300 node_details->SetString("label", x509_certificate_model::GetTitle(cert));
301
302 base::ListValue* cert_fields;
303 node_details->Set("children", cert_fields = new base::ListValue());
304 cert_fields->Append(
305 base::WrapUnique(node_details = new base::DictionaryValue()));
306
307 node_details->SetString("label",
308 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE));
309 node_details->Set("children", cert_fields = new base::ListValue());
310
311 // Main certificate fields. 294 // Main certificate fields.
312 cert_fields->Append( 295 auto cert_fields = base::MakeUnique<base::ListValue>();
313 base::WrapUnique(node_details = new base::DictionaryValue())); 296 auto node_details = base::MakeUnique<base::DictionaryValue>();
314 node_details->SetString("label", 297 node_details->SetString("label",
315 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VERSION)); 298 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VERSION));
316 std::string version = x509_certificate_model::GetVersion(cert); 299 std::string version = x509_certificate_model::GetVersion(cert);
317 if (!version.empty()) 300 if (!version.empty()) {
318 node_details->SetString("payload.val", 301 node_details->SetString("payload.val",
319 l10n_util::GetStringFUTF8(IDS_CERT_DETAILS_VERSION_FORMAT, 302 l10n_util::GetStringFUTF8(IDS_CERT_DETAILS_VERSION_FORMAT,
320 base::UTF8ToUTF16(version))); 303 base::UTF8ToUTF16(version)));
304 }
305 cert_fields->Append(std::move(node_details));
321 306
322 cert_fields->Append( 307 node_details = base::MakeUnique<base::DictionaryValue>();
323 base::WrapUnique(node_details = new base::DictionaryValue()));
324 node_details->SetString("label", 308 node_details->SetString("label",
325 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SERIAL_NUMBER)); 309 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SERIAL_NUMBER));
326 node_details->SetString("payload.val", 310 node_details->SetString("payload.val",
327 x509_certificate_model::GetSerialNumberHexified(cert, 311 x509_certificate_model::GetSerialNumberHexified(cert,
328 l10n_util::GetStringUTF8(IDS_CERT_INFO_FIELD_NOT_PRESENT))); 312 l10n_util::GetStringUTF8(IDS_CERT_INFO_FIELD_NOT_PRESENT)));
313 cert_fields->Append(std::move(node_details));
329 314
330 cert_fields->Append( 315 node_details = base::MakeUnique<base::DictionaryValue>();
331 base::WrapUnique(node_details = new base::DictionaryValue()));
332 node_details->SetString("label", 316 node_details->SetString("label",
333 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_ALG)); 317 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_ALG));
334 node_details->SetString("payload.val", 318 node_details->SetString("payload.val",
335 x509_certificate_model::ProcessSecAlgorithmSignature(cert)); 319 x509_certificate_model::ProcessSecAlgorithmSignature(cert));
320 cert_fields->Append(std::move(node_details));
336 321
337 cert_fields->Append( 322 node_details = base::MakeUnique<base::DictionaryValue>();
338 base::WrapUnique(node_details = new base::DictionaryValue()));
339 node_details->SetString("label", 323 node_details->SetString("label",
340 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_ISSUER)); 324 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_ISSUER));
341 node_details->SetString("payload.val", 325 node_details->SetString("payload.val",
342 x509_certificate_model::GetIssuerName(cert)); 326 x509_certificate_model::GetIssuerName(cert));
327 cert_fields->Append(std::move(node_details));
343 328
344 // Validity period. 329 // Validity period.
345 cert_fields->Append( 330 auto cert_sub_fields = base::MakeUnique<base::ListValue>();
346 base::WrapUnique(node_details = new base::DictionaryValue()));
347 node_details->SetString("label",
348 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VALIDITY));
349 331
350 node_details->Set("children", cert_sub_fields = new base::ListValue()); 332 auto sub_node_details = base::MakeUnique<base::DictionaryValue>();
351 cert_sub_fields->Append( 333 sub_node_details->SetString(
352 base::WrapUnique(node_details = new base::DictionaryValue())); 334 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_BEFORE));
353 node_details->SetString("label", 335
354 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_BEFORE)); 336 auto alt_node_details = base::MakeUnique<base::DictionaryValue>();
355 cert_sub_fields->Append(
356 base::WrapUnique(alt_node_details = new base::DictionaryValue()));
357 alt_node_details->SetString("label", 337 alt_node_details->SetString("label",
358 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_AFTER)); 338 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_AFTER));
339
359 base::Time issued, expires; 340 base::Time issued, expires;
360 if (x509_certificate_model::GetTimes(cert, &issued, &expires)) { 341 if (x509_certificate_model::GetTimes(cert, &issued, &expires)) {
361 node_details->SetString( 342 sub_node_details->SetString(
362 "payload.val", 343 "payload.val",
363 base::UTF16ToUTF8( 344 base::UTF16ToUTF8(
364 base::TimeFormatShortDateAndTimeWithTimeZone(issued))); 345 base::TimeFormatShortDateAndTimeWithTimeZone(issued)));
365 alt_node_details->SetString( 346 alt_node_details->SetString(
366 "payload.val", 347 "payload.val",
367 base::UTF16ToUTF8( 348 base::UTF16ToUTF8(
368 base::TimeFormatShortDateAndTimeWithTimeZone(expires))); 349 base::TimeFormatShortDateAndTimeWithTimeZone(expires)));
369 } 350 }
351 cert_sub_fields->Append(std::move(sub_node_details));
352 cert_sub_fields->Append(std::move(alt_node_details));
370 353
371 cert_fields->Append( 354 node_details = base::MakeUnique<base::DictionaryValue>();
372 base::WrapUnique(node_details = new base::DictionaryValue())); 355 node_details->SetString("label",
356 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VALIDITY));
357 node_details->Set("children", std::move(cert_sub_fields));
358 cert_fields->Append(std::move(node_details));
359
360 node_details = base::MakeUnique<base::DictionaryValue>();
373 node_details->SetString("label", 361 node_details->SetString("label",
374 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT)); 362 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT));
375 node_details->SetString("payload.val", 363 node_details->SetString("payload.val",
376 x509_certificate_model::GetSubjectName(cert)); 364 x509_certificate_model::GetSubjectName(cert));
365 cert_fields->Append(std::move(node_details));
377 366
378 // Subject key information. 367 // Subject key information.
379 cert_fields->Append( 368 cert_sub_fields = base::MakeUnique<base::ListValue>();
380 base::WrapUnique(node_details = new base::DictionaryValue()));
381 node_details->SetString("label",
382 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_INFO));
383 369
384 node_details->Set("children", cert_sub_fields = new base::ListValue()); 370 sub_node_details = base::MakeUnique<base::DictionaryValue>();
385 cert_sub_fields->Append( 371 sub_node_details->SetString(
386 base::WrapUnique(node_details = new base::DictionaryValue())); 372 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_ALG));
387 node_details->SetString("label", 373 sub_node_details->SetString(
388 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_ALG)); 374 "payload.val",
389 node_details->SetString("payload.val",
390 x509_certificate_model::ProcessSecAlgorithmSubjectPublicKey(cert)); 375 x509_certificate_model::ProcessSecAlgorithmSubjectPublicKey(cert));
391 cert_sub_fields->Append( 376 cert_sub_fields->Append(std::move(sub_node_details));
392 base::WrapUnique(node_details = new base::DictionaryValue())); 377
393 node_details->SetString("label", 378 sub_node_details = base::MakeUnique<base::DictionaryValue>();
394 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY)); 379 sub_node_details->SetString(
395 node_details->SetString("payload.val", 380 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY));
396 x509_certificate_model::ProcessSubjectPublicKeyInfo(cert)); 381 sub_node_details->SetString(
382 "payload.val", x509_certificate_model::ProcessSubjectPublicKeyInfo(cert));
383 cert_sub_fields->Append(std::move(sub_node_details));
384
385 node_details = base::MakeUnique<base::DictionaryValue>();
386 node_details->SetString(
387 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_INFO));
388 node_details->Set("children", std::move(cert_sub_fields));
389 cert_fields->Append(std::move(node_details));
397 390
398 // Extensions. 391 // Extensions.
399 x509_certificate_model::Extensions extensions; 392 x509_certificate_model::Extensions extensions;
400 x509_certificate_model::GetExtensions( 393 x509_certificate_model::GetExtensions(
401 l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_CRITICAL), 394 l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_CRITICAL),
402 l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_NON_CRITICAL), 395 l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_NON_CRITICAL),
403 cert, &extensions); 396 cert, &extensions);
404 397
405 if (!extensions.empty()) { 398 if (!extensions.empty()) {
406 cert_fields->Append( 399 cert_sub_fields = base::MakeUnique<base::ListValue>();
407 base::WrapUnique(node_details = new base::DictionaryValue()));
408 node_details->SetString("label",
409 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_EXTENSIONS));
410 400
411 node_details->Set("children", cert_sub_fields = new base::ListValue());
412 for (x509_certificate_model::Extensions::const_iterator i = 401 for (x509_certificate_model::Extensions::const_iterator i =
413 extensions.begin(); i != extensions.end(); ++i) { 402 extensions.begin(); i != extensions.end(); ++i) {
414 cert_sub_fields->Append( 403 sub_node_details = base::MakeUnique<base::DictionaryValue>();
415 base::WrapUnique(node_details = new base::DictionaryValue())); 404 sub_node_details->SetString("label", i->name);
416 node_details->SetString("label", i->name); 405 sub_node_details->SetString("payload.val", i->value);
417 node_details->SetString("payload.val", i->value); 406 cert_sub_fields->Append(std::move(sub_node_details));
418 } 407 }
408
409 node_details = base::MakeUnique<base::DictionaryValue>();
410 node_details->SetString(
411 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_EXTENSIONS));
412 node_details->Set("children", std::move(cert_sub_fields));
413 cert_fields->Append(std::move(node_details));
419 } 414 }
420 415
421 cert_fields->Append( 416 // Details certificate information.
422 base::WrapUnique(node_details = new base::DictionaryValue())); 417 node_details = base::MakeUnique<base::DictionaryValue>();
423 node_details->SetString("label", 418 node_details->SetString("label",
424 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_ALG)); 419 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_ALG));
425 node_details->SetString("payload.val", 420 node_details->SetString("payload.val",
426 x509_certificate_model::ProcessSecAlgorithmSignatureWrap(cert)); 421 x509_certificate_model::ProcessSecAlgorithmSignatureWrap(cert));
422 cert_fields->Append(std::move(node_details));
427 423
428 cert_fields->Append( 424 node_details = base::MakeUnique<base::DictionaryValue>();
429 base::WrapUnique(node_details = new base::DictionaryValue()));
430 node_details->SetString("label", 425 node_details->SetString("label",
431 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_VALUE)); 426 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_VALUE));
432 node_details->SetString("payload.val", 427 node_details->SetString("payload.val",
433 x509_certificate_model::ProcessRawBitsSignatureWrap(cert)); 428 x509_certificate_model::ProcessRawBitsSignatureWrap(cert));
429 cert_fields->Append(std::move(node_details));
434 430
435 cert_fields->Append( 431 // Fingerprint information.
436 base::WrapUnique(node_details = new base::DictionaryValue())); 432 cert_sub_fields = base::MakeUnique<base::ListValue>();
437 node_details->SetString("label",
438 l10n_util::GetStringUTF8(IDS_CERT_INFO_FINGERPRINTS_GROUP));
439 node_details->Set("children", cert_sub_fields = new base::ListValue());
440 433
441 cert_sub_fields->Append( 434 sub_node_details = base::MakeUnique<base::DictionaryValue>();
442 base::WrapUnique(node_details = new base::DictionaryValue())); 435 sub_node_details->SetString(
443 node_details->SetString("label", 436 "label",
444 l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA256_FINGERPRINT_LABEL)); 437 l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA256_FINGERPRINT_LABEL));
445 node_details->SetString("payload.val", 438 sub_node_details->SetString("payload.val",
446 x509_certificate_model::HashCertSHA256(cert)); 439 x509_certificate_model::HashCertSHA256(cert));
447 cert_sub_fields->Append( 440 cert_sub_fields->Append(std::move(sub_node_details));
448 base::WrapUnique(node_details = new base::DictionaryValue())); 441
449 node_details->SetString("label", 442 sub_node_details = base::MakeUnique<base::DictionaryValue>();
450 l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA1_FINGERPRINT_LABEL)); 443 sub_node_details->SetString(
451 node_details->SetString("payload.val", 444 "label", l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA1_FINGERPRINT_LABEL));
452 x509_certificate_model::HashCertSHA1(cert)); 445 sub_node_details->SetString("payload.val",
446 x509_certificate_model::HashCertSHA1(cert));
447 cert_sub_fields->Append(std::move(sub_node_details));
448
449 node_details = base::MakeUnique<base::DictionaryValue>();
450 node_details->SetString(
451 "label", l10n_util::GetStringUTF8(IDS_CERT_INFO_FINGERPRINTS_GROUP));
452 node_details->Set("children", std::move(cert_sub_fields));
453 cert_fields->Append(std::move(node_details));
454
455 // Certificate information.
456 node_details = base::MakeUnique<base::DictionaryValue>();
457 node_details->SetString(
458 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE));
459 node_details->Set("children", std::move(cert_fields));
460 cert_fields = base::MakeUnique<base::ListValue>();
461 cert_fields->Append(std::move(node_details));
462
463 // Top level information.
464 base::ListValue root_list;
465 node_details = base::MakeUnique<base::DictionaryValue>();
466 node_details->SetString("label", x509_certificate_model::GetTitle(cert));
467 node_details->Set("children", std::move(cert_fields));
468 root_list.Append(std::move(node_details));
453 469
454 // Send certificate information to javascript. 470 // Send certificate information to javascript.
455 web_ui()->CallJavascriptFunctionUnsafe("cert_viewer.getCertificateFields", 471 web_ui()->CallJavascriptFunctionUnsafe("cert_viewer.getCertificateFields",
456 root_list); 472 root_list);
457 } 473 }
458 474
459 int CertificateViewerDialogHandler::GetCertificateIndex( 475 int CertificateViewerDialogHandler::GetCertificateIndex(
460 const base::ListValue* args) const { 476 const base::ListValue* args) const {
461 int cert_index; 477 int cert_index;
462 double val; 478 double val;
463 if (!(args->GetDouble(0, &val))) 479 if (!(args->GetDouble(0, &val)))
464 return -1; 480 return -1;
465 cert_index = static_cast<int>(val); 481 cert_index = static_cast<int>(val);
466 if (cert_index < 0 || cert_index >= static_cast<int>(cert_chain_.size())) 482 if (cert_index < 0 || cert_index >= static_cast<int>(cert_chain_.size()))
467 return -1; 483 return -1;
468 return cert_index; 484 return cert_index;
469 } 485 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698