Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js b/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js |
| index 8dab64ea2c9a4f159411dc580406b5d4fc4f1a58..6ab9b6969bddf74eca0497e93bdc7c8ce731ee5d 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js |
| @@ -786,6 +786,12 @@ WebInspector.SecurityOriginView = function(panel, origin, originState) |
| var certificateSection = this.element.createChild("div", "origin-view-section"); |
| certificateSection.createChild("div", "origin-view-section-title").textContent = WebInspector.UIString("Certificate"); |
| + if (originState.securityDetails.signedCertificateTimestampList.length > 0) { |
|
dgozman
2016/06/04 00:27:37
nit: drop "> 0"
dwaxweiler
2016/06/04 08:38:02
Acknowledged.
|
| + // Create the Certificate Transparency section outside the callback, so that it appears in the right place. |
| + var sctSection = this.element.createChild("div", "origin-view-section"); |
| + sctSection.createChild("div", "origin-view-section-title").textContent = WebInspector.UIString("Certificate Transparency"); |
| + } |
| + |
| /** |
| * @this {WebInspector.SecurityOriginView} |
| * @param {?NetworkAgent.CertificateDetails} certificateDetails |
| @@ -805,6 +811,53 @@ WebInspector.SecurityOriginView = function(panel, origin, originState) |
| table.addRow(WebInspector.UIString("Issuer"), certificateDetails.issuer); |
| table.addRow(WebInspector.UIString("SCTs"), this.sctSummary(originState.securityDetails.certificateValidationDetails)); |
| table.addRow("", WebInspector.SecurityPanel.createCertificateViewerButton(WebInspector.UIString("Open full certificate details"), originState.securityDetails.certificateId)); |
| + |
| + if (originState.securityDetails.signedCertificateTimestampList.length <= 0) |
|
dgozman
2016/06/04 00:27:37
if (!....length)
dwaxweiler
2016/06/04 08:38:02
Acknowledged.
|
| + return; |
| + |
| + // Show summary of SCT(s) of Certificate Transparency. |
| + var sctSummaryTable = new WebInspector.SecurityDetailsTable(); |
| + sctSummaryTable.element().classList.add("sct-summary"); |
| + sctSection.appendChild(sctSummaryTable.element()); |
| + for (var i = 0; i < originState.securityDetails.signedCertificateTimestampList.length; i++) |
| + { |
| + 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
|
| + originState.securityDetails.signedCertificateTimestampList[i].origin + ", " + |
| + originState.securityDetails.signedCertificateTimestampList[i].status + ")"); |
| + } |
| + |
| + // Show detailed SCT(s) of Certificate Transparency. |
| + var sctTableWrapper = sctSection.createChild("div", "sct-details"); |
| + sctTableWrapper.classList.add("hidden"); |
| + for (var i = 0; i < originState.securityDetails.signedCertificateTimestampList.length; i++) |
| + { |
| + 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.
|
| + sctTableWrapper.appendChild(sctTable.element()); |
| + sctTable.addRow(WebInspector.UIString("Log Name"), originState.securityDetails.signedCertificateTimestampList[i].logDescription); |
| + sctTable.addRow(WebInspector.UIString("Log ID"), originState.securityDetails.signedCertificateTimestampList[i].logId.replace(/(.{2})/g,"$1 ")); |
| + sctTable.addRow(WebInspector.UIString("Validation Status"), originState.securityDetails.signedCertificateTimestampList[i].status); |
| + sctTable.addRow(WebInspector.UIString("Origin"), originState.securityDetails.signedCertificateTimestampList[i].origin); |
| + sctTable.addRow(WebInspector.UIString("Issued At"), new Date(originState.securityDetails.signedCertificateTimestampList[i].timestamp).toUTCString()); |
| + sctTable.addRow(WebInspector.UIString("Hash Algorithm"), originState.securityDetails.signedCertificateTimestampList[i].hashAlgorithm); |
| + sctTable.addRow(WebInspector.UIString("Signature Algorithm"), originState.securityDetails.signedCertificateTimestampList[i].signatureAlgorithm); |
| + sctTable.addRow(WebInspector.UIString("Signature Data"), originState.securityDetails.signedCertificateTimestampList[i].signatureData.replace(/(.{2})/g,"$1 ")); |
| + } |
| + |
| + // Add link to toggle between displaying of the summary of the SCT(s) and the detailed SCT(s). |
| + var toggleSctsDetailsLink = sctSection.createChild("div", "link"); |
| + toggleSctsDetailsLink.classList.add("sct-toggle"); |
| + toggleSctsDetailsLink.textContent = WebInspector.UIString("Show full details"); |
| + function toggleSctDetailsDisplay() |
| + { |
| + var isDetailsShown = !sctTableWrapper.classList.contains("hidden"); |
| + if (isDetailsShown) |
| + toggleSctsDetailsLink.textContent = WebInspector.UIString("Show full details"); |
| + else |
| + toggleSctsDetailsLink.textContent = WebInspector.UIString("Hide full details"); |
| + sctSummaryTable.element().classList.toggle("hidden"); |
| + sctTableWrapper.classList.toggle("hidden"); |
| + } |
| + toggleSctsDetailsLink.addEventListener("click", toggleSctDetailsDisplay, false); |
| } |
| function displayCertificateDetailsUnavailable() |