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;
}
示例#3
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;
}