SERVER_ERROR,
ALIAS_UNKNOWN,
AUTH_FAILED,
- OTHER,
+ OTHER
};
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);
};
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&,
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);
+};