centralizing MAX_DIGEST_SIZE definition in hmac.h

This commit is contained in:
Moisés Guimarães
2013-09-06 15:53:22 -03:00
parent f2c75a9e87
commit d7a08b1a76
5 changed files with 13 additions and 27 deletions

View File

@@ -106,11 +106,7 @@ int PBKDF2(byte* output, const byte* passwd, int pLen, const byte* salt,
int hLen; int hLen;
int j; int j;
Hmac hmac; Hmac hmac;
#ifdef CYASSL_SHA512 byte buffer[MAX_DIGEST_SIZE];
byte buffer[SHA512_DIGEST_SIZE];
#else
byte buffer[INNER_HASH_SIZE]; /* max size, doesn't handle 512 yet */
#endif
if (hashType == MD5) { if (hashType == MD5) {
hLen = MD5_DIGEST_SIZE; hLen = MD5_DIGEST_SIZE;

View File

@@ -78,19 +78,19 @@ enum {
/* Select the largest available hash for the buffer size. */ /* Select the largest available hash for the buffer size. */
#if defined(CYASSL_SHA512) #if defined(CYASSL_SHA512)
INNER_HASH_SIZE = SHA512_DIGEST_SIZE, MAX_DIGEST_SIZE = SHA512_DIGEST_SIZE,
HMAC_BLOCK_SIZE = SHA512_BLOCK_SIZE HMAC_BLOCK_SIZE = SHA512_BLOCK_SIZE
#elif defined(CYASSL_SHA384) #elif defined(CYASSL_SHA384)
INNER_HASH_SIZE = SHA384_DIGEST_SIZE, MAX_DIGEST_SIZE = SHA384_DIGEST_SIZE,
HMAC_BLOCK_SIZE = SHA384_BLOCK_SIZE HMAC_BLOCK_SIZE = SHA384_BLOCK_SIZE
#elif !defined(NO_SHA256) #elif !defined(NO_SHA256)
INNER_HASH_SIZE = SHA256_DIGEST_SIZE, MAX_DIGEST_SIZE = SHA256_DIGEST_SIZE,
HMAC_BLOCK_SIZE = SHA256_BLOCK_SIZE HMAC_BLOCK_SIZE = SHA256_BLOCK_SIZE
#elif !defined(NO_SHA) #elif !defined(NO_SHA)
INNER_HASH_SIZE = SHA_DIGEST_SIZE, MAX_DIGEST_SIZE = SHA_DIGEST_SIZE,
HMAC_BLOCK_SIZE = SHA_BLOCK_SIZE HMAC_BLOCK_SIZE = SHA_BLOCK_SIZE
#elif !defined(NO_MD5) #elif !defined(NO_MD5)
INNER_HASH_SIZE = MD5_DIGEST_SIZE, MAX_DIGEST_SIZE = MD5_DIGEST_SIZE,
HMAC_BLOCK_SIZE = MD5_BLOCK_SIZE HMAC_BLOCK_SIZE = MD5_BLOCK_SIZE
#else #else
#error "You have to have some kind of hash if you want to use HMAC." #error "You have to have some kind of hash if you want to use HMAC."
@@ -122,7 +122,7 @@ typedef struct Hmac {
Hash hash; Hash hash;
word32 ipad[HMAC_BLOCK_SIZE / sizeof(word32)]; /* same block size all*/ word32 ipad[HMAC_BLOCK_SIZE / sizeof(word32)]; /* same block size all*/
word32 opad[HMAC_BLOCK_SIZE / sizeof(word32)]; word32 opad[HMAC_BLOCK_SIZE / sizeof(word32)];
word32 innerHash[INNER_HASH_SIZE / sizeof(word32)]; /* max size */ word32 innerHash[MAX_DIGEST_SIZE / sizeof(word32)];
byte macType; /* md5 sha or sha256 */ byte macType; /* md5 sha or sha256 */
byte innerHashKeyed; /* keyed flag */ byte innerHashKeyed; /* keyed flag */
#ifdef HAVE_CAVIUM #ifdef HAVE_CAVIUM

View File

@@ -37,6 +37,7 @@
#include <cyassl/ctaocrypt/aes.h> #include <cyassl/ctaocrypt/aes.h>
#include <cyassl/ctaocrypt/camellia.h> #include <cyassl/ctaocrypt/camellia.h>
#include <cyassl/ctaocrypt/logging.h> #include <cyassl/ctaocrypt/logging.h>
#include <cyassl/ctaocrypt/hmac.h>
#ifndef NO_RC4 #ifndef NO_RC4
#include <cyassl/ctaocrypt/arc4.h> #include <cyassl/ctaocrypt/arc4.h>
#endif #endif
@@ -519,17 +520,6 @@ enum {
}; };
#if defined(CYASSL_SHA384)
#define MAX_DIGEST_SIZE SHA384_DIGEST_SIZE
#elif !defined(NO_SHA256)
#define MAX_DIGEST_SIZE SHA256_DIGEST_SIZE
#elif !defined(NO_MD5) && !defined(NO_SHA)
#define MAX_DIGEST_SIZE (SHA_DIGEST_SIZE + MD5_DIGEST_SIZE)
#else
#error "You have configured the build so there isn't any hashing."
#endif
enum Misc { enum Misc {
ECC_BYTE = 0xC0, /* ECC first cipher suite byte */ ECC_BYTE = 0xC0, /* ECC first cipher suite byte */

View File

@@ -1389,7 +1389,7 @@ static INLINE int myDecryptVerifyCb(CYASSL* ssl,
unsigned int padByte = 0; unsigned int padByte = 0;
Hmac hmac; Hmac hmac;
byte myInner[CYASSL_TLS_HMAC_INNER_SZ]; byte myInner[CYASSL_TLS_HMAC_INNER_SZ];
byte verify[INNER_HASH_SIZE]; byte verify[MAX_DIGEST_SIZE];
const char* tlsStr = "TLS"; const char* tlsStr = "TLS";
/* example supports (d)tls aes */ /* example supports (d)tls aes */

View File

@@ -98,7 +98,7 @@ typedef enum {
} processReply; } processReply;
#ifndef NO_OLD_TLS #ifndef NO_OLD_TLS
static void Hmac(CYASSL* ssl, byte* digest, const byte* in, word32 sz, static void SSL_hmac(CYASSL* ssl, byte* digest, const byte* in, word32 sz,
int content, int verify); int content, int verify);
#endif #endif
@@ -1416,7 +1416,7 @@ int InitSSL(CYASSL* ssl, CYASSL_CTX* ctx)
ssl->options.resuming = 0; ssl->options.resuming = 0;
ssl->options.haveSessionId = 0; ssl->options.haveSessionId = 0;
#ifndef NO_OLD_TLS #ifndef NO_OLD_TLS
ssl->hmac = Hmac; /* default to SSLv3 */ ssl->hmac = SSL_hmac; /* default to SSLv3 */
#else #else
ssl->hmac = TLS_hmac; ssl->hmac = TLS_hmac;
#endif #endif
@@ -3422,7 +3422,7 @@ static int DoHelloRequest(CYASSL* ssl, const byte* input, word32* inOutIdx)
const byte* mac; const byte* mac;
int padSz = ssl->keys.encryptSz - HANDSHAKE_HEADER_SZ - int padSz = ssl->keys.encryptSz - HANDSHAKE_HEADER_SZ -
ssl->specs.hash_size; ssl->specs.hash_size;
byte verify[SHA256_DIGEST_SIZE]; byte verify[MAX_DIGEST_SIZE];
ssl->hmac(ssl, verify, input + *inOutIdx - HANDSHAKE_HEADER_SZ, ssl->hmac(ssl, verify, input + *inOutIdx - HANDSHAKE_HEADER_SZ,
HANDSHAKE_HEADER_SZ, handshake, 1); HANDSHAKE_HEADER_SZ, handshake, 1);
@@ -4954,7 +4954,7 @@ int SendChangeCipher(CYASSL* ssl)
#ifndef NO_OLD_TLS #ifndef NO_OLD_TLS
static void Hmac(CYASSL* ssl, byte* digest, const byte* in, word32 sz, static void SSL_hmac(CYASSL* ssl, byte* digest, const byte* in, word32 sz,
int content, int verify) int content, int verify)
{ {
byte result[MAX_DIGEST_SIZE]; byte result[MAX_DIGEST_SIZE];