Chromium Code Reviews| Index: content/common/ssl_status_serialization.cc |
| diff --git a/content/common/ssl_status_serialization.cc b/content/common/ssl_status_serialization.cc |
| index 5f1b92415236aa62a5a33533ed3db4e9803f54fa..05bf0871b408606b99ea7a2e6ded62f6dcc6fb07 100644 |
| --- a/content/common/ssl_status_serialization.cc |
| +++ b/content/common/ssl_status_serialization.cc |
| @@ -5,6 +5,7 @@ |
| #include "content/common/ssl_status_serialization.h" |
| #include <stdint.h> |
| +#include <string> |
| #include "base/logging.h" |
| #include "base/pickle.h" |
| @@ -43,6 +44,14 @@ std::string SerializeSecurityInfo(const SSLStatus& ssl_status) { |
| iter != ssl_status.signed_certificate_timestamp_ids.end(); ++iter) { |
| pickle.WriteInt(iter->id); |
| pickle.WriteUInt16(iter->status); |
| + pickle.WriteUInt16(iter->version); |
|
Eran Messeri
2016/03/09 21:04:35
If that's saved to disk (I think it is, not entire
|
| + pickle.WriteString(iter->logId); |
| + pickle.WriteInt64(iter->timestamp); |
| + pickle.WriteUInt16(iter->signature.hash_algorithm); |
| + pickle.WriteUInt16(iter->signature.signature_algorithm); |
| + pickle.WriteString(iter->signature.signature_data); |
| + pickle.WriteUInt16(iter->origin); |
| + pickle.WriteString(iter->logDescription); |
| } |
| return std::string(static_cast<const char*>(pickle.data()), pickle.size()); |
| } |
| @@ -91,14 +100,44 @@ bool DeserializeSecurityInfo(const std::string& state, SSLStatus* ssl_status) { |
| for (; num_scts_to_read > 0; --num_scts_to_read) { |
| int id; |
| uint16_t status; |
| - if (!iter.ReadInt(&id) || !iter.ReadUInt16(&status)) { |
| + uint16_t version; |
| + std::string logId; |
| + int64_t timestamp; |
| + uint16_t hashAlgorithm; |
| + uint16_t signatureAlgorithm; |
| + std::string signatureData; |
| + uint16_t origin; |
| + std::string logDescription; |
| + if (!iter.ReadInt(&id) |
| + || !iter.ReadUInt16(&status) |
| + || !iter.ReadUInt16(&version) |
| + || !iter.ReadString(&logId) |
| + || !iter.ReadInt64(×tamp) |
| + || !iter.ReadUInt16(&hashAlgorithm) |
| + || !iter.ReadUInt16(&signatureAlgorithm) |
| + || !iter.ReadString(&signatureData) |
| + || !iter.ReadUInt16(&origin) |
| + || !iter.ReadString(&logDescription)) { |
| *ssl_status = SSLStatus(); |
| return false; |
| } |
| + net::ct::DigitallySigned signature( |
| + static_cast<net::ct::DigitallySigned::HashAlgorithm>(hashAlgorithm), |
| + static_cast<net::ct::DigitallySigned::SignatureAlgorithm>( |
| + signatureAlgorithm), |
| + signatureData); |
| + |
| ssl_status->signed_certificate_timestamp_ids.push_back( |
| SignedCertificateTimestampIDAndStatus( |
| - id, static_cast<net::ct::SCTVerifyStatus>(status))); |
| + id, |
| + static_cast<net::ct::SCTVerifyStatus>(status), |
| + static_cast<net::ct::SignedCertificateTimestamp::Version>(version), |
| + logId, |
| + timestamp, |
| + signature, |
| + static_cast<net::ct::SignedCertificateTimestamp::Origin>(origin), |
| + logDescription)); |
| } |
| return true; |