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) { |
| 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.leng
th) |
| 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 var sct = originState.securityDetails.signedCertificateTimestamp
List[i]; |
| 825 sctSummaryTable.addRow(WebInspector.UIString("SCT"), sct.logDesc
ription + " (" + sct.origin + ", " + sct.status + ")"); |
| 826 } |
| 827 |
| 828 // Show detailed SCT(s) of Certificate Transparency. |
| 829 var sctTableWrapper = sctSection.createChild("div", "sct-details"); |
| 830 sctTableWrapper.classList.add("hidden"); |
| 831 for (var i = 0; i < originState.securityDetails.signedCertificateTim
estampList.length; i++) |
| 832 { |
| 833 var sctTable = new WebInspector.SecurityDetailsTable(); |
| 834 sctTableWrapper.appendChild(sctTable.element()); |
| 835 var sct = originState.securityDetails.signedCertificateTimestamp
List[i]; |
| 836 sctTable.addRow(WebInspector.UIString("Log Name"), sct.logDescri
ption); |
| 837 sctTable.addRow(WebInspector.UIString("Log ID"), sct.logId.repla
ce(/(.{2})/g,"$1 ")); |
| 838 sctTable.addRow(WebInspector.UIString("Validation Status"), sct.
status); |
| 839 sctTable.addRow(WebInspector.UIString("Origin"), sct.origin); |
| 840 sctTable.addRow(WebInspector.UIString("Issued At"), new Date(sct
.timestamp).toUTCString()); |
| 841 sctTable.addRow(WebInspector.UIString("Hash Algorithm"), sct.has
hAlgorithm); |
| 842 sctTable.addRow(WebInspector.UIString("Signature Algorithm"), sc
t.signatureAlgorithm); |
| 843 sctTable.addRow(WebInspector.UIString("Signature Data"), sct.sig
natureData.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 |