vcpe/srcs/libs/include/crypto.h

80 lines
2.6 KiB
C
Raw Normal View History

2022-05-10 06:43:27 +00:00
//
// Created by xajhu on 2021/7/2 0002.
//
#ifndef DAEMON_AGENT_CRYPTO_CRYPTO_H
#define DAEMON_AGENT_CRYPTO_CRYPTO_H
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
DES3_ECB_PKCS7PADDING = 0,
DES3_CBC_PKCS7PADDING,
DES3_OFB_PKCS7PADDING,
AES128_ECB_PKCS7PADDING,
AES128_ECB_PKCS7PADDING_SHA1PRNG,
AES128_CBC_PKCS7PADDING,
AES128_OFB_PKCS7PADDING,
AES192_ECB_PKCS7PADDING,
AES192_CBC_PKCS7PADDING,
AES192_OFB_PKCS7PADDING,
AES256_ECB_PKCS7PADDING,
AES256_CBC_PKCS7PADDING,
AES256_OFB_PKCS7PADDING,
} AES_TYPE;
typedef enum {
CRYPTO_AES_ENCRYPT = 0,
CRYPTO_AES_DECRYPT,
CRYPTO_BASE64_ENCODE,
CRYPTO_BASE64_DECODE,
CRYPTO_MD5_FILE,
} CRYPTO_TYPE;
typedef enum {
HASH_TYPE_MD5 = 0,
HASH_TYPE_SHA1 = 1,
HASH_TYPE_SHA256 = 2,
} HASH_TYPE;
typedef void (*on_evp_crypto)(CRYPTO_TYPE type, const unsigned char *pData, unsigned int iSize,
const unsigned char *pSrcData, int iError);
//*****************************************************
// AES
//*****************************************************
int symmetric_encrypto(AES_TYPE algorithmType, unsigned char *pInBuf, unsigned int inSize, unsigned char **pOutBuf,
int *pOutSize, const char *pKey);
int symmetric_decrypto(AES_TYPE algorithmType, unsigned char *pInBuf, unsigned int inSize, unsigned char **pOutBuf,
int *pOutSize, const char *pKey);
//*****************************************************
// BASE64
//*****************************************************
#if 0
const char *base64_encode(unsigned char *pSrc, unsigned int sLen);
unsigned char * base64_decode(const char *pBase64);
#endif
const char *base64_encode(unsigned char *pSrc, unsigned int sLen);
unsigned char *base64_decode(const char *pBase64, unsigned int *pOutSize);
//*****************************************************
// MD5
//*****************************************************
int hash_digest_file(HASH_TYPE hashType, const char *pFileName, char **pHashValue);
int hash_digest_mem(HASH_TYPE hashType, const unsigned char *pBuf, unsigned int iBufLen, unsigned char **pHashValue,
unsigned int *pOutSize);
//*****************************************************
// Async Engine
//*****************************************************
int evp_add_crypto_task(CRYPTO_TYPE type, unsigned char *pInBuf, unsigned int iSize, unsigned char *pOutBuf, char *pKey,
on_evp_crypto onEvpCryptCb);
void evp_system_init(void);
#ifdef __cplusplus
}
#endif
#endif//DAEMON_AGENT_CRYPTO_CRYPTO_H