ssl_client_auth_cache.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "net/ssl/ssl_client_auth_cache.h"
6
7#include "base/logging.h"
8#include "net/cert/x509_certificate.h"
9
10namespace net {
11
12SSLClientAuthCache::SSLClientAuthCache() {
13  CertDatabase::GetInstance()->AddObserver(this);
14}
15
16SSLClientAuthCache::~SSLClientAuthCache() {
17  CertDatabase::GetInstance()->RemoveObserver(this);
18}
19
20bool SSLClientAuthCache::Lookup(
21    const HostPortPair& server,
22    scoped_refptr<X509Certificate>* certificate) {
23  DCHECK(certificate);
24
25  AuthCacheMap::iterator iter = cache_.find(server);
26  if (iter == cache_.end())
27    return false;
28
29  *certificate = iter->second;
30  return true;
31}
32
33void SSLClientAuthCache::Add(const HostPortPair& server,
34                             X509Certificate* value) {
35  cache_[server] = value;
36
37  // TODO(wtc): enforce a maximum number of entries.
38}
39
40void SSLClientAuthCache::Remove(const HostPortPair& server) {
41  cache_.erase(server);
42}
43
44void SSLClientAuthCache::OnCertAdded(const X509Certificate* cert) {
45  cache_.clear();
46}
47
48}  // namespace net
49