secure_types.h
来自「是一个手机功能的模拟程序」· C头文件 代码 · 共 507 行 · 第 1/2 页
H
507 行
}T_RSAPUBKEY;
/*Certificate Structure*/
typedef struct
{
UWORD16 d_Certsize; /* Size of Certificate*/
UWORD8 d_Certtype; /* Type of Certificate*/
UWORD8 d_Debugrequest; /* Debug request*/
UWORD32 d_Addcode; /* Start Address of code*/
UWORD32 d_Codesize; /* Size of code*/
UWORD32 d_CodeStartAdd; /* Entry point address */
T_RSAPUBKEY d_Manpubkey; /* Manufacturer Public key*/
T_RSAPUBKEY d_Origpubkey; /* Originator Public key */
UWORD32 a_Origpubkeysig[C_MANUF_SIG_SIZE]; /* Originator Public key Signature*/
UWORD32 a_Swsig[C_MANUF_SIG_SIZE]; /* Software Signature*/
T_CONF_PARAM d_Confparam; /* Configuration parameters*/
UWORD32 a_Certsig[C_MANUF_SIG_SIZE]; /* Certificate Signature*/
} T_MANUFACTURER_CERTIFICATE;
#if C_PLATFORM_UNBIND_BOOT == 1
typedef struct
{
UWORD16 d_Certsize; /* Size of Certificate*/
UWORD8 d_Certtype; /* Type of Certificate*/
UWORD8 d_Debugrequest; /* Debug request*/
UWORD32 d_Confrequest; /* Confidentiality request*/
UWORD32 d_Addcode; /* Start Address of code*/
UWORD32 d_Codesize; /* Size of code*/
UWORD32 d_CodeStartAdd; /* Entry point address */
UWORD32 a_iv[C_IVLG]; /* Initial Vector for TDES CBC*/
UWORD32 a_Encswkey[C_TDESKEYLG]; /* Encrypted S/W key */
UWORD32 a_Swsig[C_PLAT_SIG_SIZE]; /* Software Signature*/
T_CONF_PARAM d_Confparam; /* Configuration parameters*/
UWORD32 a_Certsig[C_PLAT_SIG_SIZE]; /* Certificate Signature*/
} T_PLATFORM_BOOT_CERTIFICATE;
typedef union {
T_MANUFACTURER_CERTIFICATE d_manufacturer_certificate;
T_PLATFORM_BOOT_CERTIFICATE d_platform_boot_certificate;
} T_FIRMWARE_CERTIFICATE;
#endif
#if C_SECURE_SERVICES == 1
/*
* Define ROM secure service entry point address
*/
#define C_ROM_SSERVICE_ENTRY_POINT_ADDR 0x00000024L
/*
* Definition of function pointer to use ROM Secure Services
*/
typedef UWORD16 (*T_ROM_SSERVICE) (UWORD16, void *, void *);
typedef struct
{
UWORD16 d_Certsize; /* Size of Certificate*/
UWORD8 d_Certtype; /* Type of Certificate*/
UWORD8 d_Confrequest; /* Confidentiality request*/
UWORD32 d_Addcode; /* Start Address of code*/
UWORD32 d_Codesize; /* Size of code*/
UWORD32 d_AppID; /* Application ID*/
UWORD32 a_iv[C_IVLG]; /* Initial Vector for TDES CBC*/
UWORD32 a_Encswkey[C_TDESKEYLG]; /* Encrypted S/W key */
UWORD32 a_Swsig[C_PLAT_SIG_SIZE]; /* Software Signature*/
UWORD32 a_Certsig[C_PLAT_SIG_SIZE]; /* Certificate Signature*/
} T_PLATFORM_CERTIFICATE;
/*Unbind Context Structure used for segmented Unbind operation*/
typedef struct
{
UWORD32 d_Startpos; /*Start position of data to process */
UWORD32 d_Currentpos; /*Current position of data to process */
UWORD32 a_Currentdigest[C_MD5HASHLG]; /*Current digest*/
UWORD32 d_Digcount; /*Digest Count */
UWORD32 a_Currentiv[C_IVLG]; /*Current initial vector */
UWORD32 a_Encswkey[C_TDESKEYLG]; /*Encrypted TDES software Key */
UWORD32 a_iv[C_IVLG]; /*Initial Vector */
UWORD32 d_Codesize; /*Code size*/
UWORD32 d_AppID; /*Application ID*/
UWORD32 a_Swsig[C_PLAT_SIG_SIZE]; /*Software Signature*/
UWORD8 d_Confrequest; /*Confidentiality request*/
BOOLEAN b_UnbindDone; /*Set to 1 if data unbinding is done*/
} T_UNBINDCTX;
/*Bind Context Structure used for segmented Bind operation*/
typedef struct
{
UWORD32 d_Startpos; /*Start position of data to process*/
UWORD32 d_Currentpos; /*Current position of data to process */
UWORD32 a_Currentdigest[C_MD5HASHLG]; /*Current digest*/
UWORD32 d_Digcount; /*Digest Count */
UWORD32 a_Currentiv[C_IVLG]; /*Current initial vector */
UWORD32 a_Encswkey[C_TDESKEYLG]; /*Encrypted TDES software Key */
UWORD32 a_iv[C_IVLG]; /*Initial Vector */
UWORD32 d_Addcode; /*Store address of code */
UWORD32 d_Codesize; /*Code size*/
UWORD32 d_AppID; /*Application ID*/
UWORD8 d_Confrequest; /*Confidentiality request*/
BOOLEAN b_KeyCreateDone; /*Set to 1 if TDES software key creation is done */
BOOLEAN b_BindDone; /*Set to 1 if data binding is done*/
} T_BINDCTX;
typedef struct
{
T_PLATFORM_CERTIFICATE* p_Cert;
UWORD32* p_Code;
T_PLATFORM_CERTIFICATE* p_CertCtx;
T_UNBINDCTX* p_UnbindCtx;
UWORD32 d_Steplength;
BOOLEAN b_start;
} T_SSERVICE_UNBIND;
typedef struct
{
T_PLATFORM_CERTIFICATE* p_Cert;
UWORD32* p_Code;
T_PLATFORM_CERTIFICATE* p_CertCtx;
T_BINDCTX* p_BindCtx;
UWORD32 d_Steplength;
UWORD32 d_timeout;
BOOLEAN b_start;
} T_SSERVICE_BIND;
/*
* Structure definition for RSA S/W secure services
*/
typedef struct
{
UWORD32 * p_datain;
UWORD32 * p_dataout;
UWORD32 output_length;
T_RSAPUBKEY * p_rsapubkey;
UWORD32 * p_rsaheap;
} T_SSERVICE_RSA;
/*
* Structure definition for Checker ROM secure services
*/
typedef struct
{
UWORD16 d_checksum;
UWORD16 d_rom_id;
} T_SSERVICE_CHECKROM;
/*
* Structure definition for Run Time Checker secure services
*/
typedef struct
{
UWORD32 * p_rsaheap;
#if C_PLATFORM_UNBIND_BOOT == 0
T_MANUFACTURER_CERTIFICATE * p_certificate;
#else
T_FIRMWARE_CERTIFICATE* p_certificate;
#endif
} T_SSERVICE_RUNTIMECHECKER;
#endif /* C_SECURE_SERVICES == 1 */
/****************************************************************************
* Global variables
****************************************************************************/
#ifndef SECURE_GLOBAL
#define SECURE_GLOBAL extern
#endif
#ifdef _TMS470
#pragma DATA_SECTION(d_temp,".secdata")
#endif
SECURE_GLOBAL UWORD32 d_temp[C_TEMPDATALG]; /*Temporary data in Secure RAM*/
/****************************************************************************
* Status
****************************************************************************/
typedef enum
{
C_SECURE_ERROR = 0,
C_SECURE_SUCCESS = 1,
C_SECURE_INVALID_ID = 2,
C_SECURE_RNG_ALARM = 3
}E_SECURE_STATUS;
/****************************************************************************
* Function prototype for secure services
****************************************************************************/
#if C_SECURE_SERVICES == 1
#define C_MAX_DEFINED_ID 5
#define C_SEC_SERVICE_BINDING_ID 0x0000
#define C_SEC_SERVICE_UNBINDING_ID 0x0001
#define C_SEC_SERVICE_RSA_ID 0x0002
#define C_SEC_SERVICE_CHECKROM_ID 0x0003
#define C_SEC_SERVICE_RUN_TIME_CHECKER_ID 0x0004
E_SECURE_STATUS ROM_Sservice_Unbind(UWORD16 reserved,
T_SSERVICE_UNBIND* p_StructUnbind);
E_SECURE_STATUS ROM_Sservice_Bind(UWORD16 reserved,
T_SSERVICE_BIND* p_StructBind);
E_SECURE_STATUS ROM_Sservice_Rsa(UWORD16 reserved,
T_SSERVICE_RSA* p_StructRsa);
E_SECURE_STATUS ROM_Sservice_CheckRom(UWORD16 reserved,
T_SSERVICE_CHECKROM* p_StructCheckRom);
E_SECURE_STATUS ROM_Sservice_RunTimeChecker(
UWORD16 reserved,
T_SSERVICE_RUNTIMECHECKER* p_StructRunTimeChecker);
#endif
#endif /* _SECURE_TYPES_H */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?