WE310F5  39.00.000
m2mb_crypto.h File Reference

Crypto support. More...

Go to the source code of this file.

Data Structures

struct  m2mb_crypto_attr
 
struct  m2mb_crypto_attrib
 An attribute can be either a buffer attribute or a value attribute. This is determined by bit [29] of the attribute identifier. If this bit is set to 0, then the attribute is a buffer attribute and the field ref must be selected. If the bit is set to 1, it is a value attribute and the field val must be selected. More...
 
#define M2MB_CRYPTO_OBJ_TYPE_AES_E   0xA0000010
 
#define M2MB_CRYPTO_OBJ_TYPE_HMAC_MD5_E   0xA0000001
 
#define M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA1_E   0xA0000002
 
#define M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA224_E   0xA0000003
 
#define M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA256_E   0xA0000004
 
#define M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA384_E   0xA0000005
 
#define M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA512_E   0xA0000006
 
#define M2MB_CRYPTO_OBJ_TYPE_RSA_PUBLIC_KEY_E   0xA0000030
 
#define M2MB_CRYPTO_OBJ_TYPE_RSA_KEYPAIR_E   0xA1000030
 
#define M2MB_CRYPTO_OBJ_TYPE_DH_KEYPAIR_E   0xA1000032
 
#define M2MB_CRYPTO_OBJ_TYPE_ECDSA_PUBLIC_KEY_E   0xA0000041
 
#define M2MB_CRYPTO_OBJ_TYPE_ECDSA_KEYPAIR_E   0xA1000041
 
#define M2MB_CRYPTO_OBJ_TYPE_ECDH_KEYPAIR_E   0xA1000042
 
#define M2MB_CRYPTO_OBJ_TYPE_GENERIC_SECRET_E   0xA0000000
 
#define M2MB_CRYPTO_OBJ_TYPE_ED25519_PUBLIC_KEY_E   0xA00000C0
 
#define M2MB_CRYPTO_OBJ_TYPE_ED25519_KEYPAIR_E   0xA10000C0
 
#define M2MB_CRYPTO_OBJ_TYPE_CURVE25519_KEYPAIR_E   0xA10000C1
 
#define M2MB_CRYPTO_OBJ_TYPE_SRP_KEYPAIR_E   0xA10000C2
 
#define M2MB_CRYPTO_OBJ_TYPE_CHACHA20_E   0xA00000C3
 
#define M2MB_CRYPTO_OBJ_TYPE_ECJPAKE_ROUND1_PUBLIC_KEY_AND_ZKP_PAIR_E   0xA10000C3
 
#define M2MB_CRYPTO_OBJ_TYPE_ECJPAKE_ROUND2_PUBLIC_KEY_AND_ZKP_E   0xA10000C4
 
#define M2MB_CRYPTO_ALG_AES_CBC_NOPAD_E   0x10000110
 Algorithm type. More...
 
#define M2MB_CRYPTO_ALG_AES_CTR_E   0x10000210
 
#define M2MB_CRYPTO_ALG_AES_CCM_E   0x40000710
 
#define M2MB_CRYPTO_ALG_AES_GCM_E   0x40000810
 
#define M2MB_CRYPTO_ALG_RSASSA_PKCS1_V1_5_SHA1_E   0x70002830
 
#define M2MB_CRYPTO_ALG_RSASSA_PKCS1_V1_5_SHA256_E   0x70004830
 
#define M2MB_CRYPTO_ALG_RSASSA_PKCS1_V1_5_SHA384_E   0x70005830
 
#define M2MB_CRYPTO_ALG_RSASSA_PKCS1_V1_5_SHA512_E   0x70006830
 
#define M2MB_CRYPTO_ALG_RSAES_PKCS1_V1_5_E   0x60000130
 
#define M2MB_CRYPTO_ALG_RSA_NOPAD_E   0x60000030
 
#define M2MB_CRYPTO_ALG_DH_DERIVE_SHARED_SECRET_E   0x80000032
 
#define M2MB_CRYPTO_ALG_MD5_E   0x50000001
 
#define M2MB_CRYPTO_ALG_SHA1_E   0x50000002
 
#define M2MB_CRYPTO_ALG_SHA224_E   0x50000003
 
#define M2MB_CRYPTO_ALG_SHA256_E   0x50000004
 
#define M2MB_CRYPTO_ALG_SHA384_E   0x50000005
 
#define M2MB_CRYPTO_ALG_SHA512_E   0x50000006
 
#define M2MB_CRYPTO_ALG_HMAC_MD5_E   0x30000001
 
#define M2MB_CRYPTO_ALG_HMAC_SHA1_E   0x30000002
 
#define M2MB_CRYPTO_ALG_HMAC_SHA224_E   0x30000003
 
#define M2MB_CRYPTO_ALG_HMAC_SHA256_E   0x30000004
 
#define M2MB_CRYPTO_ALG_HMAC_SHA384_E   0x30000005
 
#define M2MB_CRYPTO_ALG_HMAC_SHA512_E   0x30000006
 
#define M2MB_CRYPTO_ALG_ECDSA_P192_E   0x70001042
 
#define M2MB_CRYPTO_ALG_ECDSA_P224_E   0x70002042
 
#define M2MB_CRYPTO_ALG_ECDSA_P256_E   0x70003042
 
#define M2MB_CRYPTO_ALG_ECDSA_P384_E   0x70004042
 
#define M2MB_CRYPTO_ALG_ECDSA_P521_E   0x70005042
 
#define M2MB_CRYPTO_ALG_ECDH_P192_E   0x80001042
 
#define M2MB_CRYPTO_ALG_ECDH_P224_E   0x80002042
 
#define M2MB_CRYPTO_ALG_ECDH_P256_E   0x80003042
 
#define M2MB_CRYPTO_ALG_ECDH_P384_E   0x80004042
 
#define M2MB_CRYPTO_ALG_ECDH_P521_E   0x80005042
 
#define M2MB_CRYPTO_ALG_ED25519_E   0x700000C0
 
#define M2MB_CRYPTO_ALG_CURVE25519_DERIVE_SHARED_SECRET_E   0x800000C1
 
#define M2MB_CRYPTO_ALG_SRP_DERIVE_SHARED_SECRET_E   0x800000C2
 
#define M2MB_CRYPTO_ALG_CHACHA20_POLY1305_E   0x400000C3
 
#define M2MB_CRYPTO_ALG_ECJPAKE_E   0x800000C3
 
#define M2MB_CRYPTO_ATTR_SECRET_VALUE_E   0xC0000000
 
#define M2MB_CRYPTO_ATTR_ED25519_PUBLIC_VALUE_E   0xD00001C0
 
#define M2MB_CRYPTO_ATTR_ED25519_PRIVATE_VALUE_E   0xC00001C0
 
#define M2MB_CRYPTO_ATTR_CURVE25519_PUBLIC_VALUE_E   0xD00001C1
 
#define M2MB_CRYPTO_ATTR_CURVE25519_PRIVATE_VALUE_E   0xC00002C1
 
#define M2MB_CRYPTO_ATTR_ECC_PUBLIC_VALUE_X_E   0xD0000141
 
#define M2MB_CRYPTO_ATTR_ECC_PUBLIC_VALUE_Y_E   0xD0000241
 
#define M2MB_CRYPTO_ATTR_ECC_PRIVATE_VALUE_E   0xC0000341
 
#define M2MB_CRYPTO_ATTR_ECC_CURVE_E   0xF0000441
 
#define M2MB_CRYPTO_ATTR_DH_PRIME_E   0xD0001032
 
#define M2MB_CRYPTO_ATTR_DH_BASE_E   0xD0001232
 
#define M2MB_CRYPTO_ATTR_DH_PUBLIC_VALUE_E   0xD0000132
 
#define M2MB_CRYPTO_ATTR_DH_PRIVATE_VALUE_E   0xC0000232
 
#define M2MB_CRYPTO_ATTR_RSA_MODULUS_E   0xD0000130
 
#define M2MB_CRYPTO_ATTR_RSA_PUBLIC_EXPONENT_E   0xD0000230
 
#define M2MB_CRYPTO_ATTR_RSA_PRIVATE_EXPONENT_E   0xC0000330
 
#define M2MB_CRYPTO_ATTR_RSA_PRIME1_E   0xC0000430
 
#define M2MB_CRYPTO_ATTR_RSA_PRIME2_E   0xC0000530
 
#define M2MB_CRYPTO_ATTR_RSA_EXPONENT1_E   0xC0000630
 
#define M2MB_CRYPTO_ATTR_RSA_EXPONENT2_E   0xC0000730
 
#define M2MB_CRYPTO_ATTR_RSA_COEFFICIENT_E   0xC0000830
 
#define M2MB_CRYPTO_ATTR_SRP_PRIME_E   0xD00001C2
 
#define M2MB_CRYPTO_ATTR_SRP_GEN_E   0xD00002C2
 
#define M2MB_CRYPTO_ATTR_SRP_VERIFIER_E   0xC00003C2
 
#define M2MB_CRYPTO_ATTR_SRP_USERNAME_E   0xD00004C2
 
#define M2MB_CRYPTO_ATTR_SRP_PASSWORD_E   0xC00005C2
 
#define M2MB_CRYPTO_ATTR_SRP_TYPE_E   0xD00006C2
 
#define M2MB_CRYPTO_ATTR_SRP_HASH_E   0xD00007C2
 
#define M2MB_CRYPTO_ATTR_SRP_SALT_E   0xD00008C2
 
#define M2MB_CRYPTO_ATTR_SRP_PUBLIC_VALUE_E   0xD00009C2
 
#define M2MB_CRYPTO_ATTR_SRP_PRIVATE_VALUE_E   0xC0000AC2
 
#define M2MB_CRYPTO_ATTR_ECJPAKE_LOCAL_IDENTITY_E   0xD00010C2
 
#define M2MB_CRYPTO_ATTR_ECJPAKE_REMOTE_IDENTITY_E   0xD00020C2
 
#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_PUBLIC_KEY_1_E   0xD00030C2
 
#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_ZKP_EPHEMERAL_PUBLIC_KEY_1_E   0xD00040C2
 
#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_ZKP_SIGNATURE_1_E   0xD00050C2
 
#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_PUBLIC_KEY_2_E   0xD00060C2
 
#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_ZKP_EPHEMERAL_PUBLIC_KEY_2_E   0xD00070C2
 
#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_ZKP_SIGNATURE_2_E   0xD00080C2
 
#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND2_PUBLIC_KEY_E   0xD00090C2
 
#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND2_ZKP_EPHEMERAL_PUBLIC_KEY_E   0xD00100C2
 
#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND2_ZKP_SIGNATURE_E   0xD00110C2
 
#define M2MB_CRYPTO_AES128_KEY_BYTES   (16)
 
#define M2MB_CRYPTO_AES256_KEY_BYTES   (32)
 
#define M2MB_CRYPTO_AES_IV_BYTES   (16)
 
#define M2MB_CRYPTO_AES_BLOCK_BYTES   (16)
 
enum  m2mb_crypto_mode_t {
  M2MB_CRYPTO_MODE_ENCRYPT_E,
  M2MB_CRYPTO_MODE_DECRYPT_E,
  M2MB_CRYPTO_MODE_SIGN_E,
  M2MB_CRYPTO_MODE_VERIFY_E,
  M2MB_CRYPTO_MODE_MAC_E,
  M2MB_CRYPTO_MODE_DIGEST_E,
  M2MB_CRYPTO_MODE_DERIVE_E
}
 Operation mode. enum. More...
 
typedef UINT32 m2mb_crypto_obj_type_t
 Crypto object type.
Objects are the keys used in the crypto operations. More...
 
typedef UINT32 m2mb_crypto_alg_t
 Crypto algorithm type.
Algorithms are the cryptographic functions performed on the keys. More...
 
typedef UINT32 m2mb_crypto_attr_type_t
 Attribute type. Used in m2mb_crypto_attrib_t. More...
 
typedef struct m2mb_crypto_attr m2mb_crypto_attr_t
 
typedef struct m2mb_crypto_attrib m2mb_crypto_attrib_t
 An attribute can be either a buffer attribute or a value attribute. This is determined by bit [29] of the attribute identifier. If this bit is set to 0, then the attribute is a buffer attribute and the field ref must be selected. If the bit is set to 1, it is a value attribute and the field val must be selected. More...
 
typedef VOIDM2M_SHA_HANDLE
 Handle used in SHA operations. More...
 
INT32 m2mb_crypto_random_get (VOID *buffer, UINT16 len)
 To get random number. More...
 

Detailed Description

Crypto support.

we866e4/epl/core/m2mb/driver/crypto/m2mb_crypto.h

M2MB APIs to perform various cryptographic operations

Note
Dependencies:
"#include <m2mb_types.h>"
Author
Burhanuddin
Date
3/04/2018

Definition in file m2mb_crypto.h.