| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/base/default_origin_bound_cert_store.h" | 5 #include "net/base/default_origin_bound_cert_store.h" |
| 6 | 6 |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 | 8 |
| 9 namespace net { | 9 namespace net { |
| 10 | 10 |
| 11 // static | 11 // static |
| 12 const size_t DefaultOriginBoundCertStore::kMaxCerts = 3300; | 12 const size_t DefaultOriginBoundCertStore::kMaxCerts = 3300; |
| 13 | 13 |
| 14 DefaultOriginBoundCertStore::DefaultOriginBoundCertStore( | 14 DefaultOriginBoundCertStore::DefaultOriginBoundCertStore( |
| 15 PersistentStore* store) | 15 PersistentStore* store) |
| 16 : initialized_(false), | 16 : initialized_(false), |
| 17 store_(store) {} | 17 store_(store) {} |
| 18 | 18 |
| 19 void DefaultOriginBoundCertStore::FlushStore(Task* completion_task) { | 19 void DefaultOriginBoundCertStore::FlushStore(Task* completion_task) { |
| 20 base::AutoLock autolock(lock_); | 20 base::AutoLock autolock(lock_); |
| 21 | 21 |
| 22 if (initialized_ && store_) | 22 if (initialized_ && store_) |
| 23 store_->Flush(completion_task); | 23 store_->Flush(completion_task); |
| 24 else if (completion_task) | 24 else if (completion_task) |
| 25 MessageLoop::current()->PostTask(FROM_HERE, completion_task); | 25 MessageLoop::current()->PostTask(FROM_HERE, completion_task); |
| 26 } | 26 } |
| 27 | 27 |
| 28 bool DefaultOriginBoundCertStore::GetOriginBoundCert( | 28 bool DefaultOriginBoundCertStore::GetOriginBoundCert( |
| 29 const std::string& origin, | 29 const std::string& origin, |
| 30 OriginBoundCertType* type, |
| 30 std::string* private_key_result, | 31 std::string* private_key_result, |
| 31 std::string* cert_result) { | 32 std::string* cert_result) { |
| 32 base::AutoLock autolock(lock_); | 33 base::AutoLock autolock(lock_); |
| 33 InitIfNecessary(); | 34 InitIfNecessary(); |
| 34 | 35 |
| 35 OriginBoundCertMap::iterator it = origin_bound_certs_.find(origin); | 36 OriginBoundCertMap::iterator it = origin_bound_certs_.find(origin); |
| 36 | 37 |
| 37 if (it == origin_bound_certs_.end()) | 38 if (it == origin_bound_certs_.end()) |
| 38 return false; | 39 return false; |
| 39 | 40 |
| 40 OriginBoundCert* cert = it->second; | 41 OriginBoundCert* cert = it->second; |
| 42 *type = cert->type(); |
| 41 *private_key_result = cert->private_key(); | 43 *private_key_result = cert->private_key(); |
| 42 *cert_result = cert->cert(); | 44 *cert_result = cert->cert(); |
| 43 | 45 |
| 44 return true; | 46 return true; |
| 45 } | 47 } |
| 46 | 48 |
| 47 void DefaultOriginBoundCertStore::SetOriginBoundCert( | 49 void DefaultOriginBoundCertStore::SetOriginBoundCert( |
| 48 const std::string& origin, | 50 const std::string& origin, |
| 51 OriginBoundCertType type, |
| 49 const std::string& private_key, | 52 const std::string& private_key, |
| 50 const std::string& cert) { | 53 const std::string& cert) { |
| 51 base::AutoLock autolock(lock_); | 54 base::AutoLock autolock(lock_); |
| 52 InitIfNecessary(); | 55 InitIfNecessary(); |
| 53 | 56 |
| 54 InternalDeleteOriginBoundCert(origin); | 57 InternalDeleteOriginBoundCert(origin); |
| 55 InternalInsertOriginBoundCert(origin, | 58 InternalInsertOriginBoundCert( |
| 56 new OriginBoundCert(origin, private_key, cert)); | 59 origin, new OriginBoundCert(origin, type, private_key, cert)); |
| 57 } | 60 } |
| 58 | 61 |
| 59 void DefaultOriginBoundCertStore::DeleteOriginBoundCert( | 62 void DefaultOriginBoundCertStore::DeleteOriginBoundCert( |
| 60 const std::string& origin) { | 63 const std::string& origin) { |
| 61 base::AutoLock autolock(lock_); | 64 base::AutoLock autolock(lock_); |
| 62 InitIfNecessary(); | 65 InitIfNecessary(); |
| 63 InternalDeleteOriginBoundCert(origin); | 66 InternalDeleteOriginBoundCert(origin); |
| 64 } | 67 } |
| 65 | 68 |
| 66 void DefaultOriginBoundCertStore::DeleteAll() { | 69 void DefaultOriginBoundCertStore::DeleteAll() { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 77 } | 80 } |
| 78 | 81 |
| 79 void DefaultOriginBoundCertStore::GetAllOriginBoundCerts( | 82 void DefaultOriginBoundCertStore::GetAllOriginBoundCerts( |
| 80 std::vector<OriginBoundCertInfo>* origin_bound_certs) { | 83 std::vector<OriginBoundCertInfo>* origin_bound_certs) { |
| 81 base::AutoLock autolock(lock_); | 84 base::AutoLock autolock(lock_); |
| 82 InitIfNecessary(); | 85 InitIfNecessary(); |
| 83 for (OriginBoundCertMap::iterator it = origin_bound_certs_.begin(); | 86 for (OriginBoundCertMap::iterator it = origin_bound_certs_.begin(); |
| 84 it != origin_bound_certs_.end(); ++it) { | 87 it != origin_bound_certs_.end(); ++it) { |
| 85 OriginBoundCertInfo cert_info = { | 88 OriginBoundCertInfo cert_info = { |
| 86 it->second->origin(), | 89 it->second->origin(), |
| 90 it->second->type(), |
| 87 it->second->private_key(), | 91 it->second->private_key(), |
| 88 it->second->cert() | 92 it->second->cert() |
| 89 }; | 93 }; |
| 90 // TODO(rkn): Make changes so we can simply write | 94 // TODO(rkn): Make changes so we can simply write |
| 91 // origin_bound_certs->push_back(*it->second). This is probably best done | 95 // origin_bound_certs->push_back(*it->second). This is probably best done |
| 92 // by unnesting the OriginBoundCert class. | 96 // by unnesting the OriginBoundCert class. |
| 93 origin_bound_certs->push_back(cert_info); | 97 origin_bound_certs->push_back(cert_info); |
| 94 } | 98 } |
| 95 } | 99 } |
| 96 | 100 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 | 159 |
| 156 if (store_) | 160 if (store_) |
| 157 store_->AddOriginBoundCert(*cert); | 161 store_->AddOriginBoundCert(*cert); |
| 158 origin_bound_certs_[origin] = cert; | 162 origin_bound_certs_[origin] = cert; |
| 159 } | 163 } |
| 160 | 164 |
| 161 DefaultOriginBoundCertStore::OriginBoundCert::OriginBoundCert() {} | 165 DefaultOriginBoundCertStore::OriginBoundCert::OriginBoundCert() {} |
| 162 | 166 |
| 163 DefaultOriginBoundCertStore::OriginBoundCert::OriginBoundCert( | 167 DefaultOriginBoundCertStore::OriginBoundCert::OriginBoundCert( |
| 164 const std::string& origin, | 168 const std::string& origin, |
| 169 OriginBoundCertType type, |
| 165 const std::string& private_key, | 170 const std::string& private_key, |
| 166 const std::string& cert) | 171 const std::string& cert) |
| 167 : origin_(origin), | 172 : origin_(origin), |
| 173 type_(type), |
| 168 private_key_(private_key), | 174 private_key_(private_key), |
| 169 cert_(cert) {} | 175 cert_(cert) {} |
| 170 | 176 |
| 171 DefaultOriginBoundCertStore::PersistentStore::PersistentStore() {} | 177 DefaultOriginBoundCertStore::PersistentStore::PersistentStore() {} |
| 172 | 178 |
| 173 } // namespace net | 179 } // namespace net |
| OLD | NEW |