All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
osx-private-key-storage.hpp
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
22 #ifndef NDN_OSX_PRIVATEKEY_STORAGE_H
23 #define NDN_OSX_PRIVATEKEY_STORAGE_H
24 
25 // Only compile if ndn-cpp-config.h defines NDN_CPP_HAVE_OSX_SECURITY 1.
26 #include "../../ndn-cpp-config.h"
27 #if NDN_CPP_HAVE_OSX_SECURITY
28 
29 #include "../../common.hpp"
30 #include "../tpm/helper-osx.hpp"
31 #include "private-key-storage.hpp"
32 
33 namespace ndn
34 {
35 
36 class OSXPrivateKeyStorage : public PrivateKeyStorage {
37 public:
41  OSXPrivateKeyStorage() {}
42 
46  virtual
47  ~OSXPrivateKeyStorage();
48 
54  virtual void
55  generateKeyPair(const Name& keyName, const KeyParams& params);
56 
61  virtual void
62  deleteKeyPair(const Name& keyName);
63 
69  virtual ptr_lib::shared_ptr<PublicKey>
70  getPublicKey(const Name& keyName);
71 
80  virtual Blob
81  sign(const uint8_t *data, size_t dataLength, const Name& keyName, DigestAlgorithm digestAlgorithm = DIGEST_ALGORITHM_SHA256);
82 
91  virtual Blob
92  decrypt(const Name& keyName, const uint8_t* data, size_t dataLength, bool isSymmetric = false);
93 
102  virtual Blob
103  encrypt(const Name& keyName, const uint8_t* data, size_t dataLength, bool isSymmetric = false);
104 
110  virtual void
111  generateKey(const Name& keyName, const KeyParams& params);
112 
119  virtual bool
120  doesKeyExist(const Name& keyName, KeyClass keyClass);
121 
130  bool
131  setACL(const Name & keyName, KeyClass keyClass, int acl, const std::string & appPath);
132 
133  private:
140  std::string
141  toInternalKeyName(const Name & keyName, KeyClass keyClass);
142 
150  CFReleaser<SecKeychainItemRef>
151  getKey(const Name & keyName, KeyClass keyClass);
152 
158  const CFTypeRef
159  getSymmetricKeyType(KeyType keyType);
160 
166  const CFTypeRef
167  getAsymmetricKeyType(KeyType keyType);
168 
174  const CFTypeRef
175  getKeyClass(KeyClass keyClass);
176 
182  const CFStringRef
183  getDigestAlgorithm(DigestAlgorithm digestAlgorithm);
184 
190  long
191  getDigestSize(DigestAlgorithm digestAlgo);
192 };
193 
194 }
195 
196 #endif // NDN_CPP_HAVE_OSX_SECURITY
197 
198 #endif
KeyType
Definition: security-common.hpp:50