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 + -
显示快捷键?