xref: /OK3568_Linux_fs/external/security/librkcrypto/include/rkcrypto_core.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * Copyright (c) 2022 Rockchip Electronics Co. Ltd.
3  */
4 
5 #ifndef __RKCRYPTO_CORE_H__
6 #define __RKCRYPTO_CORE_H__
7 
8 #include <stdint.h>
9 #include "rkcrypto_common.h"
10 
11 RK_RES rk_crypto_init(void);
12 void rk_crypto_deinit(void);
13 RK_RES rk_cipher_init(const rk_cipher_config *config, rk_handle *handle);
14 RK_RES rk_cipher_crypt(rk_handle handle, int in_fd, int out_fd, uint32_t len);
15 RK_RES rk_cipher_crypt_virt(rk_handle handle, const uint8_t *in, uint8_t *out, uint32_t len);
16 RK_RES rk_cipher_final(rk_handle handle);
17 
18 RK_RES rk_ae_init(const rk_ae_config *config, rk_handle *handle);
19 RK_RES rk_ae_set_aad(rk_handle handle, int aad_fd);
20 RK_RES rk_ae_set_aad_virt(rk_handle handle, uint8_t *aad_virt);
21 RK_RES rk_ae_crypt(rk_handle handle, int in_fd, int out_fd, uint32_t len, uint8_t *tag);
22 RK_RES rk_ae_crypt_virt(rk_handle handle, const uint8_t *in, uint8_t *out, uint32_t len,
23 			uint8_t *tag);
24 RK_RES rk_ae_final(rk_handle handle);
25 
26 RK_RES rk_hash_init(const rk_hash_config *config, rk_handle *handle);
27 RK_RES rk_hash_update(rk_handle handle, int data_fd, uint32_t data_len);
28 RK_RES rk_hash_update_virt(rk_handle handle, const uint8_t *data, uint32_t data_len);
29 RK_RES rk_hash_final(rk_handle handle, uint8_t *hash);
30 
31 RK_RES rk_rsa_pub_encrypt(const rk_rsa_pub_key_pack *pub, enum RK_RSA_CRYPT_PADDING padding,
32 			  const uint8_t *in, uint32_t in_len, uint8_t *out, uint32_t *out_len);
33 RK_RES rk_rsa_priv_decrypt(const rk_rsa_priv_key_pack *priv, enum RK_RSA_CRYPT_PADDING padding,
34 			   const uint8_t *in, uint32_t in_len, uint8_t *out, uint32_t *out_len);
35 RK_RES rk_rsa_priv_encrypt(const rk_rsa_priv_key_pack *priv, enum RK_RSA_CRYPT_PADDING padding,
36 			   const uint8_t *in, uint32_t in_len, uint8_t *out, uint32_t *out_len);
37 RK_RES rk_rsa_pub_decrypt(const rk_rsa_pub_key_pack *pub, enum RK_RSA_CRYPT_PADDING padding,
38 			  const uint8_t *in, uint32_t in_len, uint8_t *out, uint32_t *out_len);
39 RK_RES rk_rsa_sign(const rk_rsa_priv_key_pack *priv, enum RK_RSA_SIGN_PADDING padding,
40 		   const uint8_t *in, uint32_t in_len, const uint8_t *hash,
41 		   uint8_t *out, uint32_t *out_len);
42 RK_RES rk_rsa_verify(const rk_rsa_pub_key_pack *pub, enum RK_RSA_SIGN_PADDING padding,
43 		     const uint8_t *in, uint32_t in_len, const uint8_t *hash,
44 		     uint8_t *sign, uint32_t sign_len);
45 
46 #endif
47