blob: 709f4188a2610c20083f79f29beac64d93d1fa2e [file] [log] [blame]
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/public/common/ssl_status.h"
#include "net/cert/sct_status_flags.h"
#include "net/ssl/ssl_info.h"
namespace content {
SSLStatus::SSLStatus()
: security_style(SECURITY_STYLE_UNKNOWN),
cert_id(0),
cert_status(0),
security_bits(-1),
key_exchange_info(0),
connection_status(0),
content_status(NORMAL_CONTENT),
num_unknown_scts(0),
num_invalid_scts(0),
num_valid_scts(0),
pkp_bypassed(false) {}
SSLStatus::SSLStatus(SecurityStyle security_style,
int cert_id,
const net::SSLInfo& ssl_info)
: security_style(security_style),
cert_id(cert_id),
cert_status(ssl_info.cert_status),
security_bits(ssl_info.security_bits),
key_exchange_info(ssl_info.key_exchange_info),
connection_status(ssl_info.connection_status),
content_status(NORMAL_CONTENT),
num_unknown_scts(0),
num_invalid_scts(0),
num_valid_scts(0),
pkp_bypassed(ssl_info.pkp_bypassed) {
// Count unknown, invalid and valid SCTs.
for (const auto& sct_and_status : ssl_info.signed_certificate_timestamps) {
switch (sct_and_status.status) {
case net::ct::SCT_STATUS_LOG_UNKNOWN:
num_unknown_scts++;
break;
case net::ct::SCT_STATUS_INVALID:
num_invalid_scts++;
break;
case net::ct::SCT_STATUS_OK:
num_valid_scts++;
break;
case net::ct::SCT_STATUS_NONE:
case net::ct::SCT_STATUS_MAX:
// These enum values do not represent SCTs that are taken into account
// for CT compliance calculations, so we ignore them.
NOTREACHED();
break;
}
}
}
SSLStatus::SSLStatus(const SSLStatus& other) = default;
SSLStatus::~SSLStatus() {}
} // namespace content