Newer
Older
AESLearning / api.h
@Kurosawa Takayuki Kurosawa Takayuki on 24 Mar 2015 1 KB snapshot version
#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__*/