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