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