Chromium Code Reviews| Index: net/ssl/ssl_info.h |
| diff --git a/net/ssl/ssl_info.h b/net/ssl/ssl_info.h |
| index 40dec2865729bb3e431dfc1641f46d0a6086193e..d5ef1d1e1dcdb9a6276a85bec2e71c6d2e667ec5 100644 |
| --- a/net/ssl/ssl_info.h |
| +++ b/net/ssl/ssl_info.h |
| @@ -10,6 +10,8 @@ |
| #include "base/memory/ref_counted.h" |
| #include "net/base/net_export.h" |
| #include "net/cert/cert_status_flags.h" |
| +#include "net/cert/ct_policy_enforcer.h" |
| +#include "net/cert/ct_policy_status.h" |
| #include "net/cert/ct_verify_result.h" |
| #include "net/cert/sct_status_flags.h" |
| #include "net/cert/x509_cert_types.h" |
| @@ -32,6 +34,23 @@ class NET_EXPORT SSLInfo { |
| HANDSHAKE_FULL, // we negotiated a new session. |
| }; |
| + // Contains information about the Certificate Transparency (CT) |
| + // policies that were applied on this connection, whether the |
| + // connection complied with these policies, and why |
| + // the connection was considered non-compliant, if applicable. |
| + struct CTPolicyComplianceDetails { |
|
Ryan Sleevi
2016/02/11 02:57:24
I'm not sure why you introduced a struct for this
estark
2016/02/11 04:06:20
Yeah, the struct was just to group them together.
|
| + CTPolicyComplianceDetails(); |
| + |
| + // True if Certificate Transparency policies were applied on this |
| + // connection and results were stored in the rest of the fields in |
| + // the struct. |
| + bool compliance_details_available; |
| + |
| + // Whether the connection complied with the CT EV policy, and if |
| + // not, why not. |
| + ct::EVPolicyCompliance ev_policy_compliance; |
| + }; |
| + |
| SSLInfo(); |
| SSLInfo(const SSLInfo& info); |
| ~SSLInfo(); |
| @@ -44,12 +63,14 @@ class NET_EXPORT SSLInfo { |
| // Adds the specified |error| to the cert status. |
| void SetCertError(int error); |
| - // Adds the SignedCertificateTimestamps from ct_verify_result to |
| - // |signed_certificate_timestamps|. SCTs are held in three separate vectors |
| - // in ct_verify_result, each vetor representing a particular verification |
| - // state, this method associates each of the SCTs with the corresponding |
| - // SCTVerifyStatus as it adds it to the |signed_certificate_timestamps| list. |
| - void UpdateSignedCertificateTimestamps( |
| + // Adds the SignedCertificateTimestamps and policy compliance details |
| + // from ct_verify_result to |signed_certificate_timestamps| and |
| + // |ct_policy_compliance_details|. SCTs are held in three separate |
| + // vectors in ct_verify_result, each vetor representing a particular |
| + // verification state, this method associates each of the SCTs with |
| + // the corresponding SCTVerifyStatus as it adds it to the |
| + // |signed_certificate_timestamps| list. |
| + void UpdateCertificateTransparencyInfo( |
| const ct::CTVerifyResult& ct_verify_result); |
| // The SSL certificate. |
| @@ -115,6 +136,14 @@ class NET_EXPORT SSLInfo { |
| // List of SignedCertificateTimestamps and their corresponding validation |
| // status. |
| SignedCertificateTimestampAndStatusList signed_certificate_timestamps; |
| + |
| + // Details about the Certificate Transparency policies that were |
| + // applied to this connection. Be sure to check the |
| + // |compliance_details_available| field inside before using any of the |
| + // other fields, because information about CT policies might not be |
| + // available (for example, because this SSLInfo was serialized without |
| + // storing the CT policy details and subsequently deserialized). |
| + CTPolicyComplianceDetails ct_policy_compliance_details; |
| }; |
| } // namespace net |