int sunxi_secure_storage_write(const char *item_name, char *buffer, int length) { int ret, index; char tmp_buf[4096]; if(!secure_storage_inited) { printf("%s err: secure storage has not been inited\n", __func__); return -1; } index = __fill_name_in_map(secure_storage_map, item_name, length); if(index < 0) { printf("write secure storage block %d name %s overrage\n", index, item_name); return -1; } memset(tmp_buf, 0x0, 4096); memcpy(tmp_buf, buffer, length); ret = sunxi_secstorage_write(index, (unsigned char *)tmp_buf, 4096); if(ret<0) { printf("write secure storage block %d name %s err\n", index, item_name); return -1; } printf("write secure storage: %d ok\n", index); return 0; }
int sunxi_secure_storage_erase(const char *item_name) { int ret, index; unsigned char buffer[4096]; if(!secure_storage_inited) { printf("%s err: secure storage has not been inited\n", __func__); return -1; } index = __discard_name_in_map(secure_storage_map, item_name); if(index < 0) { printf("no item name %s in the map\n", item_name); return -2; } memset(buffer, 0xff, 4096); ret = sunxi_secstorage_write(index, buffer, 4096); if(ret<0) { printf("erase secure storage block %d name %s err\n", index, item_name); return -1; } printf("erase secure storage: %d ok\n", index); return 0; }
static int clear_secure_store(int index) { memset( _inner_buffer, 0, 4096); if(index == 0xffff){ int i =0 ; printf("clean whole secure store"); for( ; i<32 ;i++){ printf(".."); sunxi_secstorage_write(i, (void *)_inner_buffer, 4096); printf("clearn %d done\n",i); } }else{ printf("clean secure store %d\n", index); printf(".."); sunxi_secstorage_write(index, (void *)_inner_buffer, 4096); printf("clearn %d done\n",index); } return 0; }
/* ************************************************************************************************************ * * function * * name : * * parmeters : * * return : * * note : * * ************************************************************************************************************ */ int sunxi_secure_storage_exit(void) { int ret; if(!secure_storage_inited) { printf("%s err: secure storage has not been inited\n", __func__); return -1; } ret = sunxi_secstorage_write(0, secure_storage_map, 4096); if(ret<0) { printf("write secure storage map\n"); return -1; } return 0; }