summaryrefslogtreecommitdiffstats
path: root/net/base/cert_database_nss.cc
diff options
context:
space:
mode:
authormattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-01 22:38:05 +0000
committermattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-01 22:38:05 +0000
commit295f13906ac3663765b65e5d29b4dbe556b2fd00 (patch)
treed62e0e8da050c8999e99e4bacbd321d8fc5017d8 /net/base/cert_database_nss.cc
parent397b8ea50bffcc0764ca3ffcf7ec303e0f320fe4 (diff)
downloadchromium_src-295f13906ac3663765b65e5d29b4dbe556b2fd00.zip
chromium_src-295f13906ac3663765b65e5d29b4dbe556b2fd00.tar.gz
chromium_src-295f13906ac3663765b65e5d29b4dbe556b2fd00.tar.bz2
Add ListCerts method to CertDatabase.
BUG=19991 TEST=CertDatabaseNSSTest.ListCerts Review URL: http://codereview.chromium.org/3192021 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@58250 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/cert_database_nss.cc')
-rw-r--r--net/base/cert_database_nss.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/net/base/cert_database_nss.cc b/net/base/cert_database_nss.cc
index b8be38c..5ce1389 100644
--- a/net/base/cert_database_nss.cc
+++ b/net/base/cert_database_nss.cc
@@ -89,6 +89,22 @@ int CertDatabase::AddUserCert(X509Certificate* cert_obj) {
return OK;
}
+void CertDatabase::ListCerts(CertificateList* certs) {
+ certs->clear();
+
+ CERTCertList* cert_list = PK11_ListCerts(PK11CertListUnique, NULL);
+ CERTCertListNode* node;
+ for (node = CERT_LIST_HEAD(cert_list);
+ !CERT_LIST_END(node, cert_list);
+ node = CERT_LIST_NEXT(node)) {
+ certs->push_back(X509Certificate::CreateFromHandle(
+ node->cert,
+ X509Certificate::SOURCE_LONE_CERT_IMPORT,
+ X509Certificate::OSCertHandles()));
+ }
+ CERT_DestroyCertList(cert_list);
+}
+
int CertDatabase::ImportFromPKCS12(
const std::string& data, const string16& password) {
return psm::nsPKCS12Blob_Import(data.data(), data.size(), password);