CKM: Cipher API tests
[platform/core/test/security-tests.git] / src / ckm / unprivileged / encryption-decryption-env.h
index 1af99e5..ac564f3 100644 (file)
@@ -35,7 +35,7 @@ enum EncryptionError{
     SERVER_ERROR,
     ALIAS_UNKNOWN,
     AUTH_FAILED,
-    OTHER,
+    OTHER
 };
 
 struct EncryptionApi
@@ -51,22 +51,26 @@ struct EncryptionApi
                                     const char *password,
                                     const ckmc_raw_buffer_s& encrypted,
                                     ckmc_raw_buffer_s **ppdecrypted) = 0;
+
+    virtual bool symmetricOnly() const { return false; }
+
+    virtual ~EncryptionApi() {}
 };
 
 class SyncApi : public EncryptionApi
 {
 public:
-    virtual EncryptionError encrypt(ckmc_param_list_h params,
-                                    const char *key_alias,
-                                    const char *password,
-                                    const ckmc_raw_buffer_s& decrypted,
-                                    ckmc_raw_buffer_s **ppencrypted);
+    EncryptionError encrypt(ckmc_param_list_h params,
+                            const char *key_alias,
+                            const char *password,
+                            const ckmc_raw_buffer_s& decrypted,
+                            ckmc_raw_buffer_s **ppencrypted) override;
 
-    virtual EncryptionError decrypt(ckmc_param_list_h params,
-                                    const char *key_alias,
-                                    const char *password,
-                                    const ckmc_raw_buffer_s& encrypted,
-                                    ckmc_raw_buffer_s **ppdecrypted);
+    EncryptionError decrypt(ckmc_param_list_h params,
+                            const char *key_alias,
+                            const char *password,
+                            const ckmc_raw_buffer_s& encrypted,
+                            ckmc_raw_buffer_s **ppdecrypted) override;
 private:
     static EncryptionError ckmcError2Result(int error);
 };
@@ -95,13 +99,13 @@ public:
                             const char *key_alias,
                             const char *password,
                             const ckmc_raw_buffer_s& decrypted,
-                            ckmc_raw_buffer_s **ppencrypted);
+                            ckmc_raw_buffer_s **ppencrypted) override;
 
     EncryptionError decrypt(ckmc_param_list_h params,
                             const char *key_alias,
                             const char *password,
                             const ckmc_raw_buffer_s& encrypted,
-                            ckmc_raw_buffer_s **ppdecrypted);
+                            ckmc_raw_buffer_s **ppdecrypted) override;
 private:
     typedef void (CKM::ManagerAsync::*cryptoFn)(const CKM::ManagerAsync::ObserverPtr&,
                                                 const CKM::CryptoAlgorithm&,
@@ -119,5 +123,25 @@ private:
     static EncryptionError ckmError2Result(int error);
 };
 
+class CipherApi : public EncryptionApi
+{
+public:
+    EncryptionError encrypt(ckmc_param_list_h params,
+                            const char *key_alias,
+                            const char *password,
+                            const ckmc_raw_buffer_s& decrypted,
+                            ckmc_raw_buffer_s **ppencrypted) override;
+
+    EncryptionError decrypt(ckmc_param_list_h params,
+                            const char *key_alias,
+                            const char *password,
+                            const ckmc_raw_buffer_s& encrypted,
+                            ckmc_raw_buffer_s **ppdecrypted) override;
+
+    bool symmetricOnly() const override { return true; }
 
+private:
+    int crypt(ckmc_cipher_ctx_h ctx, unsigned char *ptr, size_t left, CKM::RawBuffer& output);
+    EncryptionError ckmcError2Result(int error);
+};