ckmc_raw_buffer_s **ppdecrypted) = 0;
virtual bool symmetricOnly() const { return false; }
+ virtual bool gcmOnly() const { return false; }
virtual ~EncryptionApi() {}
};
bool symmetricOnly() const override { return true; }
+#ifdef TZ_BACKEND
+ bool gcmOnly() const override { return true; }
+#endif
+
private:
int crypt(ckmc_cipher_ctx_h ctx, unsigned char *ptr, size_t left, CKM::RawBuffer& output);
EncryptionError ckmcError2Result(int error);
void testAllAlgorithms(const std::function<void(const Algo& algo)>& test)
{
- test( { CKMC_ALGO_AES_CBC, 128 });
- test( { CKMC_ALGO_AES_CBC, 192 });
- test( { CKMC_ALGO_AES_CBC, 256 });
test( { CKMC_ALGO_AES_GCM, 128 });
test( { CKMC_ALGO_AES_GCM, 192 });
test( { CKMC_ALGO_AES_GCM, 256 });
+
+ if (g_api->gcmOnly())
+ return;
+
+ test( { CKMC_ALGO_AES_CBC, 128 });
+ test( { CKMC_ALGO_AES_CBC, 192 });
+ test( { CKMC_ALGO_AES_CBC, 256 });
test( { CKMC_ALGO_AES_CTR, 128 });
test( { CKMC_ALGO_AES_CTR, 192 });
test( { CKMC_ALGO_AES_CTR, 256 });
test( { CKMC_ALGO_AES_CFB, 192 });
test( { CKMC_ALGO_AES_CFB, 256 });
- if (!g_api->symmetricOnly()) {
- test( { CKMC_ALGO_RSA_OAEP, 1024 });
- test( { CKMC_ALGO_RSA_OAEP, 2048 });
- test( { CKMC_ALGO_RSA_OAEP, 4096 });
- }
+ if (g_api->symmetricOnly())
+ return;
+
+ test( { CKMC_ALGO_RSA_OAEP, 1024 });
+ test( { CKMC_ALGO_RSA_OAEP, 2048 });
+ test( { CKMC_ALGO_RSA_OAEP, 4096 });
}
void testNoIvEnc(const Algo& algo)