aes reverse compat.

This commit is contained in:
Jacob Barthelmeh
2015-01-05 14:16:28 -07:00
parent e204c41768
commit 37deb65371
2 changed files with 73 additions and 74 deletions

View File

@ -56,7 +56,6 @@
#ifndef NO_AES #ifndef NO_AES
#include <wolfssl/wolfcrypt/aes.h> #include <wolfssl/wolfcrypt/aes.h>
#define CTAO_CRYPT_AES_H WOLF_CRYPT_AES_H
#define AesSetKey wc_AesSetKey #define AesSetKey wc_AesSetKey
#define AesSetIV wc_AesSetIV #define AesSetIV wc_AesSetIV
#define AesCbcEncrypt wc_AesCbcEncrypt #define AesCbcEncrypt wc_AesCbcEncrypt

View File

@ -29,13 +29,13 @@
#include <wolfssl/wolfcrypt/types.h> #include <wolfssl/wolfcrypt/types.h>
/* included for fips @wc_fips */ /* included for fips @wc_fips */
#ifdef HAVE_FIPS
#include <cyassl/ctaocrypt/aes.h> #include <cyassl/ctaocrypt/aes.h>
#ifdef HAVE_FIPS
#if defined(CYASSL_AES_COUNTER) && !defined(WOLFSSL_AES_COUNTER) #if defined(CYASSL_AES_COUNTER) && !defined(WOLFSSL_AES_COUNTER)
#define WOLFSSL_AES_COUNTER #define WOLFSSL_AES_COUNTER
#endif #endif
#if !defined(WOLFSSL_AES_DIRECT) && defined(CYASSL_AES_DIRECT) #if !defined(WOLFSSL_AES_DIRECT) && defined(CYASSL_AES_DIRECT)
#define WOLFSSL_AES_DIRECT #define WOLFSSL_AES_DIRECT
#endif #endif
#endif #endif
@ -45,27 +45,27 @@
#include "cavium_common.h" #include "cavium_common.h"
#endif #endif
#ifdef WOLFSSL_AESNI //#ifdef WOLFSSL_AESNI
//
#include <wmmintrin.h> //#include <wmmintrin.h>
//
#if !defined (ALIGN16) //#if !defined (ALIGN16)
#if defined (__GNUC__) // #if defined (__GNUC__)
#define ALIGN16 __attribute__ ( (aligned (16))) // #define ALIGN16 __attribute__ ( (aligned (16)))
#elif defined(_MSC_VER) // #elif defined(_MSC_VER)
/* disable align warning, we want alignment ! */ // /* disable align warning, we want alignment ! */
#pragma warning(disable: 4324) // #pragma warning(disable: 4324)
#define ALIGN16 __declspec (align (16)) // #define ALIGN16 __declspec (align (16))
#else // #else
#define ALIGN16 // #define ALIGN16
#endif // #endif
#endif //#endif
//
#endif /* WOLFSSL_AESNI */ //#endif /* WOLFSSL_AESNI */
//
#if !defined (ALIGN16) //#if !defined (ALIGN16)
#define ALIGN16 // #define ALIGN16
#endif //#endif
#endif /* HAVE_FIPS */ #endif /* HAVE_FIPS */
#ifdef __cplusplus #ifdef __cplusplus
@ -73,56 +73,56 @@
#endif #endif
#if !defined(HAVE_FIPS) && !defined(CTAO_CRYPT_AES_H) #if !defined(HAVE_FIPS) && !defined(CTAO_CRYPT_AES_H)
#define WOLFSSL_AES_CAVIUM_MAGIC 0xBEEF0002 //#define WOLFSSL_AES_CAVIUM_MAGIC 0xBEEF0002
//
enum { //enum {
AES_ENC_TYPE = 1, /* cipher unique type */ // AES_ENC_TYPE = 1, /* cipher unique type */
AES_ENCRYPTION = 0, // AES_ENCRYPTION = 0,
AES_DECRYPTION = 1, // AES_DECRYPTION = 1,
AES_BLOCK_SIZE = 16 // AES_BLOCK_SIZE = 16
}; //};
//
//
typedef struct Aes { //typedef struct Aes {
/* AESNI needs key first, rounds 2nd, not sure why yet */ // /* AESNI needs key first, rounds 2nd, not sure why yet */
ALIGN16 word32 key[60]; // ALIGN16 word32 key[60];
word32 rounds; // word32 rounds;
//
ALIGN16 word32 reg[AES_BLOCK_SIZE / sizeof(word32)]; /* for CBC mode */ // ALIGN16 word32 reg[AES_BLOCK_SIZE / sizeof(word32)]; /* for CBC mode */
ALIGN16 word32 tmp[AES_BLOCK_SIZE / sizeof(word32)]; /* same */ // ALIGN16 word32 tmp[AES_BLOCK_SIZE / sizeof(word32)]; /* same */
//
#ifdef HAVE_AESGCM //#ifdef HAVE_AESGCM
ALIGN16 byte H[AES_BLOCK_SIZE]; // ALIGN16 byte H[AES_BLOCK_SIZE];
#ifdef GCM_TABLE //#ifdef GCM_TABLE
/* key-based fast multiplication table. */ // /* key-based fast multiplication table. */
ALIGN16 byte M0[256][AES_BLOCK_SIZE]; // ALIGN16 byte M0[256][AES_BLOCK_SIZE];
#endif /* GCM_TABLE */ //#endif /* GCM_TABLE */
#endif /* HAVE_AESGCM */ //#endif /* HAVE_AESGCM */
#ifdef WOLFSSL_AESNI //#ifdef WOLFSSL_AESNI
byte use_aesni; // byte use_aesni;
#endif /* WOLFSSL_AESNI */ //#endif /* WOLFSSL_AESNI */
#ifdef HAVE_CAVIUM //#ifdef HAVE_CAVIUM
AesType type; /* aes key type */ // AesType type; /* aes key type */
int devId; /* nitrox device id */ // int devId; /* nitrox device id */
word32 magic; /* using cavium magic */ // word32 magic; /* using cavium magic */
word64 contextHandle; /* nitrox context memory handle */ // word64 contextHandle; /* nitrox context memory handle */
#endif //#endif
#ifdef WOLFSSL_AES_COUNTER //#ifdef WOLFSSL_AES_COUNTER
word32 left; /* unsued bytes left from last call */ // word32 left; /* unsued bytes left from last call */
#endif //#endif
#ifdef WOLFSSL_PIC32MZ_CRYPT //#ifdef WOLFSSL_PIC32MZ_CRYPT
word32 key_ce[AES_BLOCK_SIZE*2/sizeof(word32)] ; // word32 key_ce[AES_BLOCK_SIZE*2/sizeof(word32)] ;
word32 iv_ce [AES_BLOCK_SIZE /sizeof(word32)] ; // word32 iv_ce [AES_BLOCK_SIZE /sizeof(word32)] ;
int keylen ; // int keylen ;
#endif //#endif
} Aes; //} Aes;
//
//
#ifdef HAVE_AESGCM //#ifdef HAVE_AESGCM
typedef struct Gmac { //typedef struct Gmac {
Aes aes; // Aes aes;
} Gmac; //} Gmac;
#endif /* HAVE_AESGCM */ //#endif /* HAVE_AESGCM */
#endif /* HAVE_FIPS */ #endif /* HAVE_FIPS */
WOLFSSL_API int wc_AesSetKey(Aes* aes, const byte* key, word32 len, const byte* iv, WOLFSSL_API int wc_AesSetKey(Aes* aes, const byte* key, word32 len, const byte* iv,