Home | History | Annotate | Download | only in crypto
      1 // Copyright (c) 2012 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 #ifndef CRYPTO_NSS_UTIL_INTERNAL_H_
      6 #define CRYPTO_NSS_UTIL_INTERNAL_H_
      7 
      8 #include <secmodt.h>
      9 
     10 #include "crypto/crypto_export.h"
     11 
     12 // These functions return a type defined in an NSS header, and so cannot be
     13 // declared in nss_util.h.  Hence, they are declared here.
     14 
     15 namespace crypto {
     16 
     17 // Returns a reference to the default NSS key slot for storing
     18 // public-key data only (e.g. server certs). Caller must release
     19 // returned reference with PK11_FreeSlot.
     20 CRYPTO_EXPORT PK11SlotInfo* GetPublicNSSKeySlot();
     21 
     22 // Returns a reference to the default slot for storing private-key and
     23 // mixed private-key/public-key data.  Returns a hardware (TPM) NSS
     24 // key slot if on ChromeOS and EnableTPMForNSS() has been called
     25 // successfully. Caller must release returned reference with
     26 // PK11_FreeSlot.
     27 CRYPTO_EXPORT PK11SlotInfo* GetPrivateNSSKeySlot();
     28 
     29 // A helper class that acquires the SECMOD list read lock while the
     30 // AutoSECMODListReadLock is in scope.
     31 class AutoSECMODListReadLock {
     32  public:
     33   AutoSECMODListReadLock();
     34   ~AutoSECMODListReadLock();
     35 
     36  private:
     37   SECMODListLock* lock_;
     38   DISALLOW_COPY_AND_ASSIGN(AutoSECMODListReadLock);
     39 };
     40 
     41 }  // namespace crypto
     42 
     43 #endif  // CRYPTO_NSS_UTIL_INTERNAL_H_
     44