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

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 version, renamed Blink variables, simplified some comments, handled a few MAX values Created 4 years, 6 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 768 matching lines...) Expand 10 before | Expand all | Expand 10 after
779 var table = new WebInspector.SecurityDetailsTable(); 779 var table = new WebInspector.SecurityDetailsTable();
780 connectionSection.appendChild(table.element()); 780 connectionSection.appendChild(table.element());
781 table.addRow("Protocol", originState.securityDetails.protocol); 781 table.addRow("Protocol", originState.securityDetails.protocol);
782 table.addRow("Key Exchange", originState.securityDetails.keyExchange); 782 table.addRow("Key Exchange", originState.securityDetails.keyExchange);
783 table.addRow("Cipher Suite", originState.securityDetails.cipher + (origi nState.securityDetails.mac ? " with " + originState.securityDetails.mac : "")); 783 table.addRow("Cipher Suite", originState.securityDetails.cipher + (origi nState.securityDetails.mac ? " with " + originState.securityDetails.mac : ""));
784 784
785 // Create the certificate section outside the callback, so that it appea rs in the right place. 785 // Create the certificate section outside the callback, so that it appea rs in the right place.
786 var certificateSection = this.element.createChild("div", "origin-view-se ction"); 786 var certificateSection = this.element.createChild("div", "origin-view-se ction");
787 certificateSection.createChild("div", "origin-view-section-title").textC ontent = WebInspector.UIString("Certificate"); 787 certificateSection.createChild("div", "origin-view-section-title").textC ontent = WebInspector.UIString("Certificate");
788 788
789 if (originState.securityDetails.signedCertificateTimestampList.length > 0) {
dgozman 2016/06/04 00:27:37 nit: drop "> 0"
dwaxweiler 2016/06/04 08:38:02 Acknowledged.
790 // Create the Certificate Transparency section outside the callback, so that it appears in the right place.
791 var sctSection = this.element.createChild("div", "origin-view-sectio n");
792 sctSection.createChild("div", "origin-view-section-title").textConte nt = WebInspector.UIString("Certificate Transparency");
793 }
794
789 /** 795 /**
790 * @this {WebInspector.SecurityOriginView} 796 * @this {WebInspector.SecurityOriginView}
791 * @param {?NetworkAgent.CertificateDetails} certificateDetails 797 * @param {?NetworkAgent.CertificateDetails} certificateDetails
792 */ 798 */
793 function displayCertificateDetails(certificateDetails) 799 function displayCertificateDetails(certificateDetails)
794 { 800 {
795 var sanDiv = this._createSanDiv(certificateDetails.subject); 801 var sanDiv = this._createSanDiv(certificateDetails.subject);
796 var validFromString = new Date(1000 * certificateDetails.validFrom). toUTCString(); 802 var validFromString = new Date(1000 * certificateDetails.validFrom). toUTCString();
797 var validUntilString = new Date(1000 * certificateDetails.validTo).t oUTCString(); 803 var validUntilString = new Date(1000 * certificateDetails.validTo).t oUTCString();
798 804
799 var table = new WebInspector.SecurityDetailsTable(); 805 var table = new WebInspector.SecurityDetailsTable();
800 certificateSection.appendChild(table.element()); 806 certificateSection.appendChild(table.element());
801 table.addRow(WebInspector.UIString("Subject"), certificateDetails.su bject.name); 807 table.addRow(WebInspector.UIString("Subject"), certificateDetails.su bject.name);
802 table.addRow(WebInspector.UIString("SAN"), sanDiv); 808 table.addRow(WebInspector.UIString("SAN"), sanDiv);
803 table.addRow(WebInspector.UIString("Valid From"), validFromString); 809 table.addRow(WebInspector.UIString("Valid From"), validFromString);
804 table.addRow(WebInspector.UIString("Valid Until"), validUntilString) ; 810 table.addRow(WebInspector.UIString("Valid Until"), validUntilString) ;
805 table.addRow(WebInspector.UIString("Issuer"), certificateDetails.iss uer); 811 table.addRow(WebInspector.UIString("Issuer"), certificateDetails.iss uer);
806 table.addRow(WebInspector.UIString("SCTs"), this.sctSummary(originSt ate.securityDetails.certificateValidationDetails)); 812 table.addRow(WebInspector.UIString("SCTs"), this.sctSummary(originSt ate.securityDetails.certificateValidationDetails));
807 table.addRow("", WebInspector.SecurityPanel.createCertificateViewerB utton(WebInspector.UIString("Open full certificate details"), originState.securi tyDetails.certificateId)); 813 table.addRow("", WebInspector.SecurityPanel.createCertificateViewerB utton(WebInspector.UIString("Open full certificate details"), originState.securi tyDetails.certificateId));
814
815 if (originState.securityDetails.signedCertificateTimestampList.lengt h <= 0)
dgozman 2016/06/04 00:27:37 if (!....length)
dwaxweiler 2016/06/04 08:38:02 Acknowledged.
816 return;
817
818 // Show summary of SCT(s) of Certificate Transparency.
819 var sctSummaryTable = new WebInspector.SecurityDetailsTable();
820 sctSummaryTable.element().classList.add("sct-summary");
821 sctSection.appendChild(sctSummaryTable.element());
822 for (var i = 0; i < originState.securityDetails.signedCertificateTim estampList.length; i++)
823 {
824 sctSummaryTable.addRow(WebInspector.UIString("SCT"), originState .securityDetails.signedCertificateTimestampList[i].logDescription + " (" +
dgozman 2016/06/04 00:27:37 Is SCT a well-known term for web developers? I thi
dwaxweiler 2016/06/04 08:38:02 I have also been thinking about including the full
dgozman 2016/06/09 08:34:12 Let's go with what you suggest. Let's also add {st
dwaxweiler 2016/06/10 07:42:37 Okay. I do not completely get your suggestion. Wha
825 originState.securityDetails.signedCertificateTimestampList[i ].origin + ", " +
826 originState.securityDetails.signedCertificateTimestampList[i ].status + ")");
827 }
828
829 // Show detailed SCT(s) of Certificate Transparency.
830 var sctTableWrapper = sctSection.createChild("div", "sct-details");
831 sctTableWrapper.classList.add("hidden");
832 for (var i = 0; i < originState.securityDetails.signedCertificateTim estampList.length; i++)
833 {
834 var sctTable = new WebInspector.SecurityDetailsTable();
dgozman 2016/06/04 00:27:37 nit: let's extract a |var sct = originState.securi
dwaxweiler 2016/06/04 08:38:02 Acknowledged.
835 sctTableWrapper.appendChild(sctTable.element());
836 sctTable.addRow(WebInspector.UIString("Log Name"), originState.s ecurityDetails.signedCertificateTimestampList[i].logDescription);
837 sctTable.addRow(WebInspector.UIString("Log ID"), originState.sec urityDetails.signedCertificateTimestampList[i].logId.replace(/(.{2})/g,"$1 "));
838 sctTable.addRow(WebInspector.UIString("Validation Status"), orig inState.securityDetails.signedCertificateTimestampList[i].status);
839 sctTable.addRow(WebInspector.UIString("Origin"), originState.sec urityDetails.signedCertificateTimestampList[i].origin);
840 sctTable.addRow(WebInspector.UIString("Issued At"), new Date(ori ginState.securityDetails.signedCertificateTimestampList[i].timestamp).toUTCStrin g());
841 sctTable.addRow(WebInspector.UIString("Hash Algorithm"), originS tate.securityDetails.signedCertificateTimestampList[i].hashAlgorithm);
842 sctTable.addRow(WebInspector.UIString("Signature Algorithm"), or iginState.securityDetails.signedCertificateTimestampList[i].signatureAlgorithm);
843 sctTable.addRow(WebInspector.UIString("Signature Data"), originS tate.securityDetails.signedCertificateTimestampList[i].signatureData.replace(/(. {2})/g,"$1 "));
844 }
845
846 // Add link to toggle between displaying of the summary of the SCT(s ) and the detailed SCT(s).
847 var toggleSctsDetailsLink = sctSection.createChild("div", "link");
848 toggleSctsDetailsLink.classList.add("sct-toggle");
849 toggleSctsDetailsLink.textContent = WebInspector.UIString("Show full details");
850 function toggleSctDetailsDisplay()
851 {
852 var isDetailsShown = !sctTableWrapper.classList.contains("hidden ");
853 if (isDetailsShown)
854 toggleSctsDetailsLink.textContent = WebInspector.UIString("S how full details");
855 else
856 toggleSctsDetailsLink.textContent = WebInspector.UIString("H ide full details");
857 sctSummaryTable.element().classList.toggle("hidden");
858 sctTableWrapper.classList.toggle("hidden");
859 }
860 toggleSctsDetailsLink.addEventListener("click", toggleSctDetailsDisp lay, false);
808 } 861 }
809 862
810 function displayCertificateDetailsUnavailable() 863 function displayCertificateDetailsUnavailable()
811 { 864 {
812 certificateSection.createChild("div").textContent = WebInspector.UIS tring("Certificate details unavailable."); 865 certificateSection.createChild("div").textContent = WebInspector.UIS tring("Certificate details unavailable.");
813 } 866 }
814 867
815 originState.certificateDetailsPromise.then(displayCertificateDetails.bin d(this), displayCertificateDetailsUnavailable); 868 originState.certificateDetailsPromise.then(displayCertificateDetails.bin d(this), displayCertificateDetailsUnavailable);
816 869
817 var noteSection = this.element.createChild("div", "origin-view-section") ; 870 var noteSection = this.element.createChild("div", "origin-view-section") ;
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
936 row.createChild("div").textContent = key; 989 row.createChild("div").textContent = key;
937 990
938 var valueDiv = row.createChild("div"); 991 var valueDiv = row.createChild("div");
939 if (typeof value === "string") { 992 if (typeof value === "string") {
940 valueDiv.textContent = value; 993 valueDiv.textContent = value;
941 } else { 994 } else {
942 valueDiv.appendChild(value); 995 valueDiv.appendChild(value);
943 } 996 }
944 } 997 }
945 } 998 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698