AES key creation API
[platform/core/security/key-manager.git] / src / include / ckm / ckm-manager.h
index ac1f72b..920953b 100644 (file)
@@ -27,6 +27,7 @@
 #include <ckm/ckm-certificate.h>
 #include <ckm/ckm-error.h>
 #include <ckm/ckm-key.h>
+#include <ckm/ckm-pkcs12.h>
 #include <ckm/ckm-type.h>
 
 // Central Key Manager namespace
@@ -35,22 +36,25 @@ namespace CKM {
 class Manager;
 typedef std::shared_ptr<Manager> ManagerShPtr;
 
-class Manager {
+class KEY_MANAGER_API Manager {
 public:
     virtual ~Manager(){}
 
     virtual int saveKey(const Alias &alias, const KeyShPtr &key, const Policy &policy) = 0;
     virtual int saveCertificate(const Alias &alias, const CertificateShPtr &cert, const Policy &policy) = 0;
+    virtual int savePKCS12(
+            const Alias &alias,
+            const PKCS12ShPtr &pkcs,
+            const Policy &keyPolicy,
+            const Policy &certPolicy) = 0;
 
     /*
-     * Data must be extractable. If you set extractable bit to false funciton will
+     * Data must be extractable. If you set extractable bit to false function will
      * return ERROR_INPUT_PARAM.
      */
     virtual int saveData(const Alias &alias, const RawBuffer &data, const Policy &policy) = 0;
 
-    virtual int removeKey(const Alias &alias) = 0;
-    virtual int removeCertificate(const Alias &alias) = 0;
-    virtual int removeData(const Alias &alias) = 0;
+    virtual int removeAlias(const Alias &alias) = 0;
 
     virtual int getKey(const Alias &alias, const Password &password, KeyShPtr &key) = 0;
     virtual int getCertificate(
@@ -58,6 +62,12 @@ public:
         const Password &password,
         CertificateShPtr &certificate) = 0;
     virtual int getData(const Alias &alias, const Password &password, RawBuffer &data) = 0;
+    virtual int getPKCS12(const Alias &alias, PKCS12ShPtr &pkcs) = 0;
+    virtual int getPKCS12(
+        const Alias &alias,
+        const Password &keyPass,
+        const Password &certPass,
+        PKCS12ShPtr &pkcs) = 0;
 
     // send request for list of all keys/certificates/data that application/user may use
     virtual int getKeyAliasVector(AliasVector &aliasVector) = 0;
@@ -85,14 +95,23 @@ public:
         const Policy &policyPrivateKey = Policy(),
         const Policy &policyPublicKey = Policy()) = 0;
 
+    virtual int createKeyAES(
+        const int size,              // size in bits [128, 192, 256]
+        const Alias &keyAlias,
+        const Policy &policyKey = Policy()) = 0;
+
     virtual int getCertificateChain(
         const CertificateShPtr &certificate,
         const CertificateShPtrVector &untrustedCertificates,
+        const CertificateShPtrVector &trustedCertificates,
+        bool useTrustedSystemCertificates,
         CertificateShPtrVector &certificateChainVector) = 0;
 
     virtual int getCertificateChain(
         const CertificateShPtr &certificate,
         const AliasVector &untrustedCertificates,
+        const AliasVector &trustedCertificates,
+        bool useTrustedSystemCertificates,
         CertificateShPtrVector &certificateChainVector) = 0;
 
     virtual int createSignature(
@@ -116,8 +135,19 @@ public:
     // if application does not have permission to use network.
     virtual int ocspCheck(const CertificateShPtrVector &certificateChainVector, int &ocspStatus) = 0;
 
-    virtual int setPermission(const Alias &alias, const Label &accessor, Permission newPermission) = 0;
+    virtual int setPermission(const Alias &alias, const Label &accessor, PermissionMask permissionMask) = 0;
+
+    virtual int encrypt(const CryptoAlgorithm &algo,
+                        const Alias &keyAlias,
+                        const Password &password,
+                        const RawBuffer& plain,
+                        RawBuffer& encrypted) = 0;
 
+    virtual int decrypt(const CryptoAlgorithm &algo,
+                        const Alias &keyAlias,
+                        const Password &password,
+                        const RawBuffer& encrypted,
+                        RawBuffer& decrypted) = 0;
 
     static ManagerShPtr create();
 //    static ManagerShPtr getManager(int uid); // TODO