123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- #ifndef CRYS_KDF_H
- #define CRYS_KDF_H
- #include "crys_hash.h"
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- #include "crys_hash.h"
- #define CRYS_KDF_MAX_SIZE_OF_SHARED_SECRET_VALUE 1024
- #define CRYS_KDF_COUNT_OF_OTHER_INFO_ENTRIES 5
- #define CRYS_KDF_MAX_SIZE_OF_OTHER_INFO_ENTRY 64
- #define CRYS_KDF_MAX_SIZE_OF_KEYING_DATA 2048
- typedef enum
- {
-
- CRYS_KDF_HASH_SHA1_mode = 0,
-
- CRYS_KDF_HASH_SHA224_mode = 1,
-
- CRYS_KDF_HASH_SHA256_mode = 2,
-
- CRYS_KDF_HASH_SHA384_mode = 3,
-
- CRYS_KDF_HASH_SHA512_mode = 4,
-
- CRYS_KDF_HASH_NumOfModes,
-
- CRYS_KDF_HASH_OpModeLast = 0x7FFFFFFF,
- }CRYS_KDF_HASH_OpMode_t;
- typedef enum
- {
-
- CRYS_KDF_ASN1_DerivMode = 0,
-
- CRYS_KDF_ConcatDerivMode = 1,
-
- CRYS_KDF_X963_DerivMode = CRYS_KDF_ConcatDerivMode,
-
- CRYS_KDF_ISO18033_KDF1_DerivMode = 3,
-
- CRYS_KDF_ISO18033_KDF2_DerivMode = 4,
-
- CRYS_KDF_DerivFunc_NumOfModes = 5,
-
- CRYS_KDF_DerivFuncModeLast= 0x7FFFFFFF,
- }CRYS_KDF_DerivFuncMode_t;
- typedef struct
- {
-
- uint8_t AlgorithmID[CRYS_KDF_MAX_SIZE_OF_OTHER_INFO_ENTRY];
- uint32_t SizeOfAlgorithmID;
-
- uint8_t PartyUInfo[CRYS_KDF_MAX_SIZE_OF_OTHER_INFO_ENTRY];
- uint32_t SizeOfPartyUInfo;
-
- uint8_t PartyVInfo[CRYS_KDF_MAX_SIZE_OF_OTHER_INFO_ENTRY];
- uint32_t SizeOfPartyVInfo;
-
- uint8_t SuppPrivInfo[CRYS_KDF_MAX_SIZE_OF_OTHER_INFO_ENTRY];
- uint32_t SizeOfSuppPrivInfo;
-
- uint8_t SuppPubInfo[CRYS_KDF_MAX_SIZE_OF_OTHER_INFO_ENTRY];
- uint32_t SizeOfSuppPubInfo;
- }CRYS_KDF_OtherInfo_t;
- CIMPORT_C CRYSError_t CRYS_KDF_KeyDerivFunc(
- uint8_t *ZZSecret_ptr,
- uint32_t ZZSecretSize,
- CRYS_KDF_OtherInfo_t *OtherInfo_ptr,
- CRYS_KDF_HASH_OpMode_t KDFhashMode,
- CRYS_KDF_DerivFuncMode_t derivation_mode,
- uint8_t *KeyingData_ptr,
- uint32_t KeyingDataSizeBytes
- );
- #define CRYS_KDF_ASN1_KeyDerivFunc(ZZSecret_ptr,ZZSecretSize,OtherInfo_ptr,KDFhashMode,KeyingData_ptr,KeyLenInBytes)\
- CRYS_KDF_KeyDerivFunc((ZZSecret_ptr),(ZZSecretSize),(OtherInfo_ptr),(KDFhashMode),CRYS_KDF_ASN1_DerivMode,(KeyingData_ptr),(KeyLenInBytes))
- #define CRYS_KDF_ConcatKeyDerivFunc(ZZSecret_ptr,ZZSecretSize,OtherInfo_ptr,KDFhashMode,KeyingData_ptr,KeyLenInBytes)\
- CRYS_KDF_KeyDerivFunc((ZZSecret_ptr),(ZZSecretSize),(OtherInfo_ptr),(KDFhashMode),CRYS_KDF_ConcatDerivMode,(KeyingData_ptr),(KeyLenInBytes))
- #ifdef __cplusplus
- }
- #endif
- #endif
|