• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/base/ssl_client_auth_cache.h"
6 
7 #include "base/logging.h"
8 #include "net/base/x509_certificate.h"
9 
10 namespace net {
11 
SSLClientAuthCache()12 SSLClientAuthCache::SSLClientAuthCache() {
13   CertDatabase::AddObserver(this);
14 }
15 
~SSLClientAuthCache()16 SSLClientAuthCache::~SSLClientAuthCache() {
17   CertDatabase::RemoveObserver(this);
18 }
19 
Lookup(const std::string & server,scoped_refptr<X509Certificate> * certificate)20 bool SSLClientAuthCache::Lookup(
21     const std::string& 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 
Add(const std::string & server,X509Certificate * value)33 void SSLClientAuthCache::Add(const std::string& server,
34                              X509Certificate* value) {
35   cache_[server] = value;
36 
37   // TODO(wtc): enforce a maximum number of entries.
38 }
39 
Remove(const std::string & server)40 void SSLClientAuthCache::Remove(const std::string& server) {
41   cache_.erase(server);
42 }
43 
OnUserCertAdded(const X509Certificate * cert)44 void SSLClientAuthCache::OnUserCertAdded(const X509Certificate* cert) {
45   cache_.clear();
46 }
47 
48 }  // namespace net
49