diff --git a/ctaocrypt/src/aes.c b/ctaocrypt/src/aes.c index 7c1af0ba3..3ed21b4c5 100644 --- a/ctaocrypt/src/aes.c +++ b/ctaocrypt/src/aes.c @@ -605,7 +605,7 @@ #elif defined(HAVE_COLDFIRE_SEC) -#include +#include #include "sec.h" #include "mcf5475_sec.h" @@ -629,14 +629,14 @@ static CyaSSL_Mutex Mutex_AesSEC ; #define SEC_DESC_AES_CBC_DECRYPT 0x60200010 extern volatile unsigned char __MBAR[]; - -static int TimeCount = 0 ; static int AesCbcCrypt(Aes* aes, byte* po, const byte* pi, word32 sz, word32 descHeader) { + #ifdef DEBUG_CYASSL + int i ; int stat1, stat2 ; int ret ; + #endif - int i ; int stat1, stat2 ; - int ret ; int size ; + int size ; volatile int v ; if((pi == NULL) || (po == NULL)) @@ -693,13 +693,15 @@ static int AesCbcCrypt(Aes* aes, byte* po, const byte* pi, word32 sz, word32 des v=0 ; while((secDesc->header>> 24) != 0xff)v++ ; +#ifdef DEBUG_CYASSL ret = MCF_SEC_SISRH; stat1 = MCF_SEC_AESSR ; - stat2 = MCF_SEC_AESISR ; + stat2 = MCF_SEC_AESISR ; if(ret & 0xe0000000) { - /* db_printf("Aes_Cbc(i=%d):ISRH=%08x, AESSR=%08x, AESISR=%08x\n", i, ret, stat1, stat2) ; */ + db_printf("Aes_Cbc(i=%d):ISRH=%08x, AESSR=%08x, AESISR=%08x\n", i, ret, stat1, stat2) ; } +#endif XMEMCPY(po, AESBuffOut, size) ; @@ -713,7 +715,7 @@ static int AesCbcCrypt(Aes* aes, byte* po, const byte* pi, word32 sz, word32 des po += size ; } UnLockMutex(&Mutex_AesSEC) ; - return 0 ; /* for descriptier header 0xff000000 mode */ + return 0 ; } int AesCbcEncrypt(Aes* aes, byte* po, const byte* pi, word32 sz) @@ -729,16 +731,15 @@ int AesCbcDecrypt(Aes* aes, byte* po, const byte* pi, word32 sz) int AesSetKey(Aes* aes, const byte* userKey, word32 keylen, const byte* iv, int dir) { - int s1, s2, s3, s4, s5 ; if(AESBuffIn == NULL) { #if defined (HAVE_THREADX) + int s1, s2, s3, s4, s5 ; s5 = tx_byte_allocate(&mp_ncached,(void *)&secDesc, sizeof(SECdescriptorType), TX_NO_WAIT); s1 = tx_byte_allocate(&mp_ncached,(void *)&AESBuffIn, AES_BUFFER_SIZE, TX_NO_WAIT); s2 = tx_byte_allocate(&mp_ncached,(void *)&AESBuffOut, AES_BUFFER_SIZE, TX_NO_WAIT); s3 = tx_byte_allocate(&mp_ncached,(void *)&secKey, AES_BLOCK_SIZE*2,TX_NO_WAIT); s4 = tx_byte_allocate(&mp_ncached,(void *)&secReg, AES_BLOCK_SIZE, TX_NO_WAIT); - TimeCount = 0 ; if(s1 || s2 || s3 || s4 || s5) return BAD_FUNC_ARG; diff --git a/ctaocrypt/src/des3.c b/ctaocrypt/src/des3.c index 6153402c1..6b1987d47 100644 --- a/ctaocrypt/src/des3.c +++ b/ctaocrypt/src/des3.c @@ -275,7 +275,7 @@ #elif defined(HAVE_COLDFIRE_SEC) -#include +#include #include "sec.h" #include "mcf5475_sec.h" @@ -310,7 +310,9 @@ extern volatile unsigned char __MBAR[]; static void Des_Cbc(byte* out, const byte* in, word32 sz, byte *key, byte *iv, word32 desc) { - int ret ; /* int stat1,stat2 ; */ + #ifdef DEBUG_CYASSL + int ret ; int stat1,stat2 ; + #endif int size ; volatile int v ; @@ -360,13 +362,15 @@ static void Des_Cbc(byte* out, const byte* in, word32 sz, while((secDesc->header>> 24) != 0xff) { if(v++ > 1000)break ; } - + +#ifdef DEBUG_CYASSL ret = MCF_SEC_SISRH; - /* stat1 = MCF_SEC_DSR ; */ - /* stat2 = MCF_SEC_DISR ; */ + stat1 = MCF_SEC_DSR ; + stat2 = MCF_SEC_DISR ; if(ret & 0xe0000000) { /* db_printf("Des_Cbc(%x):ISRH=%08x, DSR=%08x, DISR=%08x\n", desc, ret, stat1, stat2) ; */ } +#endif XMEMCPY(out, desBuffOut, size) ; @@ -448,8 +452,10 @@ int Des_SetKey(Des* des, const byte* key, const byte* iv, int dir) InitMutex(&Mutex_DesSEC) ; } - - XMEMCPY(des->key, key, DES_KEYLEN); + + XMEMCPY(des->key, key, DES_KEYLEN); + setParity((byte *)des->key, DES_KEYLEN) ; + if (iv) { XMEMCPY(des->reg, iv, DES_IVLEN); } else { @@ -478,7 +484,8 @@ int Des3_SetKey(Des3* des3, const byte* key, const byte* iv, int dir) } XMEMCPY(des3->key[0], key, DES3_KEYLEN); - setParity((byte *)des3->key[0], DES3_KEYLEN) ; + setParity((byte *)des3->key[0], DES3_KEYLEN) ; + if (iv) { XMEMCPY(des3->reg, iv, DES3_IVLEN); } else { diff --git a/src/keys.c b/src/keys.c index 35d2c28e7..463ba9f4c 100644 --- a/src/keys.c +++ b/src/keys.c @@ -1473,25 +1473,6 @@ static int SetPrefix(byte* sha_input, int idx) #endif -static void setParity(byte *out, byte *in, int len) /* set parity for DES3 */ -{ - int i, j ; - byte v ; - int bits ; - - for(i=0; i> 1 ; - out[i] = v << 1 ; - bits = 0 ; - for(j=0; j<7; j++) { - bits += (v&0x1) ; - v = v >> 1 ; - } - out[i] |= (1 - (bits&0x1)) ; - } -} - static int SetKeys(Ciphers* enc, Ciphers* dec, Keys* keys, CipherSpecs* specs, byte side, void* heap, int devId) { @@ -1624,28 +1605,22 @@ static int SetKeys(Ciphers* enc, Ciphers* dec, Keys* keys, CipherSpecs* specs, } #endif if (side == CYASSL_CLIENT_END) { - byte key[DES_KEYLEN*3] ; - setParity(key, keys->client_write_key, DES_KEYLEN*3) ; - desRet = Des3_SetKey(enc->des3, key, + desRet = Des3_SetKey(enc->des3, keys->client_write_key, keys->client_write_IV, DES_ENCRYPTION); if (desRet != 0) return desRet; - setParity(key, keys->server_write_key, DES_KEYLEN*3) ; - desRet = Des3_SetKey(dec->des3, key, + desRet = Des3_SetKey(dec->des3, keys->server_write_key, keys->server_write_IV, DES_DECRYPTION); if (desRet != 0) return desRet; } else { - byte key[DES_KEYLEN*3] ; - setParity(key, keys->server_write_key, DES_KEYLEN*3) ; - desRet = Des3_SetKey(enc->des3, key, + desRet = Des3_SetKey(enc->des3, keys->server_write_key, keys->server_write_IV, DES_ENCRYPTION); if (desRet != 0) return desRet; - setParity(key, keys->client_write_key, DES_KEYLEN*3) ; - desRet = Des3_SetKey(dec->des3, key, - keys->client_write_IV, DES_DECRYPTION); + desRet = Des3_SetKey(dec->des3, keys->client_write_key, + keys->client_write_IV, DES_DECRYPTION); if (desRet != 0) return desRet; }