#ifndef __SECURE_API__
#define __SECURE_API__
#include "secure_types.h"
// blocking functions
ODAT* SB_B_ENC_ECB(int, KEY_ID, u128*) ;
ODAT* SB_B_ENC_CBC(int, KEY_ID, IV, u128*) ;
ODAT* SB_B_DEC_ECB(int, KEY_ID, u128*) ;
ODAT* SB_B_DEC_CBC(int, KEY_ID, IV, u128*) ;
ODAT* SB_B_GENERATE_MAC(int, KEY_ID, u128*) ;
uint SB_B_VERIFY_MAC(int, int, KEY_ID, u128*, u128*) ;
//void SB_B_LOAD_KEY(M1, M2, M3) ;
void SB_B_LOAD_PLAIN_KEY(KEY128) ;
KEY128 SB_B_EXPORT_RAM_KEY(void) ;
ODAT* SB_B_INIT_RNG(void) ;
void SB_B_EXTEND_SEED(void) ;
void SB_B_RND(void) ;
void SB_B_GET_STATUS(IDAT);
void SB_B_GET_ID(void);
void SB_B_CANCEL(void);
//void SB_B_IMPORT_KEY(M2);
// M2 SB_B_EXPORT_KEY(void);
// non-blocking functions
ODAT* SB_NB_ENC_ECB(IDATNUM, KEY_ID, IDAT) ;
ODAT* SB_NB_ENC_CBC(IDATNUM, KEY_ID, IV, IDAT) ;
#define AES_BUFSIZE (1024)
// error flags
enum {
ERC_GENERA_ERROR = (1<<11),
ERC_BUSY = (1<<9),
ERC_RNG_SEED = (1<<7),
ERC_KEY_UPDATE_ERROR= (1<<6),
ERC_KEY_EMPTY = (1<<3),
ERC_KEY_INVALID = (1<<2),
};
// key index
enum {
SECRET_KEY = 0,
MASTER_ECU_KEY , MAC_KEY ,
MAC , KEY1,
KEY2 , KEY3,
KEY4 , KEY5,
KEY6 , KEY7,
KEY8 , KEY9,
KEY10 , RAMKEY,
ERROR,
};
// key flags
enum {
KEY_USAGE = 0x01,
WILDCARD_PROTECTION = 0x02,
RAM_PLAIN_KEY = 0x04,
KEY_PRESENT = 0x08,
};
#endif/*__SECURE_API__*/