Added crypto capability structure and cipher/authentication
algorithm bit masks needed by the structure.

Signed-off-by: Petri Savolainen <petri.savolai...@nokia.com>
---
 include/odp/api/spec/crypto.h | 88 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 88 insertions(+)

diff --git a/include/odp/api/spec/crypto.h b/include/odp/api/spec/crypto.h
index 7c6f9bc..ef106f6 100644
--- a/include/odp/api/spec/crypto.h
+++ b/include/odp/api/spec/crypto.h
@@ -89,6 +89,61 @@ typedef enum {
 } odp_auth_alg_t;
 
 /**
+ * Cipher algorithms in a bit field structure
+ */
+typedef union odp_crypto_cipher_algos_t {
+       /** Cipher algorithms */
+       struct {
+               /** ODP_CIPHER_ALG_NULL */
+               uint32_t null       : 1;
+
+               /** ODP_CIPHER_ALG_DES */
+               uint32_t des        : 1;
+
+               /** ODP_CIPHER_ALG_3DES_CBC */
+               uint32_t trides_cbc : 1;
+
+               /** ODP_CIPHER_ALG_AES128_CBC */
+               uint32_t aes128_cbc : 1;
+
+               /** ODP_CIPHER_ALG_AES128_GCM */
+               uint32_t aes128_gcm : 1;
+       } bit;
+
+       /** All bits of the bit field structure
+         *
+         * This field can be used to set/clear all flags, or bitwise
+         * operations over the entire structure. */
+       uint32_t all_bits;
+} odp_crypto_cipher_algos_t;
+
+/**
+ * Authentication algorithms in a bit field structure
+ */
+typedef union odp_crypto_auth_algos_t {
+       /** Authentication algorithms */
+       struct {
+               /** ODP_AUTH_ALG_NULL */
+               uint32_t null       : 1;
+
+               /** ODP_AUTH_ALG_MD5_96 */
+               uint32_t md5_96     : 1;
+
+               /** ODP_AUTH_ALG_SHA256_128 */
+               uint32_t sha256_128 : 1;
+
+               /** ODP_AUTH_ALG_AES128_GCM */
+               uint32_t aes128_gcm : 1;
+       } bit;
+
+       /** All bits of the bit field structure
+         *
+         * This field can be used to set/clear all flags, or bitwise
+         * operations over the entire structure. */
+       uint32_t all_bits;
+} odp_crypto_auth_algos_t;
+
+/**
  * Crypto API key structure
  */
 typedef struct odp_crypto_key {
@@ -254,6 +309,39 @@ typedef struct odp_crypto_op_result {
 } odp_crypto_op_result_t;
 
 /**
+ * Crypto capabilities
+ */
+typedef struct odp_crypto_capability_t {
+       /** Maximum number of crypto sessions */
+       uint32_t max_sessions;
+
+       /** Supported chipher algorithms */
+       odp_crypto_cipher_algos_t chiphers;
+
+       /** Chipher algorithms implemented with HW offload */
+       odp_crypto_cipher_algos_t hw_chiphers;
+
+       /** Supported authentication algorithms */
+       odp_crypto_auth_algos_t   auths;
+
+       /** Authentication algorithms implemented with HW offload */
+       odp_crypto_auth_algos_t   hw_auths;
+
+} odp_crypto_capability_t;
+
+/**
+ * Query crypto capabilities
+ *
+ * Outputs crypto capabilities on success.
+ *
+ * @param[out] capa   Pointer to capability structure for output
+ *
+ * @retval 0 on success
+ * @retval <0 on failure
+ */
+int odp_crypto_capability(odp_crypto_capability_t *capa);
+
+/**
  * Crypto session creation (synchronous)
  *
  * @param params            Session parameters
-- 
2.7.2

_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to