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

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: fixes 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
« no previous file with comments | « content/common/ssl_status_serialization.h ('k') | content/content_common.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..c15beb8e5dde3fda6b7fdd032cedf1977d5f7463 100644
--- a/content/common/ssl_status_serialization.cc
+++ b/content/common/ssl_status_serialization.cc
@@ -9,15 +9,25 @@
namespace content {
-std::string SerializeSecurityInfo(int cert_id,
- net::CertStatus cert_status,
- int security_bits,
- int ssl_connection_status) {
+std::string SerializeSecurityInfo(
+ int cert_id,
+ net::CertStatus cert_status,
+ int security_bits,
+ 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 +35,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 +47,35 @@ 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)
+ return pickle_read_ok;
+
+ int num_scts_to_read;
+ pickle_read_ok = pickle.ReadInt(&iter, &num_scts_to_read);
+ int id;
+ uint16 status;
+ for (; pickle_read_ok && num_scts_to_read > 0; --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(
+ SignedCertificateTimestampIDAndStatus(
+ id,
+ static_cast<net::ct::SCTVerifyStatus>(status)));
+ }
+ }
+
+ return pickle_read_ok;
}
} // namespace content
« no previous file with comments | « content/common/ssl_status_serialization.h ('k') | content/content_common.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698