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_ */