Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 } |
| OLD | NEW |