/**************************************************************************//* *//* Copyright (c) Microsoft Corporation. All rights reserved. *//* *//* This software is licensed under the Microsoft Software License *//* Terms for Microsoft Azure RTOS. Full text of the license can be *//* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA *//* and in the root directory of this software. *//* */.../**************************************************************************/.../**************************************************************************//**************************************************************************//** *//** NetX Crypto Component *//** *//** Crypto *//** */.../**************************************************************************//**************************************************************************/.../**************************************************************************//* *//* COMPONENT DEFINITION RELEASE *//* *//* nx_crypto_const.h PORTABLE C *//* 6.1.7 *//* AUTHOR *//* *//* Timothy Stapko, Microsoft Corporation *//* *//* DESCRIPTION *//* *//* This file defines the NetX Security Encryption component. *//* *//* RELEASE HISTORY *//* *//* DATE NAME DESCRIPTION *//* *//* 05-19-2020 Timothy Stapko Initial Version 6.0 *//* 09-30-2020 Timothy Stapko Modified comment(s), added *//* new constants, *//* resulting in version 6.1 *//* 06-02-2021 Bhupendra Naphade Modified comment(s), *//* renamed FIPS symbol to *//* self-test, *//* resulting in version 6.1.7 *//* */.../**************************************************************************/#ifndef_NX_CRYPTO_CONST_H_#define_NX_CRYPTO_CONST_H_/* Determine if a C++ compiler is being used. If so, ensure that standard C is used to process the API information. *//* ... */#ifdef__cplusplus/* Yes, C++ compiler is present. Use standard C. */extern"C"{#endif/* Define the encryption algorithm, as outlined in RFC 4305 3.1.1 *//* These values are used in nx_crypto_algorithm field. *//* Values of 16 least significant bits are the same as defined in RFC 5996 3.3.2 */#defineNX_CRYPTO_ENCRYPTION_MASK0x00000000#defineNX_CRYPTO_NONE0x00000000#defineNX_CRYPTO_ENCRYPTION_DES_IV640x00000001#defineNX_CRYPTO_ENCRYPTION_DES_CBC0x00000002#defineNX_CRYPTO_ENCRYPTION_3DES_CBC0x00000003#defineNX_CRYPTO_ENCRYPTION_RC50x00000004#defineNX_CRYPTO_ENCRYPTION_IDEA0x00000005#defineNX_CRYPTO_ENCRYPTION_CAST0x00000006#defineNX_CRYPTO_ENCRYPTION_BLOWFISH0x00000007#defineNX_CRYPTO_ENCRYPTION_3IDEA0x00000008#defineNX_CRYPTO_ENCRYPTION_DES_IV320x00000009#defineNX_CRYPTO_ENCRYPTION_NULL0x0000000B#defineNX_CRYPTO_ENCRYPTION_AES_CBC0x0000000C#defineNX_CRYPTO_ENCRYPTION_AES_CTR0x0000000D#defineNX_CRYPTO_ENCRYPTION_AES_CCM_80x0000000E#defineNX_CRYPTO_ENCRYPTION_AES_CCM_120x0000000F#defineNX_CRYPTO_ENCRYPTION_AES_CCM_160x00000010#defineNX_CRYPTO_ENCRYPTION_AES_CCM0x00000011/* Unassigned number in IANA, define it for all other length ICV. */#defineNX_CRYPTO_ENCRYPTION_AES_GCM_80x00000012#defineNX_CRYPTO_ENCRYPTION_AES_GCM_120x00000013#defineNX_CRYPTO_ENCRYPTION_AES_GCM_160x00000014#defineNX_CRYPTO_ENCRYPTION_NULL_AUTH_AES_GMAC0x00000015#defineNX_CRYPTO_ENCRYPTION_CAMELLIA_CBC0x00000017#defineNX_CRYPTO_ENCRYPTION_CAMELLIA_CTR0x00000018#defineNX_CRYPTO_ENCRYPTION_CAMELLIA_CCM_80x00000019#defineNX_CRYPTO_ENCRYPTION_CAMELLIA_CCM_120x0000001A#defineNX_CRYPTO_ENCRYPTION_CAMELLIA_CCM_160x0000001B#defineNX_CRYPTO_ENCRYPTION_CHACHA20_POLY13050x0000001C/* Define the authentication algorithm, as outlined in RFC 4305 3.2 *//* See also: https://www.iana.org/assignments/ikev2-parameters/ikev2-parameters.xhtml *//* These values are used in nx_crypto_algorithm field. *//* Values of 16 least significant bits are the same as defined in RFC 5996 3.3.2 */#defineNX_CRYPTO_AUTHENTICATION_MASK0x00010000#defineNX_CRYPTO_AUTHENTICATION_NONE0x00010000#defineNX_CRYPTO_AUTHENTICATION_HMAC_MD5_960x00010001#defineNX_CRYPTO_AUTHENTICATION_HMAC_SHA1_960x00010002#defineNX_CRYPTO_AUTHENTICATION_DES_MAC0x00010003#defineNX_CRYPTO_AUTHENTICATION_KPDK_MD50x00010004#defineNX_CRYPTO_AUTHENTICATION_AES_XCBC_MAC_960x00010005#defineNX_CRYPTO_AUTHENTICATION_HMAC_MD5_1280x00010006#defineNX_CRYPTO_AUTHENTICATION_HMAC_SHA1_1600x00010007#defineNX_CRYPTO_AUTHENTICATION_AES_CMAC_960x00010008#defineNX_CRYPTO_AUTHENTICATION_AES_128_GMAC0x00010009#defineNX_CRYPTO_AUTHENTICATION_AES_192_GMAC0x0001000A#defineNX_CRYPTO_AUTHENTICATION_AES_256_GMAC0x0001000B#defineNX_CRYPTO_AUTHENTICATION_HMAC_SHA2_2560x0001000C#defineNX_CRYPTO_AUTHENTICATION_HMAC_SHA2_3840x0001000D#defineNX_CRYPTO_AUTHENTICATION_HMAC_SHA2_5120x0001000E#defineNX_CRYPTO_AUTHENTICATION_HMAC_SHA2_2240x0001000F/* Unassigned number in IANA. */#defineNX_CRYPTO_AUTHENTICATION_HMAC_SHA2_512_2240x00010010/* Unassigned number in IANA. */#defineNX_CRYPTO_AUTHENTICATION_HMAC_SHA2_512_2560x00010011/* Unassigned number in IANA. *//* Define the Pseudorandom Function algorithm *//* These values are used in nx_crypto_algorithm field. *//* Values of 16 least significant bits are the same as defined in RFC 5996 3.3.2, * except for algorithms not found in that RFC such as the HKDF. *//* ... */#defineNX_CRYPTO_PRF_MASK0x00020000#defineNX_CRYPTO_PRF_HMAC_MD50x00020001#defineNX_CRYPTO_PRF_HMAC_SHA10x00020002#defineNX_CRYPTO_PRF_HMAC_TIGER0x00020003#defineNX_CRYPTO_PRF_HMAC_AES128_XCBC0x00020004#defineNX_CRYPTO_PRF_HMAC_SHA2_2560x00020005#defineNX_CRYPTO_PRF_HMAC_SHA2_3840x00020006#defineNX_CRYPTO_PRF_HMAC_SHA2_5120x00020007#defineNX_CRYPTO_HKDF_METHOD0x00020008/* Define the hash algorithm */#defineNX_CRYPTO_HASH_MASK0x00030000#defineNX_CRYPTO_HASH_NONE0x00030001#defineNX_CRYPTO_HASH_MD50x00030002#defineNX_CRYPTO_HASH_SHA10x00030003#defineNX_CRYPTO_HASH_SHA2240x00030004#defineNX_CRYPTO_HASH_SHA2560x00030005#defineNX_CRYPTO_HASH_SHA3840x00030006#defineNX_CRYPTO_HASH_SHA5120x00030007#defineNX_CRYPTO_HASH_SHA512_2240x00030008#defineNX_CRYPTO_HASH_SHA512_2560x00030009#defineNX_CRYPTO_HASH_HMAC0x0003000A/* Generic HMAC wrapper. *//* Define the key exchange algorithm */#defineNX_CRYPTO_KEY_EXCHANGE_MASK0x00040000#defineNX_CRYPTO_KEY_EXCHANGE_NONE0x00040000#defineNX_CRYPTO_KEY_EXCHANGE_PSK0x00040001#defineNX_CRYPTO_KEY_EXCHANGE_RSA0x00040002#defineNX_CRYPTO_KEY_EXCHANGE_DH0x00040003#defineNX_CRYPTO_KEY_EXCHANGE_DHE0x00040004#defineNX_CRYPTO_KEY_EXCHANGE_ECDH0x00040005#defineNX_CRYPTO_KEY_EXCHANGE_ECDHE0x00040006#defineNX_CRYPTO_KEY_EXCHANGE_ECJPAKE0x00040007/*Define the digital signature algorithm */#defineNX_CRYPTO_DIGITAL_SIGNATURE_MASK0x00050000#defineNX_CRYPTO_DIGITAL_SIGNATURE_ANONYMOUS0x00050000#defineNX_CRYPTO_DIGITAL_SIGNATURE_RSA0x00050001#defineNX_CRYPTO_DIGITAL_SIGNATURE_DSA0x00050002#defineNX_CRYPTO_DIGITAL_SIGNATURE_ECDSA0x00050003/*Define the elliptic curve algorithm *//* Values of 16 least significant bits are the same as named curve defined in RFC 4492, section 5.1.1 */#defineNX_CRYPTO_EC_MASK0x00060000#defineNX_CRYPTO_EC_SECT163K10x00060001#defineNX_CRYPTO_EC_SECT163R10x00060002#defineNX_CRYPTO_EC_SECT163R20x00060003#defineNX_CRYPTO_EC_SECT193R10x00060004#defineNX_CRYPTO_EC_SECT193R20x00060005#defineNX_CRYPTO_EC_SECT233K10x00060006#defineNX_CRYPTO_EC_SECT233R10x00060007#defineNX_CRYPTO_EC_SECT239K10x00060008#defineNX_CRYPTO_EC_SECT283K10x00060009#defineNX_CRYPTO_EC_SECT283R10x0006000A#defineNX_CRYPTO_EC_SECT409K10x0006000B#defineNX_CRYPTO_EC_SECT409R10x0006000C#defineNX_CRYPTO_EC_SECT571K10x0006000D#defineNX_CRYPTO_EC_SECT571R10x0006000E#defineNX_CRYPTO_EC_SECP160K10x0006000F#defineNX_CRYPTO_EC_SECP160R10x00060010#defineNX_CRYPTO_EC_SECP160R20x00060011#defineNX_CRYPTO_EC_SECP192K10x00060012#defineNX_CRYPTO_EC_SECP192R10x00060013#defineNX_CRYPTO_EC_SECP224K10x00060014#defineNX_CRYPTO_EC_SECP224R10x00060015#defineNX_CRYPTO_EC_SECP256K10x00060016#defineNX_CRYPTO_EC_SECP256R10x00060017#defineNX_CRYPTO_EC_SECP384R10x00060018#defineNX_CRYPTO_EC_SECP521R10x00060019#defineNX_CRYPTO_EC_BRAINPOOLP256r10x0006001A#defineNX_CRYPTO_EC_BRAINPOOLP384r10x0006001B#defineNX_CRYPTO_EC_BRAINPOOLP512r10x0006001C#defineNX_CRYPTO_EC_FFDHE20480x00060100#defineNX_CRYPTO_EC_FFDHE30720x00060101#defineNX_CRYPTO_EC_FFDHE40960x00060102#defineNX_CRYPTO_EC_FFDHE61440x00060103#defineNX_CRYPTO_EC_FFDHE81920x00060104#defineNX_CRYPTO_EC_PRIME0x0006FF01#defineNX_CRYPTO_EC_CHAR20x0006FF02/* Elliptic curve point format definitions. */#defineNX_CRYPTO_EC_POINT_UNCOMPRESSED0#defineNX_CRYPTO_EC_POINT_ANSIX962_COMPRESSED_PRIME1#defineNX_CRYPTO_EC_POINT_ANSIX962_COMPRESSED_CHAR22/* Define crypto ICV bits size. */#defineNX_CRYPTO_AUTHENTICATION_ICV_TRUNC_BITS96121 defines#ifndefNX_CRYPTO_MAX_IV_SIZE_IN_BITS#defineNX_CRYPTO_MAX_IV_SIZE_IN_BITS192#endif/* NX_CRYPTO_MAX_IV_SIZE_IN_BYTES *//* NX_CRYPTO_ROLE_xxx - used to identify the "role of a crypto algorithm in a ciphersuite/X.509 mapping. *//* ... */#defineNX_CRYPTO_ROLE_NONE0/* Used to indicate the end of a list. */#defineNX_CRYPTO_ROLE_KEY_EXCHANGE1/* Cipher is used for key exchange (e.g. RSA, ECDHE) */#defineNX_CRYPTO_ROLE_SIGNATURE_CRYPTO2/* Cipher is used for encrypting a signature (e.g. RSA, DSA) */#defineNX_CRYPTO_ROLE_SIGNATURE_HASH3/* Cipher is used to generate a signature hash (e.g. SHA-1, SHA-256) */#defineNX_CRYPTO_ROLE_SYMMETRIC4/* Cipher is used for symmetric encryption (e.g. AES, RC4) */#defineNX_CRYPTO_ROLE_MAC_HASH5/* Cipher is used for hash MAC generation (e.g. HMAC-SHA-1, HMAC-SHA-256) */#defineNX_CRYPTO_ROLE_PRF6/* Cipher is used for TLS PRF (key generation). */#defineNX_CRYPTO_ROLE_HMAC7/* Generic HMAC wrapper to be used with a "raw" hash function. */#defineNX_CRYPTO_ROLE_RAW_HASH8/* A "raw" hash function is the cryptographic primitive without a wrapper (e.g. SHA-256, no HMAC). *//* Define values used for nx_crypto_type. */#defineNX_CRYPTO_ENCRYPT1/* ESP Encrypt (egress) */#defineNX_CRYPTO_DECRYPT2/* ESP Decrypt (ingress) */#defineNX_CRYPTO_AUTHENTICATE3/* AH Authenticate (egress) */#defineNX_CRYPTO_VERIFY4/* AH Verify (ingress) */#defineNX_CRYPTO_HASH_INITIALIZE5/* Hash initialize */#defineNX_CRYPTO_HASH_UPDATE6/* Hash update */#defineNX_CRYPTO_HASH_CALCULATE7/* Hash calculate */#defineNX_CRYPTO_PRF8/* For the TLS PRF function. */#defineNX_CRYPTO_SET_PRIME_P9/* Set Prime number P. This is used in software RSA implementation. */#defineNX_CRYPTO_SET_PRIME_Q10/* Set Prime number Q. This is used in software RSA implementation. */#defineNX_CRYPTO_SET_ADDITIONAL_DATA11/* Set additional data pointer and length. */#defineNX_CRYPTO_HASH_METHOD_SET12/* Set hash method. */#defineNX_CRYPTO_SIGNATURE_GENERATE13/* Signature generation. */#defineNX_CRYPTO_SIGNATURE_VERIFY14/* Signature verification. */#defineNX_CRYPTO_PRF_SET_HASHNX_CRYPTO_HASH_METHOD_SET/* ECJPAKE operations. */#defineNX_CRYPTO_ECJPAKE_HASH_METHOD_SETNX_CRYPTO_HASH_METHOD_SET#defineNX_CRYPTO_ECJPAKE_CURVE_SET21#defineNX_CRYPTO_ECJPAKE_CLIENT_HELLO_GENERATE22#defineNX_CRYPTO_ECJPAKE_SERVER_HELLO_GENERATE23#defineNX_CRYPTO_ECJPAKE_CLIENT_HELLO_PROCESS24#defineNX_CRYPTO_ECJPAKE_SERVER_HELLO_PROCESS25#defineNX_CRYPTO_ECJPAKE_CLIENT_KEY_EXCHANGE_GENERATE26#defineNX_CRYPTO_ECJPAKE_SERVER_KEY_EXCHANGE_GENERATE27#defineNX_CRYPTO_ECJPAKE_CLIENT_KEY_EXCHANGE_PROCESS28#defineNX_CRYPTO_ECJPAKE_SERVER_KEY_EXCHANGE_PROCESS29#defineNX_CRYPTO_ENCRYPT_INITIALIZE30/* Encrypt initialize */#defineNX_CRYPTO_DECRYPT_INITIALIZE31/* Decrypt initialize */#defineNX_CRYPTO_ENCRYPT_UPDATE32/* Encrypt update */#defineNX_CRYPTO_DECRYPT_UPDATE33/* Decrypt update */#defineNX_CRYPTO_ENCRYPT_CALCULATE34/* Final encrypt calculation */#defineNX_CRYPTO_DECRYPT_CALCULATE35/* Final decrypt calculation *//* EC operations. */#defineNX_CRYPTO_EC_CURVE_GET40#defineNX_CRYPTO_EC_CURVE_SET41#defineNX_CRYPTO_EC_KEY_PAIR_GENERATE42/* DH and ECDH operations. */#defineNX_CRYPTO_DH_SETUP50#defineNX_CRYPTO_DH_CALCULATE51#defineNX_CRYPTO_DH_KEY_PAIR_IMPORT52#defineNX_CRYPTO_DH_PRIVATE_KEY_EXPORT53/* DRBG operations. */#defineNX_CRYPTO_DRBG_OPTIONS_SET60#defineNX_CRYPTO_DRBG_INSTANTIATE61#defineNX_CRYPTO_DRBG_RESEED62#defineNX_CRYPTO_DRBG_GENERATE63/* HKDF operations. */#defineNX_CRYPTO_HKDF_SET_HASHNX_CRYPTO_HASH_METHOD_SET/* Set the generic hash routine to be used for HKDF. */#defineNX_CRYPTO_HKDF_EXTRACT70/* Perform an HKDF-extract operation. */#defineNX_CRYPTO_HKDF_EXPAND71/* Perform an HKDF-expand operation. */#defineNX_CRYPTO_HKDF_SET_PRK72/* Set the Pseudo-Random Key for an HKDF-expand operation. */#defineNX_CRYPTO_HKDF_SET_HMAC73/* Set the generic HMAC routine to be used for HKDF. */#defineNX_CRYPTO_HMAC_SET_HASH74/* Set the generic hash routine to be used for HMAC operations. *//* Define align MACRO to a byte boundry. */#defineNX_CRYPTO_ALIGN8(len)(((len)+7)&~7)/* Find the offset of a structure. */#defineNX_CRYPTO_OFFSET(a,b)((ULONG)(&(((a*)(0))->b)))59 definestypedefUINTNX_CRYPTO_KEY_SIZE;#defineNX_CRYPTO_SUCCESS0x0/* Function returned successfully. */#defineNX_CRYPTO_INVALID_LIBRARY0x20001/* Crypto library has not been initialized or failed the Power On Self Test (POST). *//* ... */#defineNX_CRYPTO_UNSUPPORTED_KEY_SIZE0x20002/* Unsupported key size. */#defineNX_CRYPTO_AUTHENTICATION_FAILED0x20003/* Authentication failed. */#defineNX_CRYPTO_INVALID_ALGORITHM0x20004#defineNX_CRYPTO_INVALID_KEY0x20005#defineNX_CRYPTO_INVALID_BUFFER_SIZE0x20006#defineNX_CRYPTO_PTR_ERROR0x20007#defineNX_CRYPTO_SIZE_ERROR0x20008#defineNX_CRYPTO_NOT_SUCCESSFUL0x20009#defineNX_CRYPTO_INVALID_PARAMETER0x2000A#defineNX_CRYPTO_NO_INSTANCE0x2000B#defineNX_CRYPTO_METHOD_INITIALIZATION_FAILURE0x2000C/* A method was not properly initialized before use. */#defineNX_CRYPTO_METADATA_UNALIGNED0x2000D/* Crypto metadata must be 4-byte aligned. */#defineNX_CRYPTO_POINTER_ERROR0x2000E/* An invalid (NULL?) pointer was passed into a crypto method. */#defineNX_CRYTPO_MISSING_ECC_CURVE0x2000F/* ECC curve lookup failed to return a matching curve. */#defineNX_CRYPTO_FORMAT_NOT_SUPPORTED0x20010/* Unsupported Format */#defineNX_CRYPTO_NULL0#defineNX_CRYPTO_FALSE0#defineNX_CRYPTO_TRUE1/* The following symbols are mapped to the error code for backward compatibility. */#defineNX_CRYPTO_AES_UNSUPPORTED_KEY_SIZENX_CRYPTO_UNSUPPORTED_KEY_SIZE21 defines#ifdefNX_CRYPTO_SELF_TEST#defineNX_CRYPTO_LIBRARY_STATE_UNINITIALIZED0x00000001U#defineNX_CRYPTO_LIBRARY_STATE_POST_IN_PROGRESS0x00000002U#defineNX_CRYPTO_LIBRARY_STATE_POST_FAILED0x00000004U#defineNX_CRYPTO_LIBRARY_STATE_OPERATIONAL0x80000000U/* ... */#endif/* NX_CRYPTO_SELF_TEST */#ifdef__cplusplus}extern "C" { ... }#endif/* ... */...#endif/* _NX_CRYPTO_CONST_H_ */
Details
Show: from
Types: Columns:
All items filtered out
All items filtered out
This file uses the notable symbols shown below. Click anywhere in the file to view more details.