123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325 |
- #ifndef SSI_AES_H
- #define SSI_AES_H
- #include "ssi_pal_types.h"
- #include "ssi_aes_error.h"
- #include "ssi_aes_defs.h"
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- typedef enum {
-
- SASI_AES_ENCRYPT = 0,
-
- SASI_AES_DECRYPT = 1,
-
- SASI_AES_NUM_OF_ENCRYPT_MODES,
-
- SASI_AES_ENCRYPT_MODE_LAST = 0x7FFFFFFF
- }SaSiAesEncryptMode_t;
- typedef enum {
- SASI_AES_MODE_ECB = 0,
- SASI_AES_MODE_CBC = 1,
- SASI_AES_MODE_CBC_MAC = 2,
- SASI_AES_MODE_CTR = 3,
- SASI_AES_MODE_XCBC_MAC = 4,
- SASI_AES_MODE_CMAC = 5,
- SASI_AES_MODE_XTS = 6,
- SASI_AES_MODE_CBC_CTS = 7,
- SASI_AES_MODE_OFB = 8,
-
- SASI_AES_NUM_OF_OPERATION_MODES,
-
- SASI_AES_OPERATION_MODE_LAST = 0x7FFFFFFF
- }SaSiAesOperationMode_t;
- typedef enum {
- SASI_AES_PADDING_NONE = 0,
- SASI_AES_PADDING_PKCS7 = 1,
-
- SASI_AES_NUM_OF_PADDING_TYPES,
-
- SASI_AES_PADDING_TYPE_LAST = 0x7FFFFFFF
- }SaSiAesPaddingType_t;
- typedef enum {
- SASI_AES_USER_KEY = 0,
- SASI_AES_PLATFORM_KEY = 1,
- SASI_AES_CUSTOMER_KEY = 2,
-
- SASI_AES_NUM_OF_KEY_TYPES,
-
- SASI_AES_KEY_TYPE_LAST = 0x7FFFFFFF
- }SaSiAesKeyType_t;
- typedef uint8_t SaSiAesIv_t[SASI_AES_IV_SIZE_IN_BYTES];
- typedef uint8_t SaSiAesKeyBuffer_t[SASI_AES_KEY_MAX_SIZE_IN_BYTES];
- typedef struct SaSiAesUserContext_t {
-
- uint32_t buff[SASI_AES_USER_CTX_SIZE_IN_WORDS];
- }SaSiAesUserContext_t;
- typedef struct SaSiAesUserKeyData_t {
- uint8_t * pKey;
- size_t keySize;
- }SaSiAesUserKeyData_t;
- typedef struct SaSiAesHwKeyData_t {
- size_t slotNumber;
- }SaSiAesHwKeyData_t;
- CIMPORT_C SaSiError_t SaSi_AesInit(
- SaSiAesUserContext_t * pContext,
- SaSiAesEncryptMode_t encryptDecryptFlag,
- SaSiAesOperationMode_t operationMode,
- SaSiAesPaddingType_t paddingType
- );
- CIMPORT_C SaSiError_t SaSi_AesSetKey(
- SaSiAesUserContext_t * pContext,
- SaSiAesKeyType_t keyType,
- void * pKeyData,
- size_t keyDataSize
- );
- CIMPORT_C SaSiError_t SaSi_AesSetIv(
- SaSiAesUserContext_t * pContext,
- SaSiAesIv_t pIV
- );
- CIMPORT_C SaSiError_t SaSi_AesGetIv(
- SaSiAesUserContext_t * pContext,
- SaSiAesIv_t pIV
- );
- CIMPORT_C SaSiError_t SaSi_AesBlock(
- SaSiAesUserContext_t * pContext,
- uint8_t * pDataIn,
- size_t dataInSize,
- uint8_t * pDataOut
- );
- CIMPORT_C SaSiError_t SaSi_AesFinish(
- SaSiAesUserContext_t * pContext,
- size_t dataSize,
- uint8_t * pDataIn,
- size_t dataInBuffSize,
- uint8_t * pDataOut,
- size_t * dataOutBuffSize
- );
- CIMPORT_C SaSiError_t SaSi_AesFree(
- SaSiAesUserContext_t * pContext
- );
- #ifdef __cplusplus
- }
- #endif
- #endif
|