|
|
@ -37,64 +37,65 @@ |
|
|
|
class AESencrypt |
|
|
|
class AESencrypt |
|
|
|
{ |
|
|
|
{ |
|
|
|
public: |
|
|
|
public: |
|
|
|
aes_encrypt_ctx cx[1]; |
|
|
|
AESencrypt(void) { aes_init(); }; |
|
|
|
AESencrypt(void) { aes_init(); }; |
|
|
|
|
|
|
|
#if defined(AES_128) |
|
|
|
#if defined(AES_128) |
|
|
|
AESencrypt(const unsigned char key[]) |
|
|
|
AESencrypt(const unsigned char key[]) |
|
|
|
{ aes_encrypt_key128(key, cx); } |
|
|
|
{ aes_encrypt_key128(key, cx); } |
|
|
|
AES_RETURN key128(const unsigned char key[]) |
|
|
|
inline AES_RETURN key128(const unsigned char key[]) |
|
|
|
{ return aes_encrypt_key128(key, cx); } |
|
|
|
{ return aes_encrypt_key128(key, cx); } |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#if defined(AES_192) |
|
|
|
#if defined(AES_192) |
|
|
|
AES_RETURN key192(const unsigned char key[]) |
|
|
|
inline AES_RETURN key192(const unsigned char key[]) |
|
|
|
{ return aes_encrypt_key192(key, cx); } |
|
|
|
{ return aes_encrypt_key192(key, cx); } |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#if defined(AES_256) |
|
|
|
#if defined(AES_256) |
|
|
|
AES_RETURN key256(const unsigned char key[]) |
|
|
|
inline AES_RETURN key256(const unsigned char key[]) |
|
|
|
{ return aes_encrypt_key256(key, cx); } |
|
|
|
{ return aes_encrypt_key256(key, cx); } |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#if defined(AES_VAR) |
|
|
|
#if defined(AES_VAR) |
|
|
|
AES_RETURN key(const unsigned char key[], int key_len) |
|
|
|
inline AES_RETURN key(const unsigned char key[], int key_len) |
|
|
|
{ return aes_encrypt_key(key, key_len, cx); } |
|
|
|
{ return aes_encrypt_key(key, key_len, cx); } |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
AES_RETURN encrypt(const unsigned char in[], unsigned char out[]) const |
|
|
|
inline AES_RETURN encrypt(const unsigned char in[], unsigned char out[]) const |
|
|
|
{ return aes_encrypt(in, out, cx); } |
|
|
|
{ return aes_encrypt(in, out, cx); } |
|
|
|
#ifndef AES_MODES |
|
|
|
#ifndef AES_MODES |
|
|
|
AES_RETURN ecb_encrypt(const unsigned char in[], unsigned char out[], int nb) const |
|
|
|
inline AES_RETURN ecb_encrypt(const unsigned char in[], unsigned char out[], int nb) const |
|
|
|
{ while(nb--) |
|
|
|
{ while(nb--) |
|
|
|
{ aes_encrypt(in, out, cx), in += AES_BLOCK_SIZE, out += AES_BLOCK_SIZE; } |
|
|
|
{ aes_encrypt(in, out, cx), in += AES_BLOCK_SIZE, out += AES_BLOCK_SIZE; } |
|
|
|
} |
|
|
|
} |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#ifdef AES_MODES |
|
|
|
#ifdef AES_MODES |
|
|
|
AES_RETURN mode_reset(void) { return aes_mode_reset(cx); } |
|
|
|
inline AES_RETURN mode_reset(void) { return aes_mode_reset(cx); } |
|
|
|
|
|
|
|
|
|
|
|
AES_RETURN ecb_encrypt(const unsigned char in[], unsigned char out[], int nb) const |
|
|
|
inline AES_RETURN ecb_encrypt(const unsigned char in[], unsigned char out[], int nb) const |
|
|
|
{ return aes_ecb_encrypt(in, out, nb, cx); } |
|
|
|
{ return aes_ecb_encrypt(in, out, nb, cx); } |
|
|
|
|
|
|
|
|
|
|
|
AES_RETURN cbc_encrypt(const unsigned char in[], unsigned char out[], int nb, |
|
|
|
inline AES_RETURN cbc_encrypt(const unsigned char in[], unsigned char out[], int nb, |
|
|
|
unsigned char iv[]) const |
|
|
|
unsigned char iv[]) const |
|
|
|
{ return aes_cbc_encrypt(in, out, nb, iv, cx); } |
|
|
|
{ return aes_cbc_encrypt(in, out, nb, iv, cx); } |
|
|
|
|
|
|
|
|
|
|
|
AES_RETURN cfb_encrypt(const unsigned char in[], unsigned char out[], int nb, |
|
|
|
inline AES_RETURN cfb_encrypt(const unsigned char in[], unsigned char out[], int nb, |
|
|
|
unsigned char iv[]) |
|
|
|
unsigned char iv[]) |
|
|
|
{ return aes_cfb_encrypt(in, out, nb, iv, cx); } |
|
|
|
{ return aes_cfb_encrypt(in, out, nb, iv, cx); } |
|
|
|
|
|
|
|
|
|
|
|
AES_RETURN cfb_decrypt(const unsigned char in[], unsigned char out[], int nb, |
|
|
|
inline AES_RETURN cfb_decrypt(const unsigned char in[], unsigned char out[], int nb, |
|
|
|
unsigned char iv[]) |
|
|
|
unsigned char iv[]) |
|
|
|
{ return aes_cfb_decrypt(in, out, nb, iv, cx); } |
|
|
|
{ return aes_cfb_decrypt(in, out, nb, iv, cx); } |
|
|
|
|
|
|
|
|
|
|
|
AES_RETURN ofb_crypt(const unsigned char in[], unsigned char out[], int nb, |
|
|
|
inline AES_RETURN ofb_crypt(const unsigned char in[], unsigned char out[], int nb, |
|
|
|
unsigned char iv[]) |
|
|
|
unsigned char iv[]) |
|
|
|
{ return aes_ofb_crypt(in, out, nb, iv, cx); } |
|
|
|
{ return aes_ofb_crypt(in, out, nb, iv, cx); } |
|
|
|
|
|
|
|
|
|
|
|
typedef void ctr_fn(unsigned char ctr[]); |
|
|
|
typedef void ctr_fn(unsigned char ctr[]); |
|
|
|
|
|
|
|
|
|
|
|
AES_RETURN ctr_crypt(const unsigned char in[], unsigned char out[], int nb, |
|
|
|
inline AES_RETURN ctr_crypt(const unsigned char in[], unsigned char out[], int nb, |
|
|
|
unsigned char iv[], ctr_fn cf) |
|
|
|
unsigned char iv[], ctr_fn cf) |
|
|
|
{ return aes_ctr_crypt(in, out, nb, iv, cf, cx); } |
|
|
|
{ return aes_ctr_crypt(in, out, nb, iv, cf, cx); } |
|
|
|
|
|
|
|
|
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
|
|
|
aes_encrypt_ctx cx[1]; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
#endif |
|
|
|
#endif |
|
|
@ -104,43 +105,44 @@ public: |
|
|
|
class AESdecrypt |
|
|
|
class AESdecrypt |
|
|
|
{ |
|
|
|
{ |
|
|
|
public: |
|
|
|
public: |
|
|
|
aes_decrypt_ctx cx[1]; |
|
|
|
AESdecrypt(void) { aes_init(); }; |
|
|
|
AESdecrypt(void) { aes_init(); }; |
|
|
|
|
|
|
|
#if defined(AES_128) |
|
|
|
#if defined(AES_128) |
|
|
|
AESdecrypt(const unsigned char key[]) |
|
|
|
AESdecrypt(const unsigned char key[]) |
|
|
|
{ aes_decrypt_key128(key, cx); } |
|
|
|
{ aes_decrypt_key128(key, cx); } |
|
|
|
AES_RETURN key128(const unsigned char key[]) |
|
|
|
inline AES_RETURN key128(const unsigned char key[]) |
|
|
|
{ return aes_decrypt_key128(key, cx); } |
|
|
|
{ return aes_decrypt_key128(key, cx); } |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#if defined(AES_192) |
|
|
|
#if defined(AES_192) |
|
|
|
AES_RETURN key192(const unsigned char key[]) |
|
|
|
inline AES_RETURN key192(const unsigned char key[]) |
|
|
|
{ return aes_decrypt_key192(key, cx); } |
|
|
|
{ return aes_decrypt_key192(key, cx); } |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#if defined(AES_256) |
|
|
|
#if defined(AES_256) |
|
|
|
AES_RETURN key256(const unsigned char key[]) |
|
|
|
inline AES_RETURN key256(const unsigned char key[]) |
|
|
|
{ return aes_decrypt_key256(key, cx); } |
|
|
|
{ return aes_decrypt_key256(key, cx); } |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#if defined(AES_VAR) |
|
|
|
#if defined(AES_VAR) |
|
|
|
AES_RETURN key(const unsigned char key[], int key_len) |
|
|
|
inline AES_RETURN key(const unsigned char key[], int key_len) |
|
|
|
{ return aes_decrypt_key(key, key_len, cx); } |
|
|
|
{ return aes_decrypt_key(key, key_len, cx); } |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
AES_RETURN decrypt(const unsigned char in[], unsigned char out[]) const |
|
|
|
inline AES_RETURN decrypt(const unsigned char in[], unsigned char out[]) const |
|
|
|
{ return aes_decrypt(in, out, cx); } |
|
|
|
{ return aes_decrypt(in, out, cx); } |
|
|
|
#ifndef AES_MODES |
|
|
|
#ifndef AES_MODES |
|
|
|
AES_RETURN ecb_decrypt(const unsigned char in[], unsigned char out[], int nb) const |
|
|
|
inline AES_RETURN ecb_decrypt(const unsigned char in[], unsigned char out[], int nb) const |
|
|
|
{ while(nb--) |
|
|
|
{ while(nb--) |
|
|
|
{ aes_decrypt(in, out, cx), in += AES_BLOCK_SIZE, out += AES_BLOCK_SIZE; } |
|
|
|
{ aes_decrypt(in, out, cx), in += AES_BLOCK_SIZE, out += AES_BLOCK_SIZE; } |
|
|
|
} |
|
|
|
} |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#ifdef AES_MODES |
|
|
|
#ifdef AES_MODES |
|
|
|
|
|
|
|
|
|
|
|
AES_RETURN ecb_decrypt(const unsigned char in[], unsigned char out[], int nb) const |
|
|
|
inline AES_RETURN ecb_decrypt(const unsigned char in[], unsigned char out[], int nb) const |
|
|
|
{ return aes_ecb_decrypt(in, out, nb, cx); } |
|
|
|
{ return aes_ecb_decrypt(in, out, nb, cx); } |
|
|
|
|
|
|
|
|
|
|
|
AES_RETURN cbc_decrypt(const unsigned char in[], unsigned char out[], int nb, |
|
|
|
inline AES_RETURN cbc_decrypt(const unsigned char in[], unsigned char out[], int nb, |
|
|
|
unsigned char iv[]) const |
|
|
|
unsigned char iv[]) const |
|
|
|
{ return aes_cbc_decrypt(in, out, nb, iv, cx); } |
|
|
|
{ return aes_cbc_decrypt(in, out, nb, iv, cx); } |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
private: |
|
|
|
|
|
|
|
aes_decrypt_ctx cx[1]; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
#endif |
|
|
|
#endif |
|
|
|