Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Unified Diff: content/common/ssl_status_serialization.cc

Issue 88643002: SignedCertificateTimestamp storing & serialization code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@erans_patches
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/common/ssl_status_serialization.cc
diff --git a/content/common/ssl_status_serialization.cc b/content/common/ssl_status_serialization.cc
index 87593a595a2589e4b2d962dbb968b998e097af96..d5cf1ccf907b6bd870c8a6a7e5573df712466551 100644
--- a/content/common/ssl_status_serialization.cc
+++ b/content/common/ssl_status_serialization.cc
@@ -12,12 +12,21 @@ namespace content {
std::string SerializeSecurityInfo(int cert_id,
net::CertStatus cert_status,
int security_bits,
- int ssl_connection_status) {
+ int ssl_connection_status,
+ const SignedCertificateTimestampIDStatusList&
+ signed_certificate_timestamp_ids) {
Pickle pickle;
pickle.WriteInt(cert_id);
pickle.WriteUInt32(cert_status);
pickle.WriteInt(security_bits);
pickle.WriteInt(ssl_connection_status);
+ pickle.WriteInt(signed_certificate_timestamp_ids.size());
+ for (SignedCertificateTimestampIDStatusList::const_iterator iter =
+ signed_certificate_timestamp_ids.begin();
+ iter != signed_certificate_timestamp_ids.end(); ++iter) {
+ pickle.WriteInt(iter->id_);
+ pickle.WriteUInt16(iter->status_);
+ }
return std::string(static_cast<const char*>(pickle.data()), pickle.size());
}
@@ -25,8 +34,11 @@ bool DeserializeSecurityInfo(const std::string& state,
int* cert_id,
net::CertStatus* cert_status,
int* security_bits,
- int* ssl_connection_status) {
- DCHECK(cert_id && cert_status && security_bits && ssl_connection_status);
+ int* ssl_connection_status,
+ SignedCertificateTimestampIDStatusList*
+ signed_certificate_timestamp_ids) {
+ DCHECK(cert_id && cert_status && security_bits && ssl_connection_status &&
+ signed_certificate_timestamp_ids);
if (state.empty()) {
// No SSL used.
*cert_id = 0;
@@ -34,15 +46,31 @@ bool DeserializeSecurityInfo(const std::string& state,
*cert_status = 0;
*security_bits = -1;
*ssl_connection_status = 0;
+ signed_certificate_timestamp_ids->clear();
return false;
}
Pickle pickle(state.data(), static_cast<int>(state.size()));
PickleIterator iter(pickle);
- return pickle.ReadInt(&iter, cert_id) &&
- pickle.ReadUInt32(&iter, cert_status) &&
- pickle.ReadInt(&iter, security_bits) &&
- pickle.ReadInt(&iter, ssl_connection_status);
+ bool pickle_read_ok = pickle.ReadInt(&iter, cert_id) &&
+ pickle.ReadUInt32(&iter, cert_status) &&
+ pickle.ReadInt(&iter, security_bits) &&
+ pickle.ReadInt(&iter, ssl_connection_status);
+ if (pickle_read_ok) {
Eran M. (Google) 2013/11/26 21:33:22 nit: You could return here if the previous reads f
alcutter 2013/11/26 23:00:05 Done.
+ int num_scts_to_read;
+ pickle_read_ok = pickle.ReadInt(&iter, &num_scts_to_read);
+ int id;
+ net::SignedCertificateTimestampVerificationStatus status;
+ for (; num_scts_to_read > 0 && pickle_read_ok; --num_scts_to_read) {
+ pickle_read_ok &= pickle.ReadInt(&iter, &id) &&
+ pickle.ReadUInt16(&iter, &status);
+ if (pickle_read_ok)
+ signed_certificate_timestamp_ids->push_back(
+ content::SignedCertificateTimestampIDAndStatus(id, status));
+ }
+ }
+
+ return pickle_read_ok;
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698