diff mbox

[API-NEXT,PATCHv3,2/2] validation: crypto: verify odp crypto capability

Message ID 1461649441-863-1-git-send-email-balakrishna.garapati@linaro.org
State Accepted
Commit 0d494cf898db61fd8a22ade99df964a95f033e38
Headers show

Commit Message

Balakrishna Garapati April 26, 2016, 5:44 a.m. UTC
test update to verify the crypto capability functionality

Signed-off-by: Balakrishna Garapati <balakrishna.garapati@linaro.org>
---
 v2: Added the suport to verify if hw offload is supported
 v3: Move capability initialization to linux-generic (Bill)

 test/validation/crypto/odp_crypto_test_inp.c | 46 ++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

--
1.9.1
diff mbox

Patch

diff --git a/test/validation/crypto/odp_crypto_test_inp.c b/test/validation/crypto/odp_crypto_test_inp.c
index fc125f7..0c5b110 100644
--- a/test/validation/crypto/odp_crypto_test_inp.c
+++ b/test/validation/crypto/odp_crypto_test_inp.c
@@ -46,6 +46,7 @@  static void alg_test(odp_crypto_op_t op,
 		     )
 {
 	odp_crypto_session_t session;
+	odp_crypto_capability_t capability;
 	int rc;
 	odp_crypto_ses_create_err_t status;
 	odp_bool_t posted;
@@ -53,6 +54,51 @@  static void alg_test(odp_crypto_op_t op,
 	odp_crypto_compl_t compl_event;
 	odp_crypto_op_result_t result;

+	rc = odp_crypto_capability(&capability);
+	CU_ASSERT(!rc);
+
+	if (capability.hw_ciphers.all_bits) {
+		if (cipher_alg == ODP_CIPHER_ALG_3DES_CBC &&
+		    !(capability.hw_ciphers.bit.trides_cbc))
+			rc = -1;
+		if (cipher_alg == ODP_CIPHER_ALG_AES128_CBC &&
+		    !(capability.hw_ciphers.bit.aes128_cbc))
+			rc = -1;
+		if (cipher_alg == ODP_CIPHER_ALG_AES128_GCM &&
+		    !(capability.hw_ciphers.bit.aes128_gcm))
+			rc = -1;
+	} else {
+		if (cipher_alg == ODP_CIPHER_ALG_3DES_CBC &&
+		    !(capability.ciphers.bit.trides_cbc))
+			rc = -1;
+		if (cipher_alg == ODP_CIPHER_ALG_AES128_CBC &&
+		    !(capability.ciphers.bit.aes128_cbc))
+			rc = -1;
+		if (cipher_alg == ODP_CIPHER_ALG_AES128_GCM &&
+		    !(capability.ciphers.bit.aes128_gcm))
+			rc = -1;
+	}
+
+	CU_ASSERT(!rc);
+
+	if (capability.hw_auths.all_bits) {
+		if (auth_alg == ODP_AUTH_ALG_AES128_GCM &&
+		    !(capability.hw_auths.bit.aes128_gcm))
+			rc = -1;
+		if (auth_alg == ODP_AUTH_ALG_NULL &&
+		    !(capability.hw_auths.bit.null))
+			rc = -1;
+	} else {
+		if (auth_alg == ODP_AUTH_ALG_AES128_GCM &&
+		    !(capability.auths.bit.aes128_gcm))
+			rc = -1;
+		if (auth_alg == ODP_AUTH_ALG_NULL &&
+		    !(capability.auths.bit.null))
+			rc = -1;
+	}
+
+	CU_ASSERT(!rc);
+
 	/* Create a crypto session */
 	odp_crypto_session_params_t ses_params;
 	memset(&ses_params, 0, sizeof(ses_params));