aes.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #ifndef _AES_H
  2. #define _AES_H
  3. #define AES_ENCRYPT 1
  4. #define AES_DECRYPT 0
  5. /* Because array size can't be a const in C, the following two are macros.
  6. Both sizes are in bytes. */
  7. #define AES_MAXNR 14
  8. #define AES_BLOCK_SIZE 16
  9. struct aes_key_st {
  10. unsigned long rd_key[4 *(AES_MAXNR + 1)];
  11. int rounds;
  12. };
  13. typedef struct aes_key_st AES_KEY;
  14. #if defined(_MSC_VER) && !defined(_M_IA64) && !defined(OPENSSL_SYS_WINCE)
  15. # define SWAP(x) (_lrotl(x, 8) & 0x00ff00ff | _lrotr(x, 8) & 0xff00ff00)
  16. # define GETU32(p) SWAP(*((u32 *)(p)))
  17. # define PUTU32(ct, st) { *((u32 *)(ct)) = SWAP((st)); }
  18. #else
  19. # define GETU32(pt) (((u32)(pt)[0] << 24) ^ ((u32)(pt)[1] << 16) ^ ((u32)(pt)[2] << 8) ^ ((u32)(pt)[3]))
  20. # define PUTU32(ct, st) { (ct)[0] = (u8)((st) >> 24); (ct)[1] = (u8)((st) >> 16); (ct)[2] = (u8)((st) >> 8); (ct)[3] = (u8)(st); }
  21. #endif
  22. typedef unsigned long u32;
  23. typedef unsigned short u16;
  24. typedef unsigned char u8;
  25. #define MAXKC (256/32)
  26. #define MAXKB (256/8)
  27. #define MAXNR 14
  28. /* This controls loop-unrolling in aes.c */
  29. #define FULL_UNROLL
  30. int AES_set_encrypt_key(const unsigned char *, const int, AES_KEY *);
  31. int AES_set_decrypt_key(const unsigned char *, const int, AES_KEY *);
  32. void AES_encrypt(const unsigned char *, unsigned char *, const AES_KEY *);
  33. void AES_decrypt(const unsigned char *, unsigned char *, const AES_KEY *);
  34. #endif /* !_AES_H */