WE310F5  39.00.000
M2MB CRYPTO

This section describes the M2MB APIs to perform various cryptographic operations. 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

This section describes the M2MB APIs to perform various cryptographic operations.

M2MB crypto module allows the application to perform various cryptographic operations, such as:

Macro Definition Documentation

◆ M2MB_CRYPTO_AES128_KEY_BYTES

#define M2MB_CRYPTO_AES128_KEY_BYTES   (16)

Cipher AES key size.

Definition at line 309 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_AES256_KEY_BYTES

#define M2MB_CRYPTO_AES256_KEY_BYTES   (32)

Cipher AES key size.

Definition at line 311 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_AES_BLOCK_BYTES

#define M2MB_CRYPTO_AES_BLOCK_BYTES   (16)

Cipher AES block size.

Definition at line 315 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_AES_IV_BYTES

#define M2MB_CRYPTO_AES_IV_BYTES   (16)

Cipher AES IV size.

Definition at line 313 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_AES_CBC_NOPAD_E

#define M2MB_CRYPTO_ALG_AES_CBC_NOPAD_E   0x10000110

Algorithm type.

Algorithm is AES CBC.

Definition at line 116 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_AES_CCM_E

#define M2MB_CRYPTO_ALG_AES_CCM_E   0x40000710

Algorithm is AES CCM.

Definition at line 120 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_AES_CTR_E

#define M2MB_CRYPTO_ALG_AES_CTR_E   0x10000210

Algorithm is AES CTR.

Definition at line 118 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_AES_GCM_E

#define M2MB_CRYPTO_ALG_AES_GCM_E   0x40000810

Algorithm is AES GCM.

Definition at line 122 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_CHACHA20_POLY1305_E

#define M2MB_CRYPTO_ALG_CHACHA20_POLY1305_E   0x400000C3

Algorithm is ChaCha20.

Definition at line 188 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_CURVE25519_DERIVE_SHARED_SECRET_E

#define M2MB_CRYPTO_ALG_CURVE25519_DERIVE_SHARED_SECRET_E   0x800000C1

Algorithm is Curve25519.

Definition at line 184 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_DH_DERIVE_SHARED_SECRET_E

#define M2MB_CRYPTO_ALG_DH_DERIVE_SHARED_SECRET_E   0x80000032

Algorithm is DH Derive Shared Secret.

Definition at line 136 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_ECDH_P192_E

#define M2MB_CRYPTO_ALG_ECDH_P192_E   0x80001042

Algorithm is ECDH P192.

Definition at line 172 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_ECDH_P224_E

#define M2MB_CRYPTO_ALG_ECDH_P224_E   0x80002042

Algorithm is ECDH P224.

Definition at line 174 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_ECDH_P256_E

#define M2MB_CRYPTO_ALG_ECDH_P256_E   0x80003042

Algorithm is ECDH P256.

Definition at line 176 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_ECDH_P384_E

#define M2MB_CRYPTO_ALG_ECDH_P384_E   0x80004042

Algorithm is ECDH P384.

Definition at line 178 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_ECDH_P521_E

#define M2MB_CRYPTO_ALG_ECDH_P521_E   0x80005042

Algorithm is ECDH P521.

Definition at line 180 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_ECDSA_P192_E

#define M2MB_CRYPTO_ALG_ECDSA_P192_E   0x70001042

Algorithm is ECDSA P192.

Definition at line 162 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_ECDSA_P224_E

#define M2MB_CRYPTO_ALG_ECDSA_P224_E   0x70002042

Algorithm is ECDSA P224.

Definition at line 164 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_ECDSA_P256_E

#define M2MB_CRYPTO_ALG_ECDSA_P256_E   0x70003042

Algorithm is ECDSA P256.

Definition at line 166 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_ECDSA_P384_E

#define M2MB_CRYPTO_ALG_ECDSA_P384_E   0x70004042

Algorithm is ECDSA P384.

Definition at line 168 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_ECDSA_P521_E

#define M2MB_CRYPTO_ALG_ECDSA_P521_E   0x70005042

Algorithm is ECDSA P521.

Definition at line 170 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_ECJPAKE_E

#define M2MB_CRYPTO_ALG_ECJPAKE_E   0x800000C3

Algorithm is ECJPAKE.

Definition at line 190 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_ED25519_E

#define M2MB_CRYPTO_ALG_ED25519_E   0x700000C0

Algorithm is ED25519.

Definition at line 182 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_HMAC_MD5_E

#define M2MB_CRYPTO_ALG_HMAC_MD5_E   0x30000001

Algorithm is HMAC MD5.

Definition at line 150 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_HMAC_SHA1_E

#define M2MB_CRYPTO_ALG_HMAC_SHA1_E   0x30000002

Algorithm is HMAC SHA1.

Definition at line 152 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_HMAC_SHA224_E

#define M2MB_CRYPTO_ALG_HMAC_SHA224_E   0x30000003

Algorithm is HMAC SHA224.

Definition at line 154 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_HMAC_SHA256_E

#define M2MB_CRYPTO_ALG_HMAC_SHA256_E   0x30000004

Algorithm is HMAC SHA256.

Definition at line 156 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_HMAC_SHA384_E

#define M2MB_CRYPTO_ALG_HMAC_SHA384_E   0x30000005

Algorithm is HMAC SHA384.

Definition at line 158 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_HMAC_SHA512_E

#define M2MB_CRYPTO_ALG_HMAC_SHA512_E   0x30000006

Algorithm is HMAC SHA512.

Definition at line 160 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_MD5_E

#define M2MB_CRYPTO_ALG_MD5_E   0x50000001

Algorithm is MD5.

Definition at line 138 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_RSA_NOPAD_E

#define M2MB_CRYPTO_ALG_RSA_NOPAD_E   0x60000030

Algorithm is RSA with no pad.

Definition at line 134 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_RSAES_PKCS1_V1_5_E

#define M2MB_CRYPTO_ALG_RSAES_PKCS1_V1_5_E   0x60000130

Algorithm is RSA.

Definition at line 132 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_RSASSA_PKCS1_V1_5_SHA1_E

#define M2MB_CRYPTO_ALG_RSASSA_PKCS1_V1_5_SHA1_E   0x70002830

Algorithm is RSA SHA1.

Definition at line 124 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_RSASSA_PKCS1_V1_5_SHA256_E

#define M2MB_CRYPTO_ALG_RSASSA_PKCS1_V1_5_SHA256_E   0x70004830

Algorithm is RSA SHA256.

Definition at line 126 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_RSASSA_PKCS1_V1_5_SHA384_E

#define M2MB_CRYPTO_ALG_RSASSA_PKCS1_V1_5_SHA384_E   0x70005830

Algorithm is RSA SHA384.

Definition at line 128 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_RSASSA_PKCS1_V1_5_SHA512_E

#define M2MB_CRYPTO_ALG_RSASSA_PKCS1_V1_5_SHA512_E   0x70006830

Algorithm is RSA SHA512.

Definition at line 130 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_SHA1_E

#define M2MB_CRYPTO_ALG_SHA1_E   0x50000002

Algorithm is SHA1.

Definition at line 140 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_SHA224_E

#define M2MB_CRYPTO_ALG_SHA224_E   0x50000003

Algorithm is SHA224.

Definition at line 142 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_SHA256_E

#define M2MB_CRYPTO_ALG_SHA256_E   0x50000004

Algorithm is SHA256.

Definition at line 144 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_SHA384_E

#define M2MB_CRYPTO_ALG_SHA384_E   0x50000005

Algorithm is SHA384.

Definition at line 146 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_SHA512_E

#define M2MB_CRYPTO_ALG_SHA512_E   0x50000006

Algorithm is SHA512.

Definition at line 148 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ALG_SRP_DERIVE_SHARED_SECRET_E

#define M2MB_CRYPTO_ALG_SRP_DERIVE_SHARED_SECRET_E   0x800000C2

Algorithm is SRP.

Definition at line 186 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_CURVE25519_PRIVATE_VALUE_E

#define M2MB_CRYPTO_ATTR_CURVE25519_PRIVATE_VALUE_E   0xC00002C1

Attribute Curve15519 private value.

Definition at line 226 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_CURVE25519_PUBLIC_VALUE_E

#define M2MB_CRYPTO_ATTR_CURVE25519_PUBLIC_VALUE_E   0xD00001C1

Attribute Curve25519 public value.

Definition at line 224 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_DH_BASE_E

#define M2MB_CRYPTO_ATTR_DH_BASE_E   0xD0001232

Attribute DH base.

Definition at line 238 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_DH_PRIME_E

#define M2MB_CRYPTO_ATTR_DH_PRIME_E   0xD0001032

Attribute DH prime.

Definition at line 236 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_DH_PRIVATE_VALUE_E

#define M2MB_CRYPTO_ATTR_DH_PRIVATE_VALUE_E   0xC0000232

Attribute DH private value.

Definition at line 242 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_DH_PUBLIC_VALUE_E

#define M2MB_CRYPTO_ATTR_DH_PUBLIC_VALUE_E   0xD0000132

Attribute DH public value.

Definition at line 240 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ECC_CURVE_E

#define M2MB_CRYPTO_ATTR_ECC_CURVE_E   0xF0000441

Attribute ECC curve.

Definition at line 234 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ECC_PRIVATE_VALUE_E

#define M2MB_CRYPTO_ATTR_ECC_PRIVATE_VALUE_E   0xC0000341

Attribute ECC private value.

Definition at line 232 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ECC_PUBLIC_VALUE_X_E

#define M2MB_CRYPTO_ATTR_ECC_PUBLIC_VALUE_X_E   0xD0000141

Attribute ECC public value x .

Definition at line 228 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ECC_PUBLIC_VALUE_Y_E

#define M2MB_CRYPTO_ATTR_ECC_PUBLIC_VALUE_Y_E   0xD0000241

Attribute ECC public value y.

Definition at line 230 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ECJPAKE_LOCAL_IDENTITY_E

#define M2MB_CRYPTO_ATTR_ECJPAKE_LOCAL_IDENTITY_E   0xD00010C2

Attribute ECJPAKE local identity.

Definition at line 280 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ECJPAKE_REMOTE_IDENTITY_E

#define M2MB_CRYPTO_ATTR_ECJPAKE_REMOTE_IDENTITY_E   0xD00020C2

Attribute ECJPAKE remote identity.

Definition at line 282 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_PUBLIC_KEY_1_E

#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_PUBLIC_KEY_1_E   0xD00030C2

Attribute ECJPAKE public key.

Definition at line 284 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_PUBLIC_KEY_2_E

#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_PUBLIC_KEY_2_E   0xD00060C2

Attribute ECJPAKE public key.

Definition at line 290 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_ZKP_EPHEMERAL_PUBLIC_KEY_1_E

#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_ZKP_EPHEMERAL_PUBLIC_KEY_1_E   0xD00040C2

Attribute ECJPAKE zero knowledge proof ephemeral public key.

Definition at line 286 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_ZKP_EPHEMERAL_PUBLIC_KEY_2_E

#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_ZKP_EPHEMERAL_PUBLIC_KEY_2_E   0xD00070C2

Attribute ECJPAKE zero knowledge proof ephemeral public key.

Definition at line 292 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_ZKP_SIGNATURE_1_E

#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_ZKP_SIGNATURE_1_E   0xD00050C2

Attribute ECJPAKE zero knowledge proof signature.

Definition at line 288 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_ZKP_SIGNATURE_2_E

#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_ZKP_SIGNATURE_2_E   0xD00080C2

Attribute ECJPAKE zero knowledge proof signature.

Definition at line 294 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ECJPAKE_ROUND2_PUBLIC_KEY_E

#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND2_PUBLIC_KEY_E   0xD00090C2

Attribute ECJPAKE public key.

Definition at line 296 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ECJPAKE_ROUND2_ZKP_EPHEMERAL_PUBLIC_KEY_E

#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND2_ZKP_EPHEMERAL_PUBLIC_KEY_E   0xD00100C2

Attribute ECJPAKE zero knowledge proof ephemeral public key.

Definition at line 298 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ECJPAKE_ROUND2_ZKP_SIGNATURE_E

#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND2_ZKP_SIGNATURE_E   0xD00110C2

Attribute ECJPAKE zero knowledge proof signature.

Definition at line 300 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ED25519_PRIVATE_VALUE_E

#define M2MB_CRYPTO_ATTR_ED25519_PRIVATE_VALUE_E   0xC00001C0

Attribute ED25519 private value.

Definition at line 222 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_ED25519_PUBLIC_VALUE_E

#define M2MB_CRYPTO_ATTR_ED25519_PUBLIC_VALUE_E   0xD00001C0

Attribute ED25519 public value.

Definition at line 220 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_RSA_COEFFICIENT_E

#define M2MB_CRYPTO_ATTR_RSA_COEFFICIENT_E   0xC0000830

Attribute RSA coefficient.

Definition at line 258 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_RSA_EXPONENT1_E

#define M2MB_CRYPTO_ATTR_RSA_EXPONENT1_E   0xC0000630

Attribute RSA exponent1.

Definition at line 254 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_RSA_EXPONENT2_E

#define M2MB_CRYPTO_ATTR_RSA_EXPONENT2_E   0xC0000730

Attribute RSA exponent2.

Definition at line 256 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_RSA_MODULUS_E

#define M2MB_CRYPTO_ATTR_RSA_MODULUS_E   0xD0000130

Attribute RSA modulus.

Definition at line 244 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_RSA_PRIME1_E

#define M2MB_CRYPTO_ATTR_RSA_PRIME1_E   0xC0000430

Attribute RSA prime1.

Definition at line 250 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_RSA_PRIME2_E

#define M2MB_CRYPTO_ATTR_RSA_PRIME2_E   0xC0000530

Attribute RSA prime2.

Definition at line 252 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_RSA_PRIVATE_EXPONENT_E

#define M2MB_CRYPTO_ATTR_RSA_PRIVATE_EXPONENT_E   0xC0000330

Attribute RSA private exponent.

Definition at line 248 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_RSA_PUBLIC_EXPONENT_E

#define M2MB_CRYPTO_ATTR_RSA_PUBLIC_EXPONENT_E   0xD0000230

Attribute RSA public exponent.

Definition at line 246 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_SECRET_VALUE_E

#define M2MB_CRYPTO_ATTR_SECRET_VALUE_E   0xC0000000

Attribute secret value.

Definition at line 218 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_SRP_GEN_E

#define M2MB_CRYPTO_ATTR_SRP_GEN_E   0xD00002C2

Attribute SRP gen.

Definition at line 262 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_SRP_HASH_E

#define M2MB_CRYPTO_ATTR_SRP_HASH_E   0xD00007C2

Attribute SRP hash.

Definition at line 272 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_SRP_PASSWORD_E

#define M2MB_CRYPTO_ATTR_SRP_PASSWORD_E   0xC00005C2

Attribute SRP password.

Definition at line 268 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_SRP_PRIME_E

#define M2MB_CRYPTO_ATTR_SRP_PRIME_E   0xD00001C2

Attribute SRP prime.

Definition at line 260 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_SRP_PRIVATE_VALUE_E

#define M2MB_CRYPTO_ATTR_SRP_PRIVATE_VALUE_E   0xC0000AC2

Attribute SRP private value.

Definition at line 278 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_SRP_PUBLIC_VALUE_E

#define M2MB_CRYPTO_ATTR_SRP_PUBLIC_VALUE_E   0xD00009C2

Attribute SRP public value.

Definition at line 276 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_SRP_SALT_E

#define M2MB_CRYPTO_ATTR_SRP_SALT_E   0xD00008C2

Attribute SRP salt.

Definition at line 274 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_SRP_TYPE_E

#define M2MB_CRYPTO_ATTR_SRP_TYPE_E   0xD00006C2

Attribute SRP type.

Definition at line 270 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_SRP_USERNAME_E

#define M2MB_CRYPTO_ATTR_SRP_USERNAME_E   0xD00004C2

Attribute SRP user name.

Definition at line 266 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_ATTR_SRP_VERIFIER_E

#define M2MB_CRYPTO_ATTR_SRP_VERIFIER_E   0xC00003C2

Attribute SRP verifier.

Definition at line 264 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_AES_E

#define M2MB_CRYPTO_OBJ_TYPE_AES_E   0xA0000010

Object is AES.

Definition at line 65 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_CHACHA20_E

#define M2MB_CRYPTO_OBJ_TYPE_CHACHA20_E   0xA00000C3

Object is ChaCha20.

Definition at line 101 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_CURVE25519_KEYPAIR_E

#define M2MB_CRYPTO_OBJ_TYPE_CURVE25519_KEYPAIR_E   0xA10000C1

Object is Curve25519 key pair.

Definition at line 97 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_DH_KEYPAIR_E

#define M2MB_CRYPTO_OBJ_TYPE_DH_KEYPAIR_E   0xA1000032

Object is Diffie-Helman key pair.

Definition at line 83 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_ECDH_KEYPAIR_E

#define M2MB_CRYPTO_OBJ_TYPE_ECDH_KEYPAIR_E   0xA1000042

Object is ECDH key pair.

Definition at line 89 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_ECDSA_KEYPAIR_E

#define M2MB_CRYPTO_OBJ_TYPE_ECDSA_KEYPAIR_E   0xA1000041

Object is ECDSA key pair.

Definition at line 87 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_ECDSA_PUBLIC_KEY_E

#define M2MB_CRYPTO_OBJ_TYPE_ECDSA_PUBLIC_KEY_E   0xA0000041

Object is ECDSA public key.

Definition at line 85 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_ECJPAKE_ROUND1_PUBLIC_KEY_AND_ZKP_PAIR_E

#define M2MB_CRYPTO_OBJ_TYPE_ECJPAKE_ROUND1_PUBLIC_KEY_AND_ZKP_PAIR_E   0xA10000C3

Object is round1 ECJPAKE public key and zero knowledge proof pair.

Definition at line 103 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_ECJPAKE_ROUND2_PUBLIC_KEY_AND_ZKP_E

#define M2MB_CRYPTO_OBJ_TYPE_ECJPAKE_ROUND2_PUBLIC_KEY_AND_ZKP_E   0xA10000C4

Object is round2 ECJPAKE public key and zero knowledge proof.

Definition at line 105 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_ED25519_KEYPAIR_E

#define M2MB_CRYPTO_OBJ_TYPE_ED25519_KEYPAIR_E   0xA10000C0

Object is ED25519 key pair.

Definition at line 95 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_ED25519_PUBLIC_KEY_E

#define M2MB_CRYPTO_OBJ_TYPE_ED25519_PUBLIC_KEY_E   0xA00000C0

Object is ED25519 public key.

Definition at line 93 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_GENERIC_SECRET_E

#define M2MB_CRYPTO_OBJ_TYPE_GENERIC_SECRET_E   0xA0000000

Object is generic secret.

Definition at line 91 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_HMAC_MD5_E

#define M2MB_CRYPTO_OBJ_TYPE_HMAC_MD5_E   0xA0000001

Object is HMAC MD5.

Definition at line 67 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA1_E

#define M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA1_E   0xA0000002

Object is HMAC SHA1.

Definition at line 69 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA224_E

#define M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA224_E   0xA0000003

Object is HMAC SHA224.

Definition at line 71 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA256_E

#define M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA256_E   0xA0000004

Object is HMAC SHA256.

Definition at line 73 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA384_E

#define M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA384_E   0xA0000005

Object is HMAC SHA384.

Definition at line 75 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA512_E

#define M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA512_E   0xA0000006

Object is HMAC SHA512.

Definition at line 77 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_RSA_KEYPAIR_E

#define M2MB_CRYPTO_OBJ_TYPE_RSA_KEYPAIR_E   0xA1000030

Object is RSA key pair.

Definition at line 81 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_RSA_PUBLIC_KEY_E

#define M2MB_CRYPTO_OBJ_TYPE_RSA_PUBLIC_KEY_E   0xA0000030

Object is RSA public key.

Definition at line 79 of file m2mb_crypto.h.

◆ M2MB_CRYPTO_OBJ_TYPE_SRP_KEYPAIR_E

#define M2MB_CRYPTO_OBJ_TYPE_SRP_KEYPAIR_E   0xA10000C2

Object is SRP key pair.

Definition at line 99 of file m2mb_crypto.h.

Typedef Documentation

◆ M2M_SHA_HANDLE

typedef VOID* M2M_SHA_HANDLE

Handle used in SHA operations.

Definition at line 364 of file m2mb_crypto.h.

◆ m2mb_crypto_alg_t

Crypto algorithm type.
Algorithms are the cryptographic functions performed on the keys.

Definition at line 196 of file m2mb_crypto.h.

◆ m2mb_crypto_attr_t

◆ m2mb_crypto_attr_type_t

Attribute type. Used in m2mb_crypto_attrib_t.

Definition at line 306 of file m2mb_crypto.h.

◆ 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.

◆ m2mb_crypto_obj_type_t

Crypto object type.
Objects are the keys used in the crypto operations.

Definition at line 110 of file m2mb_crypto.h.

Enumeration Type Documentation

◆ m2mb_crypto_mode_t

Operation mode. enum.

Enumerator
M2MB_CRYPTO_MODE_ENCRYPT_E 

Operation Encrypt.

M2MB_CRYPTO_MODE_DECRYPT_E 

Operation Decrypt.

M2MB_CRYPTO_MODE_SIGN_E 

Operation Sign.

M2MB_CRYPTO_MODE_VERIFY_E 

Operation Verify.

M2MB_CRYPTO_MODE_MAC_E 

Operation MAC.

M2MB_CRYPTO_MODE_DIGEST_E 

Operation Digest.

M2MB_CRYPTO_MODE_DERIVE_E 

Operation Key derivation.

Definition at line 199 of file m2mb_crypto.h.

Function Documentation

◆ m2mb_crypto_random_get()

INT32 m2mb_crypto_random_get ( VOID buffer,
UINT16  len 
)

To get random number.

Retrieves len random bytes into *buffer. Uses a hardware random number generator.

Parameters
[out]bufferPointer to a buffer to which to return random bytes.
[in]lenNumber of random bytes to return.
Returns
0 on success. Error code on failure.
Note
<Notes>

m2mb_crypto_random_get(VOID *buffer, UINT16 len);

int main()
{
INT32 ret;
UINT16 rand_number;
ret=m2mb_crypto_random_get(&rand_number, sizeof(rand_number));
if(ret!=0)
{
return M2MB_ERROR
}
}