FreeCalypso > hg > leo2moko-debug
comparison g23m/condat/com/src/comlib/sec_drv_prim.h @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:509db1a7b7b8 |
---|---|
1 #ifndef _SEC_DRV_PRIM_H_ | |
2 #define _SEC_DRV_PRIM_H_ | |
3 | |
4 | |
5 /******************************************* | |
6 Feature flags & constants | |
7 *******************************************/ | |
8 // TODO: Set properly! | |
9 //#define SEC_TRACES_ENABLED | |
10 #define FFS_MODE_ENABLED /* MEPD file is located in FFS */ | |
11 #define NON_ENCRYPTED_MODE /* MEPD file wont be encrypted */ | |
12 //#define IMEI_FROM_OTP /* IMEI is placed in OTP */ | |
13 //#define FIRSTBOOT_ENABLED | |
14 //#define FIRSTBOOT_FFS_BACKUP_ENABLED /* MEPD backup during firstboot is placed in FFS */ | |
15 //#define FIRSTBOOT_RSA_ENABLED /* RSA Part of external MEPD is decrypted */ | |
16 //#define FIRSTBOOT_DES_ENABLED /* DES encrypted data in external MEPD is decrypted */ | |
17 //#define RSA_FROM_CERT_ENABLED /* Key for RSA is taken from certificate */ | |
18 //#define USE_RSAHEAP_FOR_FLASH /* Use the RSA heap (SEC_DRV_RSA_HEAP) for flash writing algorithm */ | |
19 //#define RSA_HEAP_IS_INTERNAL /* Buffer for RSA heap is allocated as global array! */ | |
20 //#define DSP_DES_KEY_ENABLED /* DES key is taken from the DSP */ | |
21 | |
22 | |
23 /* Flash interface constants */ | |
24 extern volatile const UINT8 d_mepd_data; | |
25 #define SEC_BASE d_mepd_data /* address on secure flash area goes here */ | |
26 #define SEC_DEV_BASE SEC_BASE /* address to offset the flashdrivers from */ | |
27 #define SEC_FLASH_SIZE 8192 /* size of the flash sector */ | |
28 | |
29 | |
30 /* RSA heap or Flash buffer constants */ | |
31 #if defined(FIRSTBOOT_RSA_ENABLED) || (defined(USE_RSAHEAP_FOR_FLASH) && !defined(FFS_MODE_ENABLED)) | |
32 #define RSA_HEAP_SIZE 8192 | |
33 #ifndef RSA_HEAP_IS_INTERNAL | |
34 #error "we need a 8K RAM buffer for heap during RSA decryption" | |
35 #define SEC_DRV_RSA_HEAP xxx /* address from where we can use 8K during firstboot */ | |
36 #else /* RSA_HEAP_IS_INTERNAL */ | |
37 #define SEC_DRV_RSA_HEAP &sec_drv_buffer[0] | |
38 #endif /* RSA_HEAP_IS_INTERNAL */ | |
39 #endif /* defined(FIRSTBOOT_RSA_ENABLED) || defined(USE_RSAHEAP_FOR_FLASH) */ | |
40 | |
41 | |
42 #define SEC_PATTERN_INITIALIZED 0xAA | |
43 #define SEC_PATTERN_UNINITIALIZED 0x55 | |
44 | |
45 #define SEC_DRV_KEY_MAX_LEN 16 | |
46 #define DES_KEY_SIZE 8 | |
47 #define SHA1_SIZE 20 | |
48 #define IMEI_SIZE 8 | |
49 #define CRYPT_BLOCK_SIZE 8 | |
50 | |
51 #define FFS_MEPD_FILENAME "/MEPD_File.bin" | |
52 #define FLASH_BACKUP_NAME "/flash_backup.bin" | |
53 #define BACKUP_BUF_SIZE 128 | |
54 | |
55 | |
56 /******************************************* | |
57 Macros | |
58 *******************************************/ | |
59 #define ALIGN_CRYPT_BLOCK(x) ((x%CRYPT_BLOCK_SIZE)? x+CRYPT_BLOCK_SIZE-(x%CRYPT_BLOCK_SIZE) : x) | |
60 | |
61 #ifdef SEC_TRACES_ENABLED | |
62 #define TRACE(a) test_trace(a) | |
63 #define HEXTRACE(str, data, size) hex_trace(str, data, size) | |
64 extern void test_trace(const char *str); | |
65 extern void hex_trace(const char *str, const void *in, unsigned long int size); | |
66 #else | |
67 #define TRACE(a) ((void)(0)) | |
68 #define HEXTRACE(str, data, size) ((void)(0)) | |
69 #endif | |
70 | |
71 | |
72 /******************************************* | |
73 Type definitions | |
74 *******************************************/ | |
75 typedef struct | |
76 { | |
77 UINT8 firstboot_pattern; | |
78 } T_SEC_DRV_GLOBAL_CONF; | |
79 | |
80 typedef struct | |
81 { | |
82 UINT8 digit[SEC_DRV_KEY_MAX_LEN]; | |
83 } T_SEC_DRV_KEY; | |
84 | |
85 | |
86 /******************************************* | |
87 Prototypes | |
88 *******************************************/ | |
89 extern INT8 sec_drv_fast_write; | |
90 void sec_drv_flash_backup(void); | |
91 void sec_drv_remove_backup(void); | |
92 void sec_drv_erase_flash(void); | |
93 void sec_drv_read_flash(UINT32 offset, void *pDest, UINT32 size); | |
94 void sec_drv_write_flash(UINT32 offset, const void *pSrc, UINT32 size); | |
95 | |
96 extern BOOL sec_prim_get_global_conf(T_SEC_DRV_GLOBAL_CONF *pGlobalConf); | |
97 extern BOOL sec_prim_set_global_conf(const T_SEC_DRV_GLOBAL_CONF *pGlobalConf); | |
98 | |
99 extern BOOL sec_prim_get_configuration(T_SEC_DRV_CONFIGURATION *pConf); | |
100 extern BOOL sec_prim_set_configuration(const T_SEC_DRV_CONFIGURATION *pConf); | |
101 | |
102 extern BOOL sec_prim_get_key(int rec_num, T_SEC_DRV_KEY *pKey); | |
103 extern BOOL sec_prim_set_key(int rec_num, const T_SEC_DRV_KEY *pKey); | |
104 | |
105 extern BOOL sec_prim_get_cat_header(int rec_num, T_SEC_DRV_CAT_HDR *pHdr); | |
106 extern BOOL sec_prim_set_cat_header(int rec_num, const T_SEC_DRV_CAT_HDR *pHdr); | |
107 | |
108 extern BOOL sec_prim_get_cat_body(int rec_num, void *pBody, UINT16 size); | |
109 extern BOOL sec_prim_set_cat_body(int rec_num, const void *pBody, UINT16 size); | |
110 | |
111 #endif /* _SEC_DRV_PRIM_H_ */ |