text: // Copyright (c) 2012 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 "net/ssl/ssl_info.h"
  
  #include "base/pickle.h"
  #include "net/cert/cert_status_flags.h"
  #include "net/cert/signed_certificate_timestamp.h"
  #include "net/cert/x509_certificate.h"
  
  namespace net {
  
  SSLInfo::SSLInfo() {
    Reset();
  }
  
  SSLInfo::SSLInfo(const SSLInfo& info) {
    *this = info;
  }
  
  SSLInfo::~SSLInfo() {
  }
  
  SSLInfo& SSLInfo::operator=(const SSLInfo& info) {
    cert = info.cert;
    cert_status = info.cert_status;
    security_bits = info.security_bits;
    connection_status = info.connection_status;
    is_issued_by_known_root = info.is_issued_by_known_root;
    client_cert_sent = info.client_cert_sent;
    channel_id_sent = info.channel_id_sent;
    handshake_type = info.handshake_type;
    public_key_hashes = info.public_key_hashes;
    signed_certificate_timestamps = info.signed_certificate_timestamps;
    pinning_failure_log = info.pinning_failure_log;
  
    return *this;
  }
  
  void SSLInfo::Reset() {
    cert = NULL;
    cert_status = 0;
    security_bits = -1;
    connection_status = 0;
    is_issued_by_known_root = false;
    client_cert_sent = false;
    channel_id_sent = false;
    handshake_type = HANDSHAKE_UNKNOWN;
    public_key_hashes.clear();
    signed_certificate_timestamps.clear();
    pinning_failure_log.clear();
  }
  
  void SSLInfo::SetCertError(int error) {
    cert_status |= MapNetErrorToCertStatus(error);
  }
  
  }  // namespace net
  