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 763 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Loading... |
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 } |
OLD | NEW |