#ifndef PROCESS_SCRYPTO_H
#define PROCESS_SCRYPTO_H

#include "sc_api.h"

#if TBASE_API_LEVEL >= 5
uint32_t process_scrypto(struct scrypto_t *pSCrypto, threadid_t ipcClient);
#else
uint32_t process_scrypto(struct scrypto_t *pSCrypto);
#endif

uint32_t process_version(uint32_t cmd, void *in, uint32_t in_len);

uint32_t process_cipher(uint32_t cmd, void *in, uint32_t in_len);
uint32_t process_sig(uint32_t cmd, void *in, uint32_t in_len);
uint32_t process_md(uint32_t cmd, void *in, uint32_t in_len);
uint32_t process_rng(uint32_t cmd, void *in, uint32_t in_len);

uint32_t process_cipher_tdea(uint32_t cmd, void *in, uint32_t in_len);

uint32_t process_cipher_aes(uint32_t cmd, void *in, uint32_t in_len);
uint32_t sc_aes_encrypt(uint32_t cmd, sc_aes_t *param);
uint32_t sc_aes_decrypt(uint32_t cmd, sc_aes_t *param);

uint32_t process_cipher_rsa(uint32_t cmd, void *in, uint32_t in_len);
uint32_t sc_rsa_encrypt(uint32_t cmd, sc_rsa_t *param);
uint32_t sc_rsa_decrypt(uint32_t cmd, sc_rsa_t *param);

uint32_t process_sig_rsa(uint32_t cmd, void *in, uint32_t in_len);
uint32_t sc_rsa_sign(uint32_t cmd, sc_rsa_t *param);
uint32_t sc_rsa_verify(uint32_t cmd, sc_rsa_t *param);

#if TBASE_API_LEVEL >= 5
uint32_t process_cipher2(uint32_t cmd, void *in, uint32_t in_len, threadid_t ipcClient);
uint32_t process_cipher2_tdea(uint32_t cmd, void *in, uint32_t in_len, threadid_t ipcClient);
uint32_t process_cipher2_aes(uint32_t cmd, void *in, uint32_t in_len, threadid_t ipcClient);
uint32_t process_cipher2_aes_ae(uint32_t cmd, void *in, uint32_t in_len, threadid_t ipcClient);

uint32_t process_cipher2_rsa(uint32_t cmd, void *in, uint32_t in_len, threadid_t ipcClient);
uint32_t sc_rsa_encrypt2(uint32_t cmd, sc_rsa_t2 *param, threadid_t ipcClient);
uint32_t sc_rsa_decrypt2(uint32_t cmd, sc_rsa_t2 *param, threadid_t ipcClient);
uint32_t process_md2(uint32_t cmd, void *in, uint32_t in_len, threadid_t ipcClient);
uint32_t process_sig2(uint32_t cmd, void *in, uint32_t in_len, threadid_t ipcClient);
uint32_t process_sig2_rsa(uint32_t cmd, void *in, uint32_t in_len, threadid_t ipcClient);
uint32_t sc_rsa_sign2(uint32_t cmd, sc_rsa_t2 *param, threadid_t ipcClient);
uint32_t sc_rsa_verify2(uint32_t cmd, sc_rsa_t2 *param, threadid_t ipcClient);
#else
uint32_t process_cipher2(uint32_t cmd, void *in, uint32_t in_len);
uint32_t process_cipher2_tdea(uint32_t cmd, void *in, uint32_t in_len);
uint32_t process_cipher2_aes(uint32_t cmd, void *in, uint32_t in_len);
uint32_t process_cipher2_aes_ae(uint32_t cmd, void *in, uint32_t in_len);

uint32_t process_cipher2_rsa(uint32_t cmd, void *in, uint32_t in_len);
uint32_t sc_rsa_encrypt2(uint32_t cmd, sc_rsa_t2 *param);
uint32_t sc_rsa_decrypt2(uint32_t cmd, sc_rsa_t2 *param);
uint32_t process_md2(uint32_t cmd, void *in, uint32_t in_len);
uint32_t process_sig2(uint32_t cmd, void *in, uint32_t in_len);
uint32_t process_sig2_rsa(uint32_t cmd, void *in, uint32_t in_len);
uint32_t sc_rsa_sign2(uint32_t cmd, sc_rsa_t2 *param);
uint32_t sc_rsa_verify2(uint32_t cmd, sc_rsa_t2 *param);
#endif
/*
uint32_t process_sig_ecdsa(uint32_t cmd, void *in, uint32_t in_len);
uint32_t sc_ecdsa_sign(uint32_t cmd, sc_ecdsa_t *param);
uint32_t sc_ecdsa_verify(uint32_t cmd, sc_ecdsa_t *param);

uint32_t process_sig_dsa(uint32_t cmd, void *in, uint32_t in_len);
uint32_t sc_dsa_sign(uint32_t cmd, sc_dsa_t *param);
uint32_t sc_dsa_verify(uint32_t cmd, sc_dsa_t *param);

uint32_t process_sig_hmac(uint32_t cmd, void *in, uint32_t in_len);
uint32_t sc_hmac(uint32_t cmd, sc_dsa_t *param);
*/
#endif
