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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js

Issue 1772603002: Addition of Certificate Transparency details to Security panel of DevTools (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: removed some unnecessary includes and fixed order in net.gypi Created 4 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 /** 5 /**
6 * @constructor 6 * @constructor
7 * @extends {WebInspector.PanelWithSidebar} 7 * @extends {WebInspector.PanelWithSidebar}
8 * @implements {WebInspector.TargetManager.Observer} 8 * @implements {WebInspector.TargetManager.Observer}
9 */ 9 */
10 WebInspector.SecurityPanel = function() 10 WebInspector.SecurityPanel = function()
(...skipping 763 matching lines...) Expand 10 before | Expand all | Expand 10 after
774 var table = new WebInspector.SecurityDetailsTable(); 774 var table = new WebInspector.SecurityDetailsTable();
775 connectionSection.appendChild(table.element()); 775 connectionSection.appendChild(table.element());
776 table.addRow("Protocol", originState.securityDetails.protocol); 776 table.addRow("Protocol", originState.securityDetails.protocol);
777 table.addRow("Key Exchange", originState.securityDetails.keyExchange); 777 table.addRow("Key Exchange", originState.securityDetails.keyExchange);
778 table.addRow("Cipher Suite", originState.securityDetails.cipher + (origi nState.securityDetails.mac ? " with " + originState.securityDetails.mac : "")); 778 table.addRow("Cipher Suite", originState.securityDetails.cipher + (origi nState.securityDetails.mac ? " with " + originState.securityDetails.mac : ""));
779 779
780 // Create the certificate section outside the callback, so that it appea rs in the right place. 780 // Create the certificate section outside the callback, so that it appea rs in the right place.
781 var certificateSection = this.element.createChild("div", "origin-view-se ction"); 781 var certificateSection = this.element.createChild("div", "origin-view-se ction");
782 certificateSection.createChild("div", "origin-view-section-title").textC ontent = WebInspector.UIString("Certificate"); 782 certificateSection.createChild("div", "origin-view-section-title").textC ontent = WebInspector.UIString("Certificate");
783 783
784 if (originState.securityDetails.signedCertificateTimestampList.length > 0) {
785 // Create the Certificate Transparency section outside the callback, so that it appears in the right place.
786 var sctSection = this.element.createChild("div", "origin-view-sectio n");
787 sctSection.createChild("div", "origin-view-section-title").textConte nt = WebInspector.UIString("Certificate Transparency");
788 }
789
784 /** 790 /**
785 * @this {WebInspector.SecurityOriginView} 791 * @this {WebInspector.SecurityOriginView}
786 * @param {?NetworkAgent.CertificateDetails} certificateDetails 792 * @param {?NetworkAgent.CertificateDetails} certificateDetails
787 */ 793 */
788 function displayCertificateDetails(certificateDetails) 794 function displayCertificateDetails(certificateDetails)
789 { 795 {
790 var sanDiv = this._createSanDiv(certificateDetails.subject); 796 var sanDiv = this._createSanDiv(certificateDetails.subject);
791 var validFromString = new Date(1000 * certificateDetails.validFrom). toUTCString(); 797 var validFromString = new Date(1000 * certificateDetails.validFrom). toUTCString();
792 var validUntilString = new Date(1000 * certificateDetails.validTo).t oUTCString(); 798 var validUntilString = new Date(1000 * certificateDetails.validTo).t oUTCString();
793 799
794 var table = new WebInspector.SecurityDetailsTable(); 800 var table = new WebInspector.SecurityDetailsTable();
795 certificateSection.appendChild(table.element()); 801 certificateSection.appendChild(table.element());
796 table.addRow(WebInspector.UIString("Subject"), certificateDetails.su bject.name); 802 table.addRow(WebInspector.UIString("Subject"), certificateDetails.su bject.name);
797 table.addRow(WebInspector.UIString("SAN"), sanDiv); 803 table.addRow(WebInspector.UIString("SAN"), sanDiv);
798 table.addRow(WebInspector.UIString("Valid From"), validFromString); 804 table.addRow(WebInspector.UIString("Valid From"), validFromString);
799 table.addRow(WebInspector.UIString("Valid Until"), validUntilString) ; 805 table.addRow(WebInspector.UIString("Valid Until"), validUntilString) ;
800 table.addRow(WebInspector.UIString("Issuer"), certificateDetails.iss uer); 806 table.addRow(WebInspector.UIString("Issuer"), certificateDetails.iss uer);
801 table.addRow(WebInspector.UIString("SCTs"), this.sctSummary(originSt ate.securityDetails.certificateValidationDetails)); 807 table.addRow(WebInspector.UIString("SCTs"), this.sctSummary(originSt ate.securityDetails.certificateValidationDetails));
802 table.addRow("", WebInspector.SecurityPanel.createCertificateViewerB utton(WebInspector.UIString("Open full certificate details"), originState.securi tyDetails.certificateId)); 808 table.addRow("", WebInspector.SecurityPanel.createCertificateViewerB utton(WebInspector.UIString("Open full certificate details"), originState.securi tyDetails.certificateId));
809
810 if (originState.securityDetails.signedCertificateTimestampList.lengt h <= 0)
811 return;
812
813 // Show summary of SCT(s) of Certificate Transparency.
814 var sctSummaryTable = new WebInspector.SecurityDetailsTable();
815 sctSummaryTable.element().classList.add("sct-summary");
816 sctSection.appendChild(sctSummaryTable.element());
817 for (var i = 0; i < originState.securityDetails.signedCertificateTim estampList.length; i++)
818 {
819 sctSummaryTable.addRow(WebInspector.UIString("SCT"), originState .securityDetails.signedCertificateTimestampList[i].logDescription + " (" +
820 originState.securityDetails.signedCertificateTimestampList[i ].origin + ", " +
821 originState.securityDetails.signedCertificateTimestampList[i ].status + ")");
822 }
823
824 // Show detailed SCT(s) of Certificate Transparency.
825 var sctTableWrapper = sctSection.createChild("div", "sct-details");
826 sctTableWrapper.classList.add("hidden");
827 for (var i = 0; i < originState.securityDetails.signedCertificateTim estampList.length; i++)
828 {
829 var sctTable = new WebInspector.SecurityDetailsTable();
830 sctTableWrapper.appendChild(sctTable.element());
831 sctTable.addRow(WebInspector.UIString("Log Name"), originState.s ecurityDetails.signedCertificateTimestampList[i].logDescription);
832 sctTable.addRow(WebInspector.UIString("Log ID"), originState.sec urityDetails.signedCertificateTimestampList[i].logId.replace(/(.{2})/g,"$1 "));
833 sctTable.addRow(WebInspector.UIString("Validation Status"), orig inState.securityDetails.signedCertificateTimestampList[i].status);
834 sctTable.addRow(WebInspector.UIString("Origin"), originState.sec urityDetails.signedCertificateTimestampList[i].origin);
835 sctTable.addRow(WebInspector.UIString("Issued At"), new Date(ori ginState.securityDetails.signedCertificateTimestampList[i].timestamp).toUTCStrin g());
836 sctTable.addRow(WebInspector.UIString("Version"), originState.se curityDetails.signedCertificateTimestampList[i].version);
837 sctTable.addRow(WebInspector.UIString("Hash Algorithm"), originS tate.securityDetails.signedCertificateTimestampList[i].hashAlgorithm);
838 sctTable.addRow(WebInspector.UIString("Sign Algorithm"), originS tate.securityDetails.signedCertificateTimestampList[i].signatureAlgorithm);
839 sctTable.addRow(WebInspector.UIString("Signature Data"), originS tate.securityDetails.signedCertificateTimestampList[i].signatureData.replace(/(. {2})/g,"$1 "));
840 }
841
842 // Add link to toggle between displaying of the summary of the SCT(s ) and the detailed SCT(s).
843 var toggleSctsDetailsLink = sctSection.createChild("div", "link");
844 toggleSctsDetailsLink.classList.add("sct-toggle");
845 toggleSctsDetailsLink.textContent = WebInspector.UIString("Show full details");
846 function toggleSctDetailsDisplay()
847 {
848 var isDetailsShown = !sctTableWrapper.classList.contains("hidden ");
849 if (isDetailsShown)
850 toggleSctsDetailsLink.textContent = WebInspector.UIString("S how full details");
851 else
852 toggleSctsDetailsLink.textContent = WebInspector.UIString("H ide full details");
853 sctSummaryTable.element().classList.toggle("hidden");
854 sctTableWrapper.classList.toggle("hidden");
855 }
856 toggleSctsDetailsLink.addEventListener("click", toggleSctDetailsDisp lay, false);
803 } 857 }
804 858
805 function displayCertificateDetailsUnavailable () 859 function displayCertificateDetailsUnavailable ()
806 { 860 {
807 certificateSection.createChild("div").textContent = WebInspector.UIS tring("Certificate details unavailable."); 861 certificateSection.createChild("div").textContent = WebInspector.UIS tring("Certificate details unavailable.");
808 } 862 }
809 863
810 originState.certificateDetailsPromise.then(displayCertificateDetails.bin d(this), displayCertificateDetailsUnavailable); 864 originState.certificateDetailsPromise.then(displayCertificateDetails.bin d(this), displayCertificateDetailsUnavailable);
811 865
812 var noteSection = this.element.createChild("div", "origin-view-section") ; 866 var noteSection = this.element.createChild("div", "origin-view-section") ;
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
931 row.createChild("div").textContent = key; 985 row.createChild("div").textContent = key;
932 986
933 var valueDiv = row.createChild("div"); 987 var valueDiv = row.createChild("div");
934 if (typeof value === "string") { 988 if (typeof value === "string") {
935 valueDiv.textContent = value; 989 valueDiv.textContent = value;
936 } else { 990 } else {
937 valueDiv.appendChild(value); 991 valueDiv.appendChild(value);
938 } 992 }
939 } 993 }
940 } 994 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698