![]() |
WE310F5
39.00.000
|
This section describes the M2MB APIs to perform various cryptographic operations. More...
This section describes the M2MB APIs to perform various cryptographic operations.
M2MB crypto module allows the application to perform various cryptographic operations, such as:
#define M2MB_CRYPTO_AES128_KEY_BYTES (16) |
Cipher AES key size.
Definition at line 309 of file m2mb_crypto.h.
#define M2MB_CRYPTO_AES256_KEY_BYTES (32) |
Cipher AES key size.
Definition at line 311 of file m2mb_crypto.h.
#define M2MB_CRYPTO_AES_BLOCK_BYTES (16) |
Cipher AES block size.
Definition at line 315 of file m2mb_crypto.h.
#define M2MB_CRYPTO_AES_IV_BYTES (16) |
Cipher AES IV size.
Definition at line 313 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_AES_CBC_NOPAD_E 0x10000110 |
#define M2MB_CRYPTO_ALG_AES_CCM_E 0x40000710 |
Algorithm is AES CCM.
Definition at line 120 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_AES_CTR_E 0x10000210 |
Algorithm is AES CTR.
Definition at line 118 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_AES_GCM_E 0x40000810 |
Algorithm is AES GCM.
Definition at line 122 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_CHACHA20_POLY1305_E 0x400000C3 |
Algorithm is ChaCha20.
Definition at line 188 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_CURVE25519_DERIVE_SHARED_SECRET_E 0x800000C1 |
Algorithm is Curve25519.
Definition at line 184 of file m2mb_crypto.h.
#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.
#define M2MB_CRYPTO_ALG_ECDH_P192_E 0x80001042 |
Algorithm is ECDH P192.
Definition at line 172 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_ECDH_P224_E 0x80002042 |
Algorithm is ECDH P224.
Definition at line 174 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_ECDH_P256_E 0x80003042 |
Algorithm is ECDH P256.
Definition at line 176 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_ECDH_P384_E 0x80004042 |
Algorithm is ECDH P384.
Definition at line 178 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_ECDH_P521_E 0x80005042 |
Algorithm is ECDH P521.
Definition at line 180 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_ECDSA_P192_E 0x70001042 |
Algorithm is ECDSA P192.
Definition at line 162 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_ECDSA_P224_E 0x70002042 |
Algorithm is ECDSA P224.
Definition at line 164 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_ECDSA_P256_E 0x70003042 |
Algorithm is ECDSA P256.
Definition at line 166 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_ECDSA_P384_E 0x70004042 |
Algorithm is ECDSA P384.
Definition at line 168 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_ECDSA_P521_E 0x70005042 |
Algorithm is ECDSA P521.
Definition at line 170 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_ECJPAKE_E 0x800000C3 |
Algorithm is ECJPAKE.
Definition at line 190 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_ED25519_E 0x700000C0 |
Algorithm is ED25519.
Definition at line 182 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_HMAC_MD5_E 0x30000001 |
Algorithm is HMAC MD5.
Definition at line 150 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_HMAC_SHA1_E 0x30000002 |
Algorithm is HMAC SHA1.
Definition at line 152 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_HMAC_SHA224_E 0x30000003 |
Algorithm is HMAC SHA224.
Definition at line 154 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_HMAC_SHA256_E 0x30000004 |
Algorithm is HMAC SHA256.
Definition at line 156 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_HMAC_SHA384_E 0x30000005 |
Algorithm is HMAC SHA384.
Definition at line 158 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_HMAC_SHA512_E 0x30000006 |
Algorithm is HMAC SHA512.
Definition at line 160 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_MD5_E 0x50000001 |
Algorithm is MD5.
Definition at line 138 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_RSA_NOPAD_E 0x60000030 |
Algorithm is RSA with no pad.
Definition at line 134 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_RSAES_PKCS1_V1_5_E 0x60000130 |
Algorithm is RSA.
Definition at line 132 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_RSASSA_PKCS1_V1_5_SHA1_E 0x70002830 |
Algorithm is RSA SHA1.
Definition at line 124 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_RSASSA_PKCS1_V1_5_SHA256_E 0x70004830 |
Algorithm is RSA SHA256.
Definition at line 126 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_RSASSA_PKCS1_V1_5_SHA384_E 0x70005830 |
Algorithm is RSA SHA384.
Definition at line 128 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_RSASSA_PKCS1_V1_5_SHA512_E 0x70006830 |
Algorithm is RSA SHA512.
Definition at line 130 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_SHA1_E 0x50000002 |
Algorithm is SHA1.
Definition at line 140 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_SHA224_E 0x50000003 |
Algorithm is SHA224.
Definition at line 142 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_SHA256_E 0x50000004 |
Algorithm is SHA256.
Definition at line 144 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_SHA384_E 0x50000005 |
Algorithm is SHA384.
Definition at line 146 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_SHA512_E 0x50000006 |
Algorithm is SHA512.
Definition at line 148 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ALG_SRP_DERIVE_SHARED_SECRET_E 0x800000C2 |
Algorithm is SRP.
Definition at line 186 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_CURVE25519_PRIVATE_VALUE_E 0xC00002C1 |
Attribute Curve15519 private value.
Definition at line 226 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_CURVE25519_PUBLIC_VALUE_E 0xD00001C1 |
Attribute Curve25519 public value.
Definition at line 224 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_DH_BASE_E 0xD0001232 |
Attribute DH base.
Definition at line 238 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_DH_PRIME_E 0xD0001032 |
Attribute DH prime.
Definition at line 236 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_DH_PRIVATE_VALUE_E 0xC0000232 |
Attribute DH private value.
Definition at line 242 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_DH_PUBLIC_VALUE_E 0xD0000132 |
Attribute DH public value.
Definition at line 240 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_ECC_CURVE_E 0xF0000441 |
Attribute ECC curve.
Definition at line 234 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_ECC_PRIVATE_VALUE_E 0xC0000341 |
Attribute ECC private value.
Definition at line 232 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_ECC_PUBLIC_VALUE_X_E 0xD0000141 |
Attribute ECC public value x .
Definition at line 228 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_ECC_PUBLIC_VALUE_Y_E 0xD0000241 |
Attribute ECC public value y.
Definition at line 230 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_ECJPAKE_LOCAL_IDENTITY_E 0xD00010C2 |
Attribute ECJPAKE local identity.
Definition at line 280 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_ECJPAKE_REMOTE_IDENTITY_E 0xD00020C2 |
Attribute ECJPAKE remote identity.
Definition at line 282 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_PUBLIC_KEY_1_E 0xD00030C2 |
Attribute ECJPAKE public key.
Definition at line 284 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND1_PUBLIC_KEY_2_E 0xD00060C2 |
Attribute ECJPAKE public key.
Definition at line 290 of file m2mb_crypto.h.
#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.
#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.
#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.
#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.
#define M2MB_CRYPTO_ATTR_ECJPAKE_ROUND2_PUBLIC_KEY_E 0xD00090C2 |
Attribute ECJPAKE public key.
Definition at line 296 of file m2mb_crypto.h.
#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.
#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.
#define M2MB_CRYPTO_ATTR_ED25519_PRIVATE_VALUE_E 0xC00001C0 |
Attribute ED25519 private value.
Definition at line 222 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_ED25519_PUBLIC_VALUE_E 0xD00001C0 |
Attribute ED25519 public value.
Definition at line 220 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_RSA_COEFFICIENT_E 0xC0000830 |
Attribute RSA coefficient.
Definition at line 258 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_RSA_EXPONENT1_E 0xC0000630 |
Attribute RSA exponent1.
Definition at line 254 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_RSA_EXPONENT2_E 0xC0000730 |
Attribute RSA exponent2.
Definition at line 256 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_RSA_MODULUS_E 0xD0000130 |
Attribute RSA modulus.
Definition at line 244 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_RSA_PRIME1_E 0xC0000430 |
Attribute RSA prime1.
Definition at line 250 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_RSA_PRIME2_E 0xC0000530 |
Attribute RSA prime2.
Definition at line 252 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_RSA_PRIVATE_EXPONENT_E 0xC0000330 |
Attribute RSA private exponent.
Definition at line 248 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_RSA_PUBLIC_EXPONENT_E 0xD0000230 |
Attribute RSA public exponent.
Definition at line 246 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_SECRET_VALUE_E 0xC0000000 |
Attribute secret value.
Definition at line 218 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_SRP_GEN_E 0xD00002C2 |
Attribute SRP gen.
Definition at line 262 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_SRP_HASH_E 0xD00007C2 |
Attribute SRP hash.
Definition at line 272 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_SRP_PASSWORD_E 0xC00005C2 |
Attribute SRP password.
Definition at line 268 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_SRP_PRIME_E 0xD00001C2 |
Attribute SRP prime.
Definition at line 260 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_SRP_PRIVATE_VALUE_E 0xC0000AC2 |
Attribute SRP private value.
Definition at line 278 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_SRP_PUBLIC_VALUE_E 0xD00009C2 |
Attribute SRP public value.
Definition at line 276 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_SRP_SALT_E 0xD00008C2 |
Attribute SRP salt.
Definition at line 274 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_SRP_TYPE_E 0xD00006C2 |
Attribute SRP type.
Definition at line 270 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_SRP_USERNAME_E 0xD00004C2 |
Attribute SRP user name.
Definition at line 266 of file m2mb_crypto.h.
#define M2MB_CRYPTO_ATTR_SRP_VERIFIER_E 0xC00003C2 |
Attribute SRP verifier.
Definition at line 264 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_AES_E 0xA0000010 |
Object is AES.
Definition at line 65 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_CHACHA20_E 0xA00000C3 |
Object is ChaCha20.
Definition at line 101 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_CURVE25519_KEYPAIR_E 0xA10000C1 |
Object is Curve25519 key pair.
Definition at line 97 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_DH_KEYPAIR_E 0xA1000032 |
Object is Diffie-Helman key pair.
Definition at line 83 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_ECDH_KEYPAIR_E 0xA1000042 |
Object is ECDH key pair.
Definition at line 89 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_ECDSA_KEYPAIR_E 0xA1000041 |
Object is ECDSA key pair.
Definition at line 87 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_ECDSA_PUBLIC_KEY_E 0xA0000041 |
Object is ECDSA public key.
Definition at line 85 of file m2mb_crypto.h.
#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.
#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.
#define M2MB_CRYPTO_OBJ_TYPE_ED25519_KEYPAIR_E 0xA10000C0 |
Object is ED25519 key pair.
Definition at line 95 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_ED25519_PUBLIC_KEY_E 0xA00000C0 |
Object is ED25519 public key.
Definition at line 93 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_GENERIC_SECRET_E 0xA0000000 |
Object is generic secret.
Definition at line 91 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_HMAC_MD5_E 0xA0000001 |
Object is HMAC MD5.
Definition at line 67 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA1_E 0xA0000002 |
Object is HMAC SHA1.
Definition at line 69 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA224_E 0xA0000003 |
Object is HMAC SHA224.
Definition at line 71 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA256_E 0xA0000004 |
Object is HMAC SHA256.
Definition at line 73 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA384_E 0xA0000005 |
Object is HMAC SHA384.
Definition at line 75 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_HMAC_SHA512_E 0xA0000006 |
Object is HMAC SHA512.
Definition at line 77 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_RSA_KEYPAIR_E 0xA1000030 |
Object is RSA key pair.
Definition at line 81 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_RSA_PUBLIC_KEY_E 0xA0000030 |
Object is RSA public key.
Definition at line 79 of file m2mb_crypto.h.
#define M2MB_CRYPTO_OBJ_TYPE_SRP_KEYPAIR_E 0xA10000C2 |
Object is SRP key pair.
Definition at line 99 of file m2mb_crypto.h.
typedef VOID* M2M_SHA_HANDLE |
Handle used in SHA operations.
Definition at line 364 of file m2mb_crypto.h.
typedef UINT32 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.
typedef struct m2mb_crypto_attr m2mb_crypto_attr_t |
typedef UINT32 m2mb_crypto_attr_type_t |
Attribute type. Used in m2mb_crypto_attrib_t.
Definition at line 306 of file m2mb_crypto.h.
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.
typedef UINT32 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.
enum m2mb_crypto_mode_t |
Operation mode. enum.
Definition at line 199 of file m2mb_crypto.h.
To get random number.
Retrieves len random bytes into *buffer. Uses a hardware random number generator.
[out] | buffer | Pointer to a buffer to which to return random bytes. |
[in] | len | Number of random bytes to return. |
m2mb_crypto_random_get(VOID *buffer, UINT16 len);