Home | History | Annotate | Download | only in base
      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/cert_database.h"
      6 
      7 #include <openssl/x509.h>
      8 
      9 #include "base/logging.h"
     10 #include "net/base/crypto_module.h"
     11 #include "net/base/net_errors.h"
     12 #include "net/base/openssl_private_key_store.h"
     13 #include "net/base/x509_certificate.h"
     14 
     15 namespace net {
     16 
     17 CertDatabase::CertDatabase() {
     18 }
     19 
     20 int CertDatabase::CheckUserCert(X509Certificate* cert) {
     21   if (!cert)
     22     return ERR_CERT_INVALID;
     23   if (cert->HasExpired())
     24     return ERR_CERT_DATE_INVALID;
     25 
     26   if (!OpenSSLPrivateKeyStore::GetInstance()->FetchPrivateKey(
     27       X509_PUBKEY_get(X509_get_X509_PUBKEY(cert->os_cert_handle()))))
     28     return ERR_NO_PRIVATE_KEY_FOR_CERT;
     29 
     30   return OK;
     31 }
     32 
     33 int CertDatabase::AddUserCert(X509Certificate* cert) {
     34   // TODO(bulach): implement me.
     35   NOTIMPLEMENTED();
     36   return ERR_NOT_IMPLEMENTED;
     37 }
     38 
     39 void CertDatabase::ListCerts(CertificateList* certs) {
     40   // TODO(bulach): implement me.
     41   NOTIMPLEMENTED();
     42 }
     43 
     44 CryptoModule* CertDatabase::GetPublicModule() const {
     45   // TODO(bulach): implement me.
     46   NOTIMPLEMENTED();
     47   return NULL;
     48 }
     49 
     50 CryptoModule* CertDatabase::GetPrivateModule() const {
     51   // TODO(bulach): implement me.
     52   NOTIMPLEMENTED();
     53   return NULL;
     54 }
     55 
     56 void CertDatabase::ListModules(CryptoModuleList* modules, bool need_rw) const {
     57   // TODO(bulach): implement me.
     58   NOTIMPLEMENTED();
     59   modules->clear();
     60 }
     61 
     62 int CertDatabase::ImportFromPKCS12(CryptoModule* module,
     63                                    const std::string& data,
     64                                    const string16& password) {
     65   // TODO(bulach): implement me.
     66   NOTIMPLEMENTED();
     67   return ERR_NOT_IMPLEMENTED;
     68 }
     69 
     70 int CertDatabase::ExportToPKCS12(const CertificateList& certs,
     71                                  const string16& password,
     72                                  std::string* output) const {
     73   // TODO(bulach): implement me.
     74   NOTIMPLEMENTED();
     75   return 0;
     76 }
     77 
     78 bool CertDatabase::DeleteCertAndKey(const X509Certificate* cert) {
     79   // TODO(bulach): implement me.
     80   NOTIMPLEMENTED();
     81   return false;
     82 }
     83 
     84 unsigned int CertDatabase::GetCertTrust(const X509Certificate* cert,
     85                                         CertType type) const {
     86   // TODO(bulach): implement me.
     87   NOTIMPLEMENTED();
     88   return 0;
     89 }
     90 
     91 bool CertDatabase::SetCertTrust(const X509Certificate* cert,
     92                                 CertType type,
     93                                 unsigned int trust_bits) {
     94   // TODO(bulach): implement me.
     95   NOTIMPLEMENTED();
     96   return false;
     97 }
     98 
     99 }  // namespace net
    100