1dfbf26e8STony Xu /* SPDX-License-Identifier: GPL-2.0 */
2dfbf26e8STony Xu /*
3dfbf26e8STony Xu * Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd
4dfbf26e8STony Xu */
5dfbf26e8STony Xu
6dfbf26e8STony Xu #ifndef WRITE_KEYBOX_H_
7dfbf26e8STony Xu #define WRITE_KEYBOX_H_
8dfbf26e8STony Xu
9dfbf26e8STony Xu #include <common.h>
10*53bea680STony Xu #include <optee_include/tee_client_api.h>
11dfbf26e8STony Xu
129780bd18STony Xu #if defined CONFIG_ANDROID_WRITE_KEYBOX && defined CONFIG_ANDROID_KEYMASTER_CA
13dfbf26e8STony Xu /*
14dfbf26e8STony Xu * write_keybox_to_secure_storage
15dfbf26e8STony Xu *
16dfbf26e8STony Xu * @received_data: the data received from usb
17dfbf26e8STony Xu * @len: size of received_data
18dfbf26e8STony Xu *
19dfbf26e8STony Xu * @return a negative number in case of error, or 0 on success.
20dfbf26e8STony Xu */
21dfbf26e8STony Xu uint32_t write_keybox_to_secure_storage(uint8_t *received_data, uint32_t len);
22dfbf26e8STony Xu
239780bd18STony Xu /*
24*53bea680STony Xu * write_to_secure_storage
25*53bea680STony Xu *
26*53bea680STony Xu * @is_use_rpmb: 0, write data to security patition
27*53bea680STony Xu * 1, write data to rpmb
28*53bea680STony Xu * @filename: the file name of data written to secure storage
29*53bea680STony Xu * @filename_size: size of filename
30*53bea680STony Xu * @data: the data want to write to secure storage
31*53bea680STony Xu * @data_size: size of data
32*53bea680STony Xu *
33*53bea680STony Xu * @return a nonzero number in case of error, or 0 on success.
34*53bea680STony Xu */
35*53bea680STony Xu TEEC_Result write_to_security_storage(uint8_t is_use_rpmb,
36*53bea680STony Xu uint8_t *filename,
37*53bea680STony Xu uint32_t filename_size,
38*53bea680STony Xu uint8_t *data,
39*53bea680STony Xu uint32_t data_size);
40*53bea680STony Xu /*
419780bd18STony Xu * read_raw_data_from_secure_storege
429780bd18STony Xu *
439780bd18STony Xu * @raw_data: the data read from secure storage
449780bd18STony Xu * @data_size: size of raw data
459780bd18STony Xu *
469780bd18STony Xu * @return size of raw_data in case of success, or 0 on fail
479780bd18STony Xu */
489780bd18STony Xu uint32_t read_raw_data_from_secure_storage(uint8_t *received_data,
499780bd18STony Xu uint32_t len);
5086574b32STony Xu char *new_strstr(const char *s1, const char *s2, uint32_t l1);
519780bd18STony Xu #else
write_keybox_to_secure_storage(uint8_t * raw_data,uint32_t data_size)529780bd18STony Xu inline uint32_t write_keybox_to_secure_storage(uint8_t *raw_data,
539780bd18STony Xu uint32_t data_size)
549780bd18STony Xu {
559780bd18STony Xu return -EPERM;
569780bd18STony Xu }
579780bd18STony Xu
read_raw_data_from_secure_storage(uint8_t * received_data,uint32_t len)589780bd18STony Xu inline uint32_t read_raw_data_from_secure_storage(uint8_t *received_data,
599780bd18STony Xu uint32_t len)
609780bd18STony Xu {
619780bd18STony Xu return -EPERM;
629780bd18STony Xu }
639780bd18STony Xu #endif
649780bd18STony Xu #endif
65