15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/ssl/ssl_info.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/pickle.h"
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "net/cert/cert_status_flags.h"
9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "net/cert/signed_certificate_timestamp.h"
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "net/cert/x509_certificate.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SSLInfo::SSLInfo() {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Reset();
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SSLInfo::SSLInfo(const SSLInfo& info) {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *this = info;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SSLInfo::~SSLInfo() {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SSLInfo& SSLInfo::operator=(const SSLInfo& info) {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cert = info.cert;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cert_status = info.cert_status;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  security_bits = info.security_bits;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  connection_status = info.connection_status;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  is_issued_by_known_root = info.is_issued_by_known_root;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  client_cert_sent = info.client_cert_sent;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  channel_id_sent = info.channel_id_sent;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  handshake_type = info.handshake_type;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  public_key_hashes = info.public_key_hashes;
35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  signed_certificate_timestamps = info.signed_certificate_timestamps;
36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  pinning_failure_log = info.pinning_failure_log;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SSLInfo::Reset() {
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cert = NULL;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cert_status = 0;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  security_bits = -1;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  connection_status = 0;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  is_issued_by_known_root = false;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  client_cert_sent = false;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  channel_id_sent = false;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  handshake_type = HANDSHAKE_UNKNOWN;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  public_key_hashes.clear();
51a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  signed_certificate_timestamps.clear();
52c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  pinning_failure_log.clear();
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SSLInfo::SetCertError(int error) {
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cert_status |= MapNetErrorToCertStatus(error);
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace net
60