OVMS3-idf/examples/06_bluedroid_demos/components/bluedroid_demos/include/wechat_aes.h

74 lines
2.8 KiB
C
Raw Normal View History

///////////////////////////////////////////////////////////////////////////////
// <20><> <20><> <20><><EFBFBD><EFBFBD>AES.h
// <20><> <20><><EFBFBD><EFBFBD>AES<45><53><EFBFBD><EFBFBD><EFBFBD>
// <20><> <20><> <20>ˣ<EFBFBD>Liangbofu
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>2009-07-17
///////////////////////////////////////////////////////////////////////////////
#ifndef __WECHAT_AES_H
#define __WECHAT_AES_H
#include "prf_defs.h"
#if (WX_AIRSYNC_CFG)
#ifdef __cplusplus
extern "C" {
#endif
// <20><>bitΪ<74><CEAA>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Կ<EFBFBD><D4BF><EFBFBD>ȣ<EFBFBD>ֻ<EFBFBD><D6BB>Ϊ 128<32><38>192 <20><> 256 <20><><EFBFBD><EFBFBD>
#define AES_KEY_LENGTH 128
// <20>ӽ<EFBFBD><D3BD><EFBFBD>ģʽ
#define AES_MODE_ECB 0 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱾ģʽ<C4A3><CABD>һ<EFBFBD><D2BB>ģʽ<C4A3><CABD>
#define AES_MODE_CBC 1 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
#define AES_MODE AES_MODE_CBC
///////////////////////////////////////////////////////////////////////////////
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AES_Init
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD>չ<EFBFBD><D5B9>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pKey -- ԭʼ<D4AD><CABC>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD>Ϊ AES_KEY_LENGTH/8 <20>ֽڡ<D6BD>
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09>ޡ<EFBFBD>
// <09><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> <09>ޡ<EFBFBD>
///////////////////////////////////////////////////////////////////////////////
void AES_Init(const void *pKey);
//////////////////////////////////////////////////////////////////////////
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AES_Encrypt
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pPlainText -- <20><><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><E4B3A4>ΪnDataLen<65>ֽڡ<D6BD>
// nDataLen -- <20><><EFBFBD>ݳ<EFBFBD><DDB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪAES_KEY_LENGTH/8<><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// pIV -- <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ECBģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL<4C><4C>
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pCipherText -- <20><><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pPlainText<78><74>ͬ<EFBFBD><CDAC>
// <09><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> <09>ޡ<EFBFBD>
//////////////////////////////////////////////////////////////////////////
void AES_Encrypt(const unsigned char *pPlainText, unsigned char *pCipherText,
unsigned int nDataLen, const unsigned char *pIV);
//////////////////////////////////////////////////////////////////////////
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AES_Decrypt
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pCipherText -- <20><><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><E4B3A4>ΪnDataLen<65>ֽڡ<D6BD>
// nDataLen -- <20><><EFBFBD>ݳ<EFBFBD><DDB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪAES_KEY_LENGTH/8<><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// pIV -- <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ECBģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL<4C><4C>
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pPlainText -- <20><><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pCipherText<78><74>ͬ<EFBFBD><CDAC>
// <09><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> <09>ޡ<EFBFBD>
//////////////////////////////////////////////////////////////////////////
void AES_Decrypt(unsigned char *pPlainText, const unsigned char *pCipherText,
unsigned int nDataLen, const unsigned char *pIV);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>н<EFBFBD><D0BD>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ʧ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>0
unsigned char app_data_encode_aes(char *input, char *output, unsigned short *slen);
unsigned char app_data_decode_aes(unsigned char *input, char *output, unsigned short *slen);
unsigned int AES_Encrypt_PKCS7(const unsigned char *pPlainText, unsigned char *pCipherText,
unsigned int nDataLen, const unsigned char *pIV);
unsigned int AES_get_length(unsigned int length);
void AES_free(unsigned char* p);
#ifdef __cplusplus
}
#endif ///__cplusplus
#endif ///WX_AIRSYNC_CFG
#endif // __WECHAT_AES_H