From 5c2364c2bac4c0c0c269235aa701ec7e07a1e00e Mon Sep 17 00:00:00 2001 From: Paul Bakker Date: Mon, 1 Oct 2012 14:41:15 +0000 Subject: [PATCH] - Moved from unsigned long to uint32_t throughout code --- ChangeLog | 1 + include/polarssl/aes.h | 11 +- include/polarssl/bignum.h | 45 ++++---- include/polarssl/blowfish.h | 11 +- include/polarssl/bn_mul.h | 4 +- include/polarssl/config.h | 9 +- include/polarssl/des.h | 11 +- include/polarssl/md4.h | 11 +- include/polarssl/md5.h | 11 +- include/polarssl/padlock.h | 10 +- include/polarssl/pbkdf2.h | 9 +- include/polarssl/sha1.h | 11 +- include/polarssl/sha2.h | 11 +- include/polarssl/sha4.h | 12 +-- include/polarssl/ssl.h | 4 +- library/aes.c | 192 +++++++++++++++++----------------- library/base64.c | 11 +- library/bignum.c | 2 +- library/blowfish.c | 48 ++++----- library/camellia.c | 38 +++---- library/debug.c | 4 +- library/des.c | 82 +++++++-------- library/gcm.c | 38 +++---- library/md4.c | 72 ++++++------- library/md5.c | 72 ++++++------- library/net.c | 15 ++- library/padlock.c | 12 +-- library/pbkdf2.c | 6 +- library/sha1.c | 74 ++++++------- library/sha2.c | 82 +++++++-------- library/sha4.c | 28 ++--- library/x509parse.c | 2 +- library/xtea.c | 26 ++--- tests/suites/helpers.function | 18 ++-- 34 files changed, 539 insertions(+), 454 deletions(-) diff --git a/ChangeLog b/ChangeLog index 37d32e1ff..25c41dbde 100644 --- a/ChangeLog +++ b/ChangeLog @@ -45,6 +45,7 @@ Changes * Generalized external private key implementation handling (like PKCS#11) in SSL/TLS * Revamped x509_verify() and the SSL f_vrfy callback implementations + * Moved from unsigned long to fixed width uint32_t types throughout code Bugfix * Fixed handling error in mpi_cmp_mpi() on longer B values (found by diff --git a/include/polarssl/aes.h b/include/polarssl/aes.h index 80fd6d932..5f6c198e6 100644 --- a/include/polarssl/aes.h +++ b/include/polarssl/aes.h @@ -29,6 +29,13 @@ #include +#ifdef _MSC_VER +#include +typedef UINT32 uint32_t; +#else +#include +#endif + #define AES_ENCRYPT 1 #define AES_DECRYPT 0 @@ -41,8 +48,8 @@ typedef struct { int nr; /*!< number of rounds */ - unsigned long *rk; /*!< AES round keys */ - unsigned long buf[68]; /*!< unaligned data */ + uint32_t *rk; /*!< AES round keys */ + uint32_t buf[68]; /*!< unaligned data */ } aes_context; diff --git a/include/polarssl/bignum.h b/include/polarssl/bignum.h index a2039c71f..092e185d5 100644 --- a/include/polarssl/bignum.h +++ b/include/polarssl/bignum.h @@ -32,6 +32,16 @@ #include "config.h" +#ifdef _MSC_VER +#include +typedef INT16 int16_t; +typedef UINT16 uint16_t; +typedef UINT32 uint32_t; +typedef UINT64 uint64_t; +#else +#include +#endif + #define POLARSSL_ERR_MPI_FILE_IO_ERROR -0x0002 /**< An error occurred while reading from or writing to a file. */ #define POLARSSL_ERR_MPI_BAD_INPUT_DATA -0x0004 /**< Bad input parameters to function. */ #define POLARSSL_ERR_MPI_INVALID_CHARACTER -0x0006 /**< There is an invalid character in the digit string. */ @@ -97,34 +107,29 @@ #if defined(POLARSSL_HAVE_INT8) typedef signed char t_sint; typedef unsigned char t_uint; -typedef unsigned short t_udbl; +typedef uint16_t t_udbl; #else #if defined(POLARSSL_HAVE_INT16) -typedef signed short t_sint; -typedef unsigned short t_uint; -typedef unsigned long t_udbl; +typedef int16_t t_sint; +typedef uint16_t t_uint; +typedef uint32_t t_udbl; #else - typedef signed long t_sint; - typedef unsigned long t_uint; - #if defined(_MSC_VER) && defined(_M_IX86) - typedef unsigned __int64 t_udbl; - #else - #if defined(__GNUC__) && ( \ + typedef int32_t t_sint; + typedef uint32_t t_uint; + #if ( defined(_MSC_VER) && defined(_M_IX86) ) || \ + ( defined(__GNUC__) && ( \ defined(__amd64__) || defined(__x86_64__) || \ defined(__ppc64__) || defined(__powerpc64__) || \ defined(__ia64__) || defined(__alpha__) || \ (defined(__sparc__) && defined(__arch64__)) || \ - defined(__s390x__) ) - typedef unsigned int t_udbl __attribute__((mode(TI))); - #define POLARSSL_HAVE_LONGLONG - #else - #if defined(POLARSSL_HAVE_LONGLONG) - typedef unsigned long long t_udbl; - #endif - #endif + defined(__s390x__) ) ) + #define POLARSSL_HAVE_INT64 #endif -#endif -#endif + #if defined(POLARSSL_HAVE_INT64) + typedef uint64_t t_udbl; + #endif +#endif /* POLARSSL_HAVE_INT16 */ +#endif /* POLARSSL_HAVE_INT8 */ /** * \brief MPI structure diff --git a/include/polarssl/blowfish.h b/include/polarssl/blowfish.h index dc469d0b8..7139c18d4 100644 --- a/include/polarssl/blowfish.h +++ b/include/polarssl/blowfish.h @@ -29,6 +29,13 @@ #include +#ifdef _MSC_VER +#include +typedef UINT32 uint32_t; +#else +#include +#endif + #define BLOWFISH_ENCRYPT 1 #define BLOWFISH_DECRYPT 0 #define BLOWFISH_MAX_KEY 448 @@ -44,8 +51,8 @@ */ typedef struct { - unsigned long P[BLOWFISH_ROUNDS + 2]; /*!< Blowfish round keys */ - unsigned long S[4][256]; /*!< key dependent S-boxes */ + uint32_t P[BLOWFISH_ROUNDS + 2]; /*!< Blowfish round keys */ + uint32_t S[4][256]; /*!< key dependent S-boxes */ } blowfish_context; diff --git a/include/polarssl/bn_mul.h b/include/polarssl/bn_mul.h index f57d3a702..06324df78 100644 --- a/include/polarssl/bn_mul.h +++ b/include/polarssl/bn_mul.h @@ -743,7 +743,7 @@ #endif /* POLARSSL_HAVE_ASM */ #if !defined(MULADDC_CORE) -#if defined(POLARSSL_HAVE_LONGLONG) +#if defined(POLARSSL_HAVE_INT64) #define MULADDC_INIT \ { \ @@ -751,7 +751,7 @@ t_uint r0, r1; #define MULADDC_CORE \ - r = *(s++) * (t_udbl) b; \ + r = *(s++) * (t_udbl) b; \ r0 = r; \ r1 = r >> biL; \ r0 += c; r1 += (r0 < c); \ diff --git a/include/polarssl/config.h b/include/polarssl/config.h index 543b96c8c..16257b505 100644 --- a/include/polarssl/config.h +++ b/include/polarssl/config.h @@ -61,12 +61,13 @@ */ /** - * \def POLARSSL_HAVE_LONGLONG + * \def POLARSSL_HAVE_INT64 * - * The compiler supports the use of long long. + * The compiler supports the use of 64-bit types. + * Code automatically enables on known working systems. * - * Uncomment if the compiler supports long long. -#define POLARSSL_HAVE_LONGLONG + * Uncomment if the compiler supports 64-bit data types. +#define POLARSSL_HAVE_INT64 */ /** diff --git a/include/polarssl/des.h b/include/polarssl/des.h index 653e68b38..b649ccf20 100644 --- a/include/polarssl/des.h +++ b/include/polarssl/des.h @@ -29,6 +29,13 @@ #include +#ifdef _MSC_VER +#include +typedef UINT32 uint32_t; +#else +#include +#endif + #define DES_ENCRYPT 1 #define DES_DECRYPT 0 @@ -42,7 +49,7 @@ typedef struct { int mode; /*!< encrypt/decrypt */ - unsigned long sk[32]; /*!< DES subkeys */ + uint32_t sk[32]; /*!< DES subkeys */ } des_context; @@ -52,7 +59,7 @@ des_context; typedef struct { int mode; /*!< encrypt/decrypt */ - unsigned long sk[96]; /*!< 3DES subkeys */ + uint32_t sk[96]; /*!< 3DES subkeys */ } des3_context; diff --git a/include/polarssl/md4.h b/include/polarssl/md4.h index 2bd35ea16..641edf189 100644 --- a/include/polarssl/md4.h +++ b/include/polarssl/md4.h @@ -29,6 +29,13 @@ #include +#ifdef _MSC_VER +#include +typedef UINT32 uint32_t; +#else +#include +#endif + #define POLARSSL_ERR_MD4_FILE_IO_ERROR -0x0072 /**< Read/write error in file. */ /** @@ -36,8 +43,8 @@ */ typedef struct { - unsigned long total[2]; /*!< number of bytes processed */ - unsigned long state[4]; /*!< intermediate digest state */ + uint32_t total[2]; /*!< number of bytes processed */ + uint32_t state[4]; /*!< intermediate digest state */ unsigned char buffer[64]; /*!< data block being processed */ unsigned char ipad[64]; /*!< HMAC: inner padding */ diff --git a/include/polarssl/md5.h b/include/polarssl/md5.h index 936e9c958..2e97c2b7f 100644 --- a/include/polarssl/md5.h +++ b/include/polarssl/md5.h @@ -29,6 +29,13 @@ #include +#ifdef _MSC_VER +#include +typedef UINT32 uint32_t; +#else +#include +#endif + #define POLARSSL_ERR_MD5_FILE_IO_ERROR -0x0074 /**< Read/write error in file. */ /** @@ -36,8 +43,8 @@ */ typedef struct { - unsigned long total[2]; /*!< number of bytes processed */ - unsigned long state[4]; /*!< intermediate digest state */ + uint32_t total[2]; /*!< number of bytes processed */ + uint32_t state[4]; /*!< intermediate digest state */ unsigned char buffer[64]; /*!< data block being processed */ unsigned char ipad[64]; /*!< HMAC: inner padding */ diff --git a/include/polarssl/padlock.h b/include/polarssl/padlock.h index ce1357077..9df75cc7d 100644 --- a/include/polarssl/padlock.h +++ b/include/polarssl/padlock.h @@ -37,12 +37,20 @@ #define POLARSSL_HAVE_X86 #endif +#ifdef _MSC_VER +#include +typedef INT32 int32_t; +#else +#include +#endif + + #define PADLOCK_RNG 0x000C #define PADLOCK_ACE 0x00C0 #define PADLOCK_PHE 0x0C00 #define PADLOCK_PMM 0x3000 -#define PADLOCK_ALIGN16(x) (unsigned long *) (16 + ((long) x & ~15)) +#define PADLOCK_ALIGN16(x) (uint32_t *) (16 + ((int32_t) x & ~15)) #ifdef __cplusplus extern "C" { diff --git a/include/polarssl/pbkdf2.h b/include/polarssl/pbkdf2.h index 5a23150bc..af84c1398 100644 --- a/include/polarssl/pbkdf2.h +++ b/include/polarssl/pbkdf2.h @@ -33,6 +33,13 @@ #include "md.h" +#ifdef _MSC_VER +#include +typedef UINT32 uint32_t; +#else +#include +#endif + #define POLARSSL_ERR_PBKDF2_BAD_INPUT_DATA -0x007C /**< Bad input parameters to function. */ #ifdef __cplusplus @@ -56,7 +63,7 @@ extern "C" { int pbkdf2_hmac( md_context_t *ctx, const unsigned char *password, size_t plen, const unsigned char *salt, size_t slen, unsigned int iteration_count, - unsigned long key_length, unsigned char *output ); + uint32_t key_length, unsigned char *output ); /** diff --git a/include/polarssl/sha1.h b/include/polarssl/sha1.h index 0d5e67eb2..45ffadc9d 100644 --- a/include/polarssl/sha1.h +++ b/include/polarssl/sha1.h @@ -29,6 +29,13 @@ #include +#ifdef _MSC_VER +#include +typedef UINT32 uint32_t; +#else +#include +#endif + #define POLARSSL_ERR_SHA1_FILE_IO_ERROR -0x0076 /**< Read/write error in file. */ /** @@ -36,8 +43,8 @@ */ typedef struct { - unsigned long total[2]; /*!< number of bytes processed */ - unsigned long state[5]; /*!< intermediate digest state */ + uint32_t total[2]; /*!< number of bytes processed */ + uint32_t state[5]; /*!< intermediate digest state */ unsigned char buffer[64]; /*!< data block being processed */ unsigned char ipad[64]; /*!< HMAC: inner padding */ diff --git a/include/polarssl/sha2.h b/include/polarssl/sha2.h index 811b0fd61..054988d6b 100644 --- a/include/polarssl/sha2.h +++ b/include/polarssl/sha2.h @@ -29,6 +29,13 @@ #include +#ifdef _MSC_VER +#include +typedef UINT32 uint32_t; +#else +#include +#endif + #define POLARSSL_ERR_SHA2_FILE_IO_ERROR -0x0078 /**< Read/write error in file. */ /** @@ -36,8 +43,8 @@ */ typedef struct { - unsigned long total[2]; /*!< number of bytes processed */ - unsigned long state[8]; /*!< intermediate digest state */ + uint32_t total[2]; /*!< number of bytes processed */ + uint32_t state[8]; /*!< intermediate digest state */ unsigned char buffer[64]; /*!< data block being processed */ unsigned char ipad[64]; /*!< HMAC: inner padding */ diff --git a/include/polarssl/sha4.h b/include/polarssl/sha4.h index dafebec22..6aae12446 100644 --- a/include/polarssl/sha4.h +++ b/include/polarssl/sha4.h @@ -29,23 +29,23 @@ #include -#define POLARSSL_ERR_SHA4_FILE_IO_ERROR -0x007A /**< Read/write error in file. */ - #if defined(_MSC_VER) || defined(__WATCOMC__) #define UL64(x) x##ui64 - #define long64 __int64 + typedef unsigned __int64 uint64_t; #else + #include #define UL64(x) x##ULL - #define long64 long long #endif +#define POLARSSL_ERR_SHA4_FILE_IO_ERROR -0x007A /**< Read/write error in file. */ + /** * \brief SHA-512 context structure */ typedef struct { - unsigned long64 total[2]; /*!< number of bytes processed */ - unsigned long64 state[8]; /*!< intermediate digest state */ + uint64_t total[2]; /*!< number of bytes processed */ + uint64_t state[8]; /*!< intermediate digest state */ unsigned char buffer[128]; /*!< data block being processed */ unsigned char ipad[128]; /*!< HMAC: inner padding */ diff --git a/include/polarssl/ssl.h b/include/polarssl/ssl.h index d48320855..9feacddd8 100644 --- a/include/polarssl/ssl.h +++ b/include/polarssl/ssl.h @@ -330,8 +330,8 @@ struct _ssl_transform unsigned char mac_enc[32]; /*!< MAC (encryption) */ unsigned char mac_dec[32]; /*!< MAC (decryption) */ - unsigned long ctx_enc[134]; /*!< encryption context */ - unsigned long ctx_dec[134]; /*!< decryption context */ + uint32_t ctx_enc[134]; /*!< encryption context */ + uint32_t ctx_dec[134]; /*!< decryption context */ /* * Session specific compression layer diff --git a/library/aes.c b/library/aes.c index cc05ffd43..0295f3f28 100644 --- a/library/aes.c +++ b/library/aes.c @@ -41,18 +41,18 @@ /* * 32-bit integer manipulation macros (little endian) */ -#ifndef GET_ULONG_LE -#define GET_ULONG_LE(n,b,i) \ +#ifndef GET_UINT32_LE +#define GET_UINT32_LE(n,b,i) \ { \ - (n) = ( (unsigned long) (b)[(i) ] ) \ - | ( (unsigned long) (b)[(i) + 1] << 8 ) \ - | ( (unsigned long) (b)[(i) + 2] << 16 ) \ - | ( (unsigned long) (b)[(i) + 3] << 24 ); \ + (n) = ( (uint32_t) (b)[(i) ] ) \ + | ( (uint32_t) (b)[(i) + 1] << 8 ) \ + | ( (uint32_t) (b)[(i) + 2] << 16 ) \ + | ( (uint32_t) (b)[(i) + 3] << 24 ); \ } #endif -#ifndef PUT_ULONG_LE -#define PUT_ULONG_LE(n,b,i) \ +#ifndef PUT_UINT32_LE +#define PUT_UINT32_LE(n,b,i) \ { \ (b)[(i) ] = (unsigned char) ( (n) ); \ (b)[(i) + 1] = (unsigned char) ( (n) >> 8 ); \ @@ -177,19 +177,19 @@ static const unsigned char FSb[256] = V(CB,B0,B0,7B), V(FC,54,54,A8), V(D6,BB,BB,6D), V(3A,16,16,2C) #define V(a,b,c,d) 0x##a##b##c##d -static const unsigned long FT0[256] = { FT }; +static const uint32_t FT0[256] = { FT }; #undef V #define V(a,b,c,d) 0x##b##c##d##a -static const unsigned long FT1[256] = { FT }; +static const uint32_t FT1[256] = { FT }; #undef V #define V(a,b,c,d) 0x##c##d##a##b -static const unsigned long FT2[256] = { FT }; +static const uint32_t FT2[256] = { FT }; #undef V #define V(a,b,c,d) 0x##d##a##b##c -static const unsigned long FT3[256] = { FT }; +static const uint32_t FT3[256] = { FT }; #undef V #undef FT @@ -304,19 +304,19 @@ static const unsigned char RSb[256] = V(61,84,CB,7B), V(70,B6,32,D5), V(74,5C,6C,48), V(42,57,B8,D0) #define V(a,b,c,d) 0x##a##b##c##d -static const unsigned long RT0[256] = { RT }; +static const uint32_t RT0[256] = { RT }; #undef V #define V(a,b,c,d) 0x##b##c##d##a -static const unsigned long RT1[256] = { RT }; +static const uint32_t RT1[256] = { RT }; #undef V #define V(a,b,c,d) 0x##c##d##a##b -static const unsigned long RT2[256] = { RT }; +static const uint32_t RT2[256] = { RT }; #undef V #define V(a,b,c,d) 0x##d##a##b##c -static const unsigned long RT3[256] = { RT }; +static const uint32_t RT3[256] = { RT }; #undef V #undef RT @@ -324,7 +324,7 @@ static const unsigned long RT3[256] = { RT }; /* * Round constants */ -static const unsigned long RCON[10] = +static const uint32_t RCON[10] = { 0x00000001, 0x00000002, 0x00000004, 0x00000008, 0x00000010, 0x00000020, 0x00000040, 0x00000080, @@ -337,24 +337,24 @@ static const unsigned long RCON[10] = * Forward S-box & tables */ static unsigned char FSb[256]; -static unsigned long FT0[256]; -static unsigned long FT1[256]; -static unsigned long FT2[256]; -static unsigned long FT3[256]; +static uint32_t FT0[256]; +static uint32_t FT1[256]; +static uint32_t FT2[256]; +static uint32_t FT3[256]; /* * Reverse S-box & tables */ static unsigned char RSb[256]; -static unsigned long RT0[256]; -static unsigned long RT1[256]; -static unsigned long RT2[256]; -static unsigned long RT3[256]; +static uint32_t RT0[256]; +static uint32_t RT1[256]; +static uint32_t RT2[256]; +static uint32_t RT3[256]; /* * Round constants */ -static unsigned long RCON[10]; +static uint32_t RCON[10]; /* * Tables generation code @@ -386,7 +386,7 @@ static void aes_gen_tables( void ) */ for( i = 0, x = 1; i < 10; i++ ) { - RCON[i] = (unsigned long) x; + RCON[i] = (uint32_t) x; x = XTIME( x ) & 0xFF; } @@ -419,10 +419,10 @@ static void aes_gen_tables( void ) y = XTIME( x ) & 0xFF; z = ( y ^ x ) & 0xFF; - FT0[i] = ( (unsigned long) y ) ^ - ( (unsigned long) x << 8 ) ^ - ( (unsigned long) x << 16 ) ^ - ( (unsigned long) z << 24 ); + FT0[i] = ( (uint32_t) y ) ^ + ( (uint32_t) x << 8 ) ^ + ( (uint32_t) x << 16 ) ^ + ( (uint32_t) z << 24 ); FT1[i] = ROTL8( FT0[i] ); FT2[i] = ROTL8( FT1[i] ); @@ -430,10 +430,10 @@ static void aes_gen_tables( void ) x = RSb[i]; - RT0[i] = ( (unsigned long) MUL( 0x0E, x ) ) ^ - ( (unsigned long) MUL( 0x09, x ) << 8 ) ^ - ( (unsigned long) MUL( 0x0D, x ) << 16 ) ^ - ( (unsigned long) MUL( 0x0B, x ) << 24 ); + RT0[i] = ( (uint32_t) MUL( 0x0E, x ) ) ^ + ( (uint32_t) MUL( 0x09, x ) << 8 ) ^ + ( (uint32_t) MUL( 0x0D, x ) << 16 ) ^ + ( (uint32_t) MUL( 0x0B, x ) << 24 ); RT1[i] = ROTL8( RT0[i] ); RT2[i] = ROTL8( RT1[i] ); @@ -449,7 +449,7 @@ static void aes_gen_tables( void ) int aes_setkey_enc( aes_context *ctx, const unsigned char *key, unsigned int keysize ) { unsigned int i; - unsigned long *RK; + uint32_t *RK; #if !defined(POLARSSL_AES_ROM_TABLES) if( aes_init_done == 0 ) @@ -480,7 +480,7 @@ int aes_setkey_enc( aes_context *ctx, const unsigned char *key, unsigned int key for( i = 0; i < (keysize >> 5); i++ ) { - GET_ULONG_LE( RK[i], key, i << 2 ); + GET_UINT32_LE( RK[i], key, i << 2 ); } switch( ctx->nr ) @@ -490,10 +490,10 @@ int aes_setkey_enc( aes_context *ctx, const unsigned char *key, unsigned int key for( i = 0; i < 10; i++, RK += 4 ) { RK[4] = RK[0] ^ RCON[i] ^ - ( (unsigned long) FSb[ ( RK[3] >> 8 ) & 0xFF ] ) ^ - ( (unsigned long) FSb[ ( RK[3] >> 16 ) & 0xFF ] << 8 ) ^ - ( (unsigned long) FSb[ ( RK[3] >> 24 ) & 0xFF ] << 16 ) ^ - ( (unsigned long) FSb[ ( RK[3] ) & 0xFF ] << 24 ); + ( (uint32_t) FSb[ ( RK[3] >> 8 ) & 0xFF ] ) ^ + ( (uint32_t) FSb[ ( RK[3] >> 16 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) FSb[ ( RK[3] >> 24 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) FSb[ ( RK[3] ) & 0xFF ] << 24 ); RK[5] = RK[1] ^ RK[4]; RK[6] = RK[2] ^ RK[5]; @@ -506,10 +506,10 @@ int aes_setkey_enc( aes_context *ctx, const unsigned char *key, unsigned int key for( i = 0; i < 8; i++, RK += 6 ) { RK[6] = RK[0] ^ RCON[i] ^ - ( (unsigned long) FSb[ ( RK[5] >> 8 ) & 0xFF ] ) ^ - ( (unsigned long) FSb[ ( RK[5] >> 16 ) & 0xFF ] << 8 ) ^ - ( (unsigned long) FSb[ ( RK[5] >> 24 ) & 0xFF ] << 16 ) ^ - ( (unsigned long) FSb[ ( RK[5] ) & 0xFF ] << 24 ); + ( (uint32_t) FSb[ ( RK[5] >> 8 ) & 0xFF ] ) ^ + ( (uint32_t) FSb[ ( RK[5] >> 16 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) FSb[ ( RK[5] >> 24 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) FSb[ ( RK[5] ) & 0xFF ] << 24 ); RK[7] = RK[1] ^ RK[6]; RK[8] = RK[2] ^ RK[7]; @@ -524,20 +524,20 @@ int aes_setkey_enc( aes_context *ctx, const unsigned char *key, unsigned int key for( i = 0; i < 7; i++, RK += 8 ) { RK[8] = RK[0] ^ RCON[i] ^ - ( (unsigned long) FSb[ ( RK[7] >> 8 ) & 0xFF ] ) ^ - ( (unsigned long) FSb[ ( RK[7] >> 16 ) & 0xFF ] << 8 ) ^ - ( (unsigned long) FSb[ ( RK[7] >> 24 ) & 0xFF ] << 16 ) ^ - ( (unsigned long) FSb[ ( RK[7] ) & 0xFF ] << 24 ); + ( (uint32_t) FSb[ ( RK[7] >> 8 ) & 0xFF ] ) ^ + ( (uint32_t) FSb[ ( RK[7] >> 16 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) FSb[ ( RK[7] >> 24 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) FSb[ ( RK[7] ) & 0xFF ] << 24 ); RK[9] = RK[1] ^ RK[8]; RK[10] = RK[2] ^ RK[9]; RK[11] = RK[3] ^ RK[10]; RK[12] = RK[4] ^ - ( (unsigned long) FSb[ ( RK[11] ) & 0xFF ] ) ^ - ( (unsigned long) FSb[ ( RK[11] >> 8 ) & 0xFF ] << 8 ) ^ - ( (unsigned long) FSb[ ( RK[11] >> 16 ) & 0xFF ] << 16 ) ^ - ( (unsigned long) FSb[ ( RK[11] >> 24 ) & 0xFF ] << 24 ); + ( (uint32_t) FSb[ ( RK[11] ) & 0xFF ] ) ^ + ( (uint32_t) FSb[ ( RK[11] >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) FSb[ ( RK[11] >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) FSb[ ( RK[11] >> 24 ) & 0xFF ] << 24 ); RK[13] = RK[5] ^ RK[12]; RK[14] = RK[6] ^ RK[13]; @@ -560,8 +560,8 @@ int aes_setkey_dec( aes_context *ctx, const unsigned char *key, unsigned int key { int i, j; aes_context cty; - unsigned long *RK; - unsigned long *SK; + uint32_t *RK; + uint32_t *SK; int ret; switch( keysize ) @@ -669,7 +669,7 @@ int aes_crypt_ecb( aes_context *ctx, unsigned char output[16] ) { int i; - unsigned long *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; + uint32_t *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; #if defined(POLARSSL_PADLOCK_C) && defined(POLARSSL_HAVE_X86) if( aes_padlock_ace ) @@ -685,10 +685,10 @@ int aes_crypt_ecb( aes_context *ctx, RK = ctx->rk; - GET_ULONG_LE( X0, input, 0 ); X0 ^= *RK++; - GET_ULONG_LE( X1, input, 4 ); X1 ^= *RK++; - GET_ULONG_LE( X2, input, 8 ); X2 ^= *RK++; - GET_ULONG_LE( X3, input, 12 ); X3 ^= *RK++; + GET_UINT32_LE( X0, input, 0 ); X0 ^= *RK++; + GET_UINT32_LE( X1, input, 4 ); X1 ^= *RK++; + GET_UINT32_LE( X2, input, 8 ); X2 ^= *RK++; + GET_UINT32_LE( X3, input, 12 ); X3 ^= *RK++; if( mode == AES_DECRYPT ) { @@ -701,28 +701,28 @@ int aes_crypt_ecb( aes_context *ctx, AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); X0 = *RK++ ^ \ - ( (unsigned long) RSb[ ( Y0 ) & 0xFF ] ) ^ - ( (unsigned long) RSb[ ( Y3 >> 8 ) & 0xFF ] << 8 ) ^ - ( (unsigned long) RSb[ ( Y2 >> 16 ) & 0xFF ] << 16 ) ^ - ( (unsigned long) RSb[ ( Y1 >> 24 ) & 0xFF ] << 24 ); + ( (uint32_t) RSb[ ( Y0 ) & 0xFF ] ) ^ + ( (uint32_t) RSb[ ( Y3 >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) RSb[ ( Y2 >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) RSb[ ( Y1 >> 24 ) & 0xFF ] << 24 ); X1 = *RK++ ^ \ - ( (unsigned long) RSb[ ( Y1 ) & 0xFF ] ) ^ - ( (unsigned long) RSb[ ( Y0 >> 8 ) & 0xFF ] << 8 ) ^ - ( (unsigned long) RSb[ ( Y3 >> 16 ) & 0xFF ] << 16 ) ^ - ( (unsigned long) RSb[ ( Y2 >> 24 ) & 0xFF ] << 24 ); + ( (uint32_t) RSb[ ( Y1 ) & 0xFF ] ) ^ + ( (uint32_t) RSb[ ( Y0 >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) RSb[ ( Y3 >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) RSb[ ( Y2 >> 24 ) & 0xFF ] << 24 ); X2 = *RK++ ^ \ - ( (unsigned long) RSb[ ( Y2 ) & 0xFF ] ) ^ - ( (unsigned long) RSb[ ( Y1 >> 8 ) & 0xFF ] << 8 ) ^ - ( (unsigned long) RSb[ ( Y0 >> 16 ) & 0xFF ] << 16 ) ^ - ( (unsigned long) RSb[ ( Y3 >> 24 ) & 0xFF ] << 24 ); + ( (uint32_t) RSb[ ( Y2 ) & 0xFF ] ) ^ + ( (uint32_t) RSb[ ( Y1 >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) RSb[ ( Y0 >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) RSb[ ( Y3 >> 24 ) & 0xFF ] << 24 ); X3 = *RK++ ^ \ - ( (unsigned long) RSb[ ( Y3 ) & 0xFF ] ) ^ - ( (unsigned long) RSb[ ( Y2 >> 8 ) & 0xFF ] << 8 ) ^ - ( (unsigned long) RSb[ ( Y1 >> 16 ) & 0xFF ] << 16 ) ^ - ( (unsigned long) RSb[ ( Y0 >> 24 ) & 0xFF ] << 24 ); + ( (uint32_t) RSb[ ( Y3 ) & 0xFF ] ) ^ + ( (uint32_t) RSb[ ( Y2 >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) RSb[ ( Y1 >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) RSb[ ( Y0 >> 24 ) & 0xFF ] << 24 ); } else /* AES_ENCRYPT */ { @@ -735,34 +735,34 @@ int aes_crypt_ecb( aes_context *ctx, AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); X0 = *RK++ ^ \ - ( (unsigned long) FSb[ ( Y0 ) & 0xFF ] ) ^ - ( (unsigned long) FSb[ ( Y1 >> 8 ) & 0xFF ] << 8 ) ^ - ( (unsigned long) FSb[ ( Y2 >> 16 ) & 0xFF ] << 16 ) ^ - ( (unsigned long) FSb[ ( Y3 >> 24 ) & 0xFF ] << 24 ); + ( (uint32_t) FSb[ ( Y0 ) & 0xFF ] ) ^ + ( (uint32_t) FSb[ ( Y1 >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) FSb[ ( Y2 >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) FSb[ ( Y3 >> 24 ) & 0xFF ] << 24 ); X1 = *RK++ ^ \ - ( (unsigned long) FSb[ ( Y1 ) & 0xFF ] ) ^ - ( (unsigned long) FSb[ ( Y2 >> 8 ) & 0xFF ] << 8 ) ^ - ( (unsigned long) FSb[ ( Y3 >> 16 ) & 0xFF ] << 16 ) ^ - ( (unsigned long) FSb[ ( Y0 >> 24 ) & 0xFF ] << 24 ); + ( (uint32_t) FSb[ ( Y1 ) & 0xFF ] ) ^ + ( (uint32_t) FSb[ ( Y2 >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) FSb[ ( Y3 >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) FSb[ ( Y0 >> 24 ) & 0xFF ] << 24 ); X2 = *RK++ ^ \ - ( (unsigned long) FSb[ ( Y2 ) & 0xFF ] ) ^ - ( (unsigned long) FSb[ ( Y3 >> 8 ) & 0xFF ] << 8 ) ^ - ( (unsigned long) FSb[ ( Y0 >> 16 ) & 0xFF ] << 16 ) ^ - ( (unsigned long) FSb[ ( Y1 >> 24 ) & 0xFF ] << 24 ); + ( (uint32_t) FSb[ ( Y2 ) & 0xFF ] ) ^ + ( (uint32_t) FSb[ ( Y3 >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) FSb[ ( Y0 >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) FSb[ ( Y1 >> 24 ) & 0xFF ] << 24 ); X3 = *RK++ ^ \ - ( (unsigned long) FSb[ ( Y3 ) & 0xFF ] ) ^ - ( (unsigned long) FSb[ ( Y0 >> 8 ) & 0xFF ] << 8 ) ^ - ( (unsigned long) FSb[ ( Y1 >> 16 ) & 0xFF ] << 16 ) ^ - ( (unsigned long) FSb[ ( Y2 >> 24 ) & 0xFF ] << 24 ); + ( (uint32_t) FSb[ ( Y3 ) & 0xFF ] ) ^ + ( (uint32_t) FSb[ ( Y0 >> 8 ) & 0xFF ] << 8 ) ^ + ( (uint32_t) FSb[ ( Y1 >> 16 ) & 0xFF ] << 16 ) ^ + ( (uint32_t) FSb[ ( Y2 >> 24 ) & 0xFF ] << 24 ); } - PUT_ULONG_LE( X0, output, 0 ); - PUT_ULONG_LE( X1, output, 4 ); - PUT_ULONG_LE( X2, output, 8 ); - PUT_ULONG_LE( X3, output, 12 ); + PUT_UINT32_LE( X0, output, 0 ); + PUT_UINT32_LE( X1, output, 4 ); + PUT_UINT32_LE( X2, output, 8 ); + PUT_UINT32_LE( X3, output, 12 ); return( 0 ); } diff --git a/library/base64.c b/library/base64.c index 8601c9419..8cd279c12 100644 --- a/library/base64.c +++ b/library/base64.c @@ -29,6 +29,13 @@ #include "polarssl/base64.h" +#ifdef _MSC_VER +#include +typedef UINT32 uint32_t; +#else +#include +#endif + static const unsigned char base64_enc_map[64] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', @@ -126,8 +133,8 @@ int base64_encode( unsigned char *dst, size_t *dlen, int base64_decode( unsigned char *dst, size_t *dlen, const unsigned char *src, size_t slen ) { - size_t i, j, n; - unsigned long x; + size_t i, n; + uint32_t j, x; unsigned char *p; for( i = j = n = 0; i < slen; i++ ) diff --git a/library/bignum.c b/library/bignum.c index cbd25ab55..60a8df42e 100644 --- a/library/bignum.c +++ b/library/bignum.c @@ -1102,7 +1102,7 @@ int mpi_div_mpi( mpi *Q, mpi *R, const mpi *A, const mpi *B ) Z.p[i - t - 1] = ~0; else { -#if defined(POLARSSL_HAVE_LONGLONG) +#if defined(POLARSSL_HAVE_INT64) t_udbl r; r = (t_udbl) X.p[i] << biL; diff --git a/library/blowfish.c b/library/blowfish.c index 004ca6cdd..5c17e3e64 100644 --- a/library/blowfish.c +++ b/library/blowfish.c @@ -38,18 +38,18 @@ /* * 32-bit integer manipulation macros (big endian) */ -#ifndef GET_ULONG_BE -#define GET_ULONG_BE(n,b,i) \ +#ifndef GET_UINT32_BE +#define GET_UINT32_BE(n,b,i) \ { \ - (n) = ( (unsigned long) (b)[(i) ] << 24 ) \ - | ( (unsigned long) (b)[(i) + 1] << 16 ) \ - | ( (unsigned long) (b)[(i) + 2] << 8 ) \ - | ( (unsigned long) (b)[(i) + 3] ); \ + (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ + | ( (uint32_t) (b)[(i) + 1] << 16 ) \ + | ( (uint32_t) (b)[(i) + 2] << 8 ) \ + | ( (uint32_t) (b)[(i) + 3] ); \ } #endif -#ifndef PUT_ULONG_BE -#define PUT_ULONG_BE(n,b,i) \ +#ifndef PUT_UINT32_BE +#define PUT_UINT32_BE(n,b,i) \ { \ (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ @@ -59,13 +59,13 @@ #endif /* declarations of data at the end of this file */ -static const unsigned long P[]; -static const unsigned long S[4][256]; +static const uint32_t P[]; +static const uint32_t S[4][256]; -static unsigned long F(blowfish_context *ctx, unsigned long x) +static uint32_t F(blowfish_context *ctx, uint32_t x) { unsigned short a, b, c, d; - unsigned long y; + uint32_t y; d = (unsigned short)(x & 0xFF); x >>= 8; @@ -81,9 +81,9 @@ static unsigned long F(blowfish_context *ctx, unsigned long x) return y; } -static void blowfish_enc(blowfish_context *ctx, unsigned long *xl, unsigned long *xr) +static void blowfish_enc(blowfish_context *ctx, uint32_t *xl, uint32_t *xr) { - unsigned long Xl, Xr, temp; + uint32_t Xl, Xr, temp; short i; Xl = *xl; @@ -110,9 +110,9 @@ static void blowfish_enc(blowfish_context *ctx, unsigned long *xl, unsigned long *xr = Xr; } -static void blowfish_dec(blowfish_context *ctx, unsigned long *xl, unsigned long *xr) +static void blowfish_dec(blowfish_context *ctx, uint32_t *xl, uint32_t *xr) { - unsigned long Xl, Xr, temp; + uint32_t Xl, Xr, temp; short i; Xl = *xl; @@ -145,7 +145,7 @@ static void blowfish_dec(blowfish_context *ctx, unsigned long *xl, unsigned long int blowfish_setkey( blowfish_context *ctx, const unsigned char *key, unsigned int keysize ) { unsigned int i, j, k; - unsigned long data, datal, datar; + uint32_t data, datal, datar; if( keysize < BLOWFISH_MIN_KEY || keysize > BLOWFISH_MAX_KEY || ( keysize % 8 ) ) @@ -204,10 +204,10 @@ int blowfish_crypt_ecb( blowfish_context *ctx, const unsigned char input[BLOWFISH_BLOCKSIZE], unsigned char output[BLOWFISH_BLOCKSIZE] ) { - unsigned long X0, X1; + uint32_t X0, X1; - GET_ULONG_BE( X0, input, 0 ); - GET_ULONG_BE( X1, input, 4 ); + GET_UINT32_BE( X0, input, 0 ); + GET_UINT32_BE( X1, input, 4 ); if( mode == BLOWFISH_DECRYPT ) { @@ -218,8 +218,8 @@ int blowfish_crypt_ecb( blowfish_context *ctx, blowfish_enc(ctx, &X0, &X1); } - PUT_ULONG_BE( X0, output, 0 ); - PUT_ULONG_BE( X1, output, 4 ); + PUT_UINT32_BE( X0, output, 0 ); + PUT_UINT32_BE( X1, output, 4 ); return( 0 ); } @@ -360,7 +360,7 @@ int blowfish_crypt_ctr( blowfish_context *ctx, } #endif /* POLARSSL_CIPHER_MODE_CTR */ -static const unsigned long P[BLOWFISH_ROUNDS + 2] = { +static const uint32_t P[BLOWFISH_ROUNDS + 2] = { 0x243F6A88L, 0x85A308D3L, 0x13198A2EL, 0x03707344L, 0xA4093822L, 0x299F31D0L, 0x082EFA98L, 0xEC4E6C89L, 0x452821E6L, 0x38D01377L, 0xBE5466CFL, 0x34E90C6CL, @@ -368,7 +368,7 @@ static const unsigned long P[BLOWFISH_ROUNDS + 2] = { 0x9216D5D9L, 0x8979FB1BL }; -static const unsigned long S[4][256] = { +static const uint32_t S[4][256] = { { 0xD1310BA6L, 0x98DFB5ACL, 0x2FFD72DBL, 0xD01ADFB7L, 0xB8E1AFEDL, 0x6A267E96L, 0xBA7C9045L, 0xF12C7F99L, 0x24A19947L, 0xB3916CF7L, 0x0801F2E2L, 0x858EFC16L, diff --git a/library/camellia.c b/library/camellia.c index 34b8f294f..2bc344377 100644 --- a/library/camellia.c +++ b/library/camellia.c @@ -38,18 +38,18 @@ /* * 32-bit integer manipulation macros (big endian) */ -#ifndef GET_ULONG_BE -#define GET_ULONG_BE(n,b,i) \ +#ifndef GET_UINT32_BE +#define GET_UINT32_BE(n,b,i) \ { \ - (n) = ( (unsigned long) (b)[(i) ] << 24 ) \ - | ( (unsigned long) (b)[(i) + 1] << 16 ) \ - | ( (unsigned long) (b)[(i) + 2] << 8 ) \ - | ( (unsigned long) (b)[(i) + 3] ); \ + (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ + | ( (uint32_t) (b)[(i) + 1] << 16 ) \ + | ( (uint32_t) (b)[(i) + 2] << 8 ) \ + | ( (uint32_t) (b)[(i) + 3] ); \ } #endif -#ifndef PUT_ULONG_BE -#define PUT_ULONG_BE(n,b,i) \ +#ifndef PUT_UINT32_BE +#define PUT_UINT32_BE(n,b,i) \ { \ (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ @@ -342,8 +342,8 @@ int camellia_setkey_enc( camellia_context *ctx, const unsigned char *key, unsign * Prepare SIGMA values */ for (i = 0; i < 6; i++) { - GET_ULONG_BE(SIGMA[i][0], SIGMA_CHARS[i], 0); - GET_ULONG_BE(SIGMA[i][1], SIGMA_CHARS[i], 4); + GET_UINT32_BE(SIGMA[i][0], SIGMA_CHARS[i], 0); + GET_UINT32_BE(SIGMA[i][1], SIGMA_CHARS[i], 4); } /* @@ -354,7 +354,7 @@ int camellia_setkey_enc( camellia_context *ctx, const unsigned char *key, unsign /* Store KL, KR */ for (i = 0; i < 8; i++) - GET_ULONG_BE(KC[i], t, i * 4); + GET_UINT32_BE(KC[i], t, i * 4); /* Generate KA */ for( i = 0; i < 4; ++i) @@ -475,10 +475,10 @@ int camellia_crypt_ecb( camellia_context *ctx, NR = ctx->nr; RK = ctx->rk; - GET_ULONG_BE( X[0], input, 0 ); - GET_ULONG_BE( X[1], input, 4 ); - GET_ULONG_BE( X[2], input, 8 ); - GET_ULONG_BE( X[3], input, 12 ); + GET_UINT32_BE( X[0], input, 0 ); + GET_UINT32_BE( X[1], input, 4 ); + GET_UINT32_BE( X[2], input, 8 ); + GET_UINT32_BE( X[3], input, 12 ); X[0] ^= *RK++; X[1] ^= *RK++; @@ -513,10 +513,10 @@ int camellia_crypt_ecb( camellia_context *ctx, X[0] ^= *RK++; X[1] ^= *RK++; - PUT_ULONG_BE( X[2], output, 0 ); - PUT_ULONG_BE( X[3], output, 4 ); - PUT_ULONG_BE( X[0], output, 8 ); - PUT_ULONG_BE( X[1], output, 12 ); + PUT_UINT32_BE( X[2], output, 0 ); + PUT_UINT32_BE( X[3], output, 4 ); + PUT_UINT32_BE( X[0], output, 8 ); + PUT_UINT32_BE( X[1], output, 12 ); return( 0 ); } diff --git a/library/debug.c b/library/debug.c index 687e19486..81ee64907 100644 --- a/library/debug.c +++ b/library/debug.c @@ -147,9 +147,9 @@ void debug_print_mpi( const ssl_context *ssl, int level, if( ( ( X->p[n] >> j ) & 1 ) != 0 ) break; - snprintf( str, maxlen, "%s(%04d): value of '%s' (%lu bits) is:\n", + snprintf( str, maxlen, "%s(%04d): value of '%s' (%d bits) is:\n", file, line, text, - (unsigned long) ( ( n * ( sizeof(t_uint) << 3 ) ) + j + 1 ) ); + (int) ( ( n * ( sizeof(t_uint) << 3 ) ) + j + 1 ) ); str[maxlen] = '\0'; ssl->f_dbg( ssl->p_dbg, level, str ); diff --git a/library/des.c b/library/des.c index b40baf8fb..338d2738c 100644 --- a/library/des.c +++ b/library/des.c @@ -38,18 +38,18 @@ /* * 32-bit integer manipulation macros (big endian) */ -#ifndef GET_ULONG_BE -#define GET_ULONG_BE(n,b,i) \ +#ifndef GET_UINT32_BE +#define GET_UINT32_BE(n,b,i) \ { \ - (n) = ( (unsigned long) (b)[(i) ] << 24 ) \ - | ( (unsigned long) (b)[(i) + 1] << 16 ) \ - | ( (unsigned long) (b)[(i) + 2] << 8 ) \ - | ( (unsigned long) (b)[(i) + 3] ); \ + (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ + | ( (uint32_t) (b)[(i) + 1] << 16 ) \ + | ( (uint32_t) (b)[(i) + 2] << 8 ) \ + | ( (uint32_t) (b)[(i) + 3] ); \ } #endif -#ifndef PUT_ULONG_BE -#define PUT_ULONG_BE(n,b,i) \ +#ifndef PUT_UINT32_BE +#define PUT_UINT32_BE(n,b,i) \ { \ (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ @@ -61,7 +61,7 @@ /* * Expanded DES S-boxes */ -static const unsigned long SB1[64] = +static const uint32_t SB1[64] = { 0x01010400, 0x00000000, 0x00010000, 0x01010404, 0x01010004, 0x00010404, 0x00000004, 0x00010000, @@ -81,7 +81,7 @@ static const unsigned long SB1[64] = 0x00010004, 0x00010400, 0x00000000, 0x01010004 }; -static const unsigned long SB2[64] = +static const uint32_t SB2[64] = { 0x80108020, 0x80008000, 0x00008000, 0x00108020, 0x00100000, 0x00000020, 0x80100020, 0x80008020, @@ -101,7 +101,7 @@ static const unsigned long SB2[64] = 0x80000000, 0x80100020, 0x80108020, 0x00108000 }; -static const unsigned long SB3[64] = +static const uint32_t SB3[64] = { 0x00000208, 0x08020200, 0x00000000, 0x08020008, 0x08000200, 0x00000000, 0x00020208, 0x08000200, @@ -121,7 +121,7 @@ static const unsigned long SB3[64] = 0x00020208, 0x00000008, 0x08020008, 0x00020200 }; -static const unsigned long SB4[64] = +static const uint32_t SB4[64] = { 0x00802001, 0x00002081, 0x00002081, 0x00000080, 0x00802080, 0x00800081, 0x00800001, 0x00002001, @@ -141,7 +141,7 @@ static const unsigned long SB4[64] = 0x00000080, 0x00800000, 0x00002000, 0x00802080 }; -static const unsigned long SB5[64] = +static const uint32_t SB5[64] = { 0x00000100, 0x02080100, 0x02080000, 0x42000100, 0x00080000, 0x00000100, 0x40000000, 0x02080000, @@ -161,7 +161,7 @@ static const unsigned long SB5[64] = 0x00000000, 0x40080000, 0x02080100, 0x40000100 }; -static const unsigned long SB6[64] = +static const uint32_t SB6[64] = { 0x20000010, 0x20400000, 0x00004000, 0x20404010, 0x20400000, 0x00000010, 0x20404010, 0x00400000, @@ -181,7 +181,7 @@ static const unsigned long SB6[64] = 0x20404000, 0x20000000, 0x00400010, 0x20004010 }; -static const unsigned long SB7[64] = +static const uint32_t SB7[64] = { 0x00200000, 0x04200002, 0x04000802, 0x00000000, 0x00000800, 0x04000802, 0x00200802, 0x04200800, @@ -201,7 +201,7 @@ static const unsigned long SB7[64] = 0x04000002, 0x04000800, 0x00000800, 0x00200002 }; -static const unsigned long SB8[64] = +static const uint32_t SB8[64] = { 0x10001040, 0x00001000, 0x00040000, 0x10041040, 0x10000000, 0x10001040, 0x00000040, 0x10000000, @@ -224,7 +224,7 @@ static const unsigned long SB8[64] = /* * PC1: left and right halves bit-swap */ -static const unsigned long LHs[16] = +static const uint32_t LHs[16] = { 0x00000000, 0x00000001, 0x00000100, 0x00000101, 0x00010000, 0x00010001, 0x00010100, 0x00010101, @@ -232,7 +232,7 @@ static const unsigned long LHs[16] = 0x01010000, 0x01010001, 0x01010100, 0x01010101 }; -static const unsigned long RHs[16] = +static const uint32_t RHs[16] = { 0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100, 0x00010100, 0x01010100, @@ -286,7 +286,7 @@ static const unsigned long RHs[16] = SB1[ (T >> 24) & 0x3F ]; \ } -#define SWAP(a,b) { unsigned long t = a; a = b; b = t; t = 0; } +#define SWAP(a,b) { uint32_t t = a; a = b; b = t; t = 0; } static const unsigned char odd_parity_table[128] = { 1, 2, 4, 7, 8, 11, 13, 14, 16, 19, 21, 22, 25, 26, 28, 31, 32, 35, 37, 38, 41, 42, 44, @@ -376,13 +376,13 @@ int des_key_check_weak( const unsigned char key[DES_KEY_SIZE] ) return( 0 ); } -static void des_setkey( unsigned long SK[32], const unsigned char key[DES_KEY_SIZE] ) +static void des_setkey( uint32_t SK[32], const unsigned char key[DES_KEY_SIZE] ) { int i; - unsigned long X, Y, T; + uint32_t X, Y, T; - GET_ULONG_BE( X, key, 0 ); - GET_ULONG_BE( Y, key, 4 ); + GET_UINT32_BE( X, key, 0 ); + GET_UINT32_BE( Y, key, 4 ); /* * Permuted Choice 1 @@ -473,8 +473,8 @@ int des_setkey_dec( des_context *ctx, const unsigned char key[DES_KEY_SIZE] ) return( 0 ); } -static void des3_set2key( unsigned long esk[96], - unsigned long dsk[96], +static void des3_set2key( uint32_t esk[96], + uint32_t dsk[96], const unsigned char key[DES_KEY_SIZE*2] ) { int i; @@ -503,7 +503,7 @@ static void des3_set2key( unsigned long esk[96], */ int des3_set2key_enc( des3_context *ctx, const unsigned char key[DES_KEY_SIZE * 2] ) { - unsigned long sk[96]; + uint32_t sk[96]; des3_set2key( ctx->sk, sk, key ); memset( sk, 0, sizeof( sk ) ); @@ -516,7 +516,7 @@ int des3_set2key_enc( des3_context *ctx, const unsigned char key[DES_KEY_SIZE * */ int des3_set2key_dec( des3_context *ctx, const unsigned char key[DES_KEY_SIZE * 2] ) { - unsigned long sk[96]; + uint32_t sk[96]; des3_set2key( sk, ctx->sk, key ); memset( sk, 0, sizeof( sk ) ); @@ -524,8 +524,8 @@ int des3_set2key_dec( des3_context *ctx, const unsigned char key[DES_KEY_SIZE * return( 0 ); } -static void des3_set3key( unsigned long esk[96], - unsigned long dsk[96], +static void des3_set3key( uint32_t esk[96], + uint32_t dsk[96], const unsigned char key[24] ) { int i; @@ -552,7 +552,7 @@ static void des3_set3key( unsigned long esk[96], */ int des3_set3key_enc( des3_context *ctx, const unsigned char key[DES_KEY_SIZE * 3] ) { - unsigned long sk[96]; + uint32_t sk[96]; des3_set3key( ctx->sk, sk, key ); memset( sk, 0, sizeof( sk ) ); @@ -565,7 +565,7 @@ int des3_set3key_enc( des3_context *ctx, const unsigned char key[DES_KEY_SIZE * */ int des3_set3key_dec( des3_context *ctx, const unsigned char key[DES_KEY_SIZE * 3] ) { - unsigned long sk[96]; + uint32_t sk[96]; des3_set3key( sk, ctx->sk, key ); memset( sk, 0, sizeof( sk ) ); @@ -581,12 +581,12 @@ int des_crypt_ecb( des_context *ctx, unsigned char output[8] ) { int i; - unsigned long X, Y, T, *SK; + uint32_t X, Y, T, *SK; SK = ctx->sk; - GET_ULONG_BE( X, input, 0 ); - GET_ULONG_BE( Y, input, 4 ); + GET_UINT32_BE( X, input, 0 ); + GET_UINT32_BE( Y, input, 4 ); DES_IP( X, Y ); @@ -598,8 +598,8 @@ int des_crypt_ecb( des_context *ctx, DES_FP( Y, X ); - PUT_ULONG_BE( Y, output, 0 ); - PUT_ULONG_BE( X, output, 4 ); + PUT_UINT32_BE( Y, output, 0 ); + PUT_UINT32_BE( X, output, 4 ); return( 0 ); } @@ -664,12 +664,12 @@ int des3_crypt_ecb( des3_context *ctx, unsigned char output[8] ) { int i; - unsigned long X, Y, T, *SK; + uint32_t X, Y, T, *SK; SK = ctx->sk; - GET_ULONG_BE( X, input, 0 ); - GET_ULONG_BE( Y, input, 4 ); + GET_UINT32_BE( X, input, 0 ); + GET_UINT32_BE( Y, input, 4 ); DES_IP( X, Y ); @@ -693,8 +693,8 @@ int des3_crypt_ecb( des3_context *ctx, DES_FP( Y, X ); - PUT_ULONG_BE( Y, output, 0 ); - PUT_ULONG_BE( X, output, 4 ); + PUT_UINT32_BE( Y, output, 0 ); + PUT_UINT32_BE( X, output, 4 ); return( 0 ); } diff --git a/library/gcm.c b/library/gcm.c index 616f7248f..89068c919 100644 --- a/library/gcm.c +++ b/library/gcm.c @@ -34,18 +34,18 @@ /* * 32-bit integer manipulation macros (big endian) */ -#ifndef GET_ULONG_BE -#define GET_ULONG_BE(n,b,i) \ +#ifndef GET_UINT32_BE +#define GET_UINT32_BE(n,b,i) \ { \ - (n) = ( (unsigned long) (b)[(i) ] << 24 ) \ - | ( (unsigned long) (b)[(i) + 1] << 16 ) \ - | ( (unsigned long) (b)[(i) + 2] << 8 ) \ - | ( (unsigned long) (b)[(i) + 3] ); \ + (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ + | ( (uint32_t) (b)[(i) + 1] << 16 ) \ + | ( (uint32_t) (b)[(i) + 2] << 8 ) \ + | ( (uint32_t) (b)[(i) + 3] ); \ } #endif -#ifndef PUT_ULONG_BE -#define PUT_ULONG_BE(n,b,i) \ +#ifndef PUT_UINT32_BE +#define PUT_UINT32_BE(n,b,i) \ { \ (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ @@ -67,12 +67,12 @@ static void gcm_gen_table( gcm_context *ctx ) ctx->HH[0] = 0; ctx->HL[0] = 0; - GET_ULONG_BE( hi, h, 0 ); - GET_ULONG_BE( lo, h, 4 ); + GET_UINT32_BE( hi, h, 0 ); + GET_UINT32_BE( lo, h, 4 ); vh = (uint64_t) hi << 32 | lo; - GET_ULONG_BE( hi, h, 8 ); - GET_ULONG_BE( lo, h, 12 ); + GET_UINT32_BE( hi, h, 8 ); + GET_UINT32_BE( lo, h, 12 ); vl = (uint64_t) hi << 32 | lo; ctx->HL[8] = vl; @@ -165,10 +165,10 @@ void gcm_mult( gcm_context *ctx, const unsigned char x[16], unsigned char output zl ^= ctx->HL[hi]; } - PUT_ULONG_BE( zh >> 32, output, 0 ); - PUT_ULONG_BE( zh, output, 4 ); - PUT_ULONG_BE( zl >> 32, output, 8 ); - PUT_ULONG_BE( zl, output, 12 ); + PUT_UINT32_BE( zh >> 32, output, 0 ); + PUT_UINT32_BE( zh, output, 4 ); + PUT_UINT32_BE( zl >> 32, output, 8 ); + PUT_UINT32_BE( zl, output, 12 ); } int gcm_crypt_and_tag( gcm_context *ctx, @@ -219,7 +219,7 @@ int gcm_crypt_and_tag( gcm_context *ctx, else { memset( work_buf, 0x00, 16 ); - PUT_ULONG_BE( iv_len * 8, work_buf, 12 ); + PUT_UINT32_BE( iv_len * 8, work_buf, 12 ); p = iv; while( iv_len > 0 ) @@ -309,8 +309,8 @@ int gcm_crypt_and_tag( gcm_context *ctx, { memset( work_buf, 0x00, 16 ); - PUT_ULONG_BE( orig_add_len , work_buf, 4 ); - PUT_ULONG_BE( orig_len , work_buf, 12 ); + PUT_UINT32_BE( orig_add_len , work_buf, 4 ); + PUT_UINT32_BE( orig_len , work_buf, 12 ); ((uint64_t *) buf)[0] ^= ((uint64_t *) work_buf)[0]; ((uint64_t *) buf)[1] ^= ((uint64_t *) work_buf)[1]; diff --git a/library/md4.c b/library/md4.c index ad52e5e4a..82adcd8d3 100644 --- a/library/md4.c +++ b/library/md4.c @@ -42,18 +42,18 @@ /* * 32-bit integer manipulation macros (little endian) */ -#ifndef GET_ULONG_LE -#define GET_ULONG_LE(n,b,i) \ +#ifndef GET_UINT32_LE +#define GET_UINT32_LE(n,b,i) \ { \ - (n) = ( (unsigned long) (b)[(i) ] ) \ - | ( (unsigned long) (b)[(i) + 1] << 8 ) \ - | ( (unsigned long) (b)[(i) + 2] << 16 ) \ - | ( (unsigned long) (b)[(i) + 3] << 24 ); \ + (n) = ( (uint32_t) (b)[(i) ] ) \ + | ( (uint32_t) (b)[(i) + 1] << 8 ) \ + | ( (uint32_t) (b)[(i) + 2] << 16 ) \ + | ( (uint32_t) (b)[(i) + 3] << 24 ); \ } #endif -#ifndef PUT_ULONG_LE -#define PUT_ULONG_LE(n,b,i) \ +#ifndef PUT_UINT32_LE +#define PUT_UINT32_LE(n,b,i) \ { \ (b)[(i) ] = (unsigned char) ( (n) ); \ (b)[(i) + 1] = (unsigned char) ( (n) >> 8 ); \ @@ -78,24 +78,24 @@ void md4_starts( md4_context *ctx ) static void md4_process( md4_context *ctx, const unsigned char data[64] ) { - unsigned long X[16], A, B, C, D; + uint32_t X[16], A, B, C, D; - GET_ULONG_LE( X[ 0], data, 0 ); - GET_ULONG_LE( X[ 1], data, 4 ); - GET_ULONG_LE( X[ 2], data, 8 ); - GET_ULONG_LE( X[ 3], data, 12 ); - GET_ULONG_LE( X[ 4], data, 16 ); - GET_ULONG_LE( X[ 5], data, 20 ); - GET_ULONG_LE( X[ 6], data, 24 ); - GET_ULONG_LE( X[ 7], data, 28 ); - GET_ULONG_LE( X[ 8], data, 32 ); - GET_ULONG_LE( X[ 9], data, 36 ); - GET_ULONG_LE( X[10], data, 40 ); - GET_ULONG_LE( X[11], data, 44 ); - GET_ULONG_LE( X[12], data, 48 ); - GET_ULONG_LE( X[13], data, 52 ); - GET_ULONG_LE( X[14], data, 56 ); - GET_ULONG_LE( X[15], data, 60 ); + GET_UINT32_LE( X[ 0], data, 0 ); + GET_UINT32_LE( X[ 1], data, 4 ); + GET_UINT32_LE( X[ 2], data, 8 ); + GET_UINT32_LE( X[ 3], data, 12 ); + GET_UINT32_LE( X[ 4], data, 16 ); + GET_UINT32_LE( X[ 5], data, 20 ); + GET_UINT32_LE( X[ 6], data, 24 ); + GET_UINT32_LE( X[ 7], data, 28 ); + GET_UINT32_LE( X[ 8], data, 32 ); + GET_UINT32_LE( X[ 9], data, 36 ); + GET_UINT32_LE( X[10], data, 40 ); + GET_UINT32_LE( X[11], data, 44 ); + GET_UINT32_LE( X[12], data, 48 ); + GET_UINT32_LE( X[13], data, 52 ); + GET_UINT32_LE( X[14], data, 56 ); + GET_UINT32_LE( X[15], data, 60 ); #define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n))) @@ -185,7 +185,7 @@ static void md4_process( md4_context *ctx, const unsigned char data[64] ) void md4_update( md4_context *ctx, const unsigned char *input, size_t ilen ) { size_t fill; - unsigned long left; + uint32_t left; if( ilen <= 0 ) return; @@ -193,10 +193,10 @@ void md4_update( md4_context *ctx, const unsigned char *input, size_t ilen ) left = ctx->total[0] & 0x3F; fill = 64 - left; - ctx->total[0] += (unsigned long) ilen; + ctx->total[0] += (uint32_t) ilen; ctx->total[0] &= 0xFFFFFFFF; - if( ctx->total[0] < (unsigned long) ilen ) + if( ctx->total[0] < (uint32_t) ilen ) ctx->total[1]++; if( left && ilen >= fill ) @@ -236,16 +236,16 @@ static const unsigned char md4_padding[64] = */ void md4_finish( md4_context *ctx, unsigned char output[16] ) { - unsigned long last, padn; - unsigned long high, low; + uint32_t last, padn; + uint32_t high, low; unsigned char msglen[8]; high = ( ctx->total[0] >> 29 ) | ( ctx->total[1] << 3 ); low = ( ctx->total[0] << 3 ); - PUT_ULONG_LE( low, msglen, 0 ); - PUT_ULONG_LE( high, msglen, 4 ); + PUT_UINT32_LE( low, msglen, 0 ); + PUT_UINT32_LE( high, msglen, 4 ); last = ctx->total[0] & 0x3F; padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last ); @@ -253,10 +253,10 @@ void md4_finish( md4_context *ctx, unsigned char output[16] ) md4_update( ctx, (unsigned char *) md4_padding, padn ); md4_update( ctx, msglen, 8 ); - PUT_ULONG_LE( ctx->state[0], output, 0 ); - PUT_ULONG_LE( ctx->state[1], output, 4 ); - PUT_ULONG_LE( ctx->state[2], output, 8 ); - PUT_ULONG_LE( ctx->state[3], output, 12 ); + PUT_UINT32_LE( ctx->state[0], output, 0 ); + PUT_UINT32_LE( ctx->state[1], output, 4 ); + PUT_UINT32_LE( ctx->state[2], output, 8 ); + PUT_UINT32_LE( ctx->state[3], output, 12 ); } /* diff --git a/library/md5.c b/library/md5.c index 7a449b246..298f1faf2 100644 --- a/library/md5.c +++ b/library/md5.c @@ -41,18 +41,18 @@ /* * 32-bit integer manipulation macros (little endian) */ -#ifndef GET_ULONG_LE -#define GET_ULONG_LE(n,b,i) \ +#ifndef GET_UINT32_LE +#define GET_UINT32_LE(n,b,i) \ { \ - (n) = ( (unsigned long) (b)[(i) ] ) \ - | ( (unsigned long) (b)[(i) + 1] << 8 ) \ - | ( (unsigned long) (b)[(i) + 2] << 16 ) \ - | ( (unsigned long) (b)[(i) + 3] << 24 ); \ + (n) = ( (uint32_t) (b)[(i) ] ) \ + | ( (uint32_t) (b)[(i) + 1] << 8 ) \ + | ( (uint32_t) (b)[(i) + 2] << 16 ) \ + | ( (uint32_t) (b)[(i) + 3] << 24 ); \ } #endif -#ifndef PUT_ULONG_LE -#define PUT_ULONG_LE(n,b,i) \ +#ifndef PUT_UINT32_LE +#define PUT_UINT32_LE(n,b,i) \ { \ (b)[(i) ] = (unsigned char) ( (n) ); \ (b)[(i) + 1] = (unsigned char) ( (n) >> 8 ); \ @@ -77,24 +77,24 @@ void md5_starts( md5_context *ctx ) static void md5_process( md5_context *ctx, const unsigned char data[64] ) { - unsigned long X[16], A, B, C, D; + uint32_t X[16], A, B, C, D; - GET_ULONG_LE( X[ 0], data, 0 ); - GET_ULONG_LE( X[ 1], data, 4 ); - GET_ULONG_LE( X[ 2], data, 8 ); - GET_ULONG_LE( X[ 3], data, 12 ); - GET_ULONG_LE( X[ 4], data, 16 ); - GET_ULONG_LE( X[ 5], data, 20 ); - GET_ULONG_LE( X[ 6], data, 24 ); - GET_ULONG_LE( X[ 7], data, 28 ); - GET_ULONG_LE( X[ 8], data, 32 ); - GET_ULONG_LE( X[ 9], data, 36 ); - GET_ULONG_LE( X[10], data, 40 ); - GET_ULONG_LE( X[11], data, 44 ); - GET_ULONG_LE( X[12], data, 48 ); - GET_ULONG_LE( X[13], data, 52 ); - GET_ULONG_LE( X[14], data, 56 ); - GET_ULONG_LE( X[15], data, 60 ); + GET_UINT32_LE( X[ 0], data, 0 ); + GET_UINT32_LE( X[ 1], data, 4 ); + GET_UINT32_LE( X[ 2], data, 8 ); + GET_UINT32_LE( X[ 3], data, 12 ); + GET_UINT32_LE( X[ 4], data, 16 ); + GET_UINT32_LE( X[ 5], data, 20 ); + GET_UINT32_LE( X[ 6], data, 24 ); + GET_UINT32_LE( X[ 7], data, 28 ); + GET_UINT32_LE( X[ 8], data, 32 ); + GET_UINT32_LE( X[ 9], data, 36 ); + GET_UINT32_LE( X[10], data, 40 ); + GET_UINT32_LE( X[11], data, 44 ); + GET_UINT32_LE( X[12], data, 48 ); + GET_UINT32_LE( X[13], data, 52 ); + GET_UINT32_LE( X[14], data, 56 ); + GET_UINT32_LE( X[15], data, 60 ); #define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n))) @@ -204,7 +204,7 @@ static void md5_process( md5_context *ctx, const unsigned char data[64] ) void md5_update( md5_context *ctx, const unsigned char *input, size_t ilen ) { size_t fill; - unsigned long left; + uint32_t left; if( ilen <= 0 ) return; @@ -212,10 +212,10 @@ void md5_update( md5_context *ctx, const unsigned char *input, size_t ilen ) left = ctx->total[0] & 0x3F; fill = 64 - left; - ctx->total[0] += (unsigned long) ilen; + ctx->total[0] += (uint32_t) ilen; ctx->total[0] &= 0xFFFFFFFF; - if( ctx->total[0] < (unsigned long) ilen ) + if( ctx->total[0] < (uint32_t) ilen ) ctx->total[1]++; if( left && ilen >= fill ) @@ -255,16 +255,16 @@ static const unsigned char md5_padding[64] = */ void md5_finish( md5_context *ctx, unsigned char output[16] ) { - unsigned long last, padn; - unsigned long high, low; + uint32_t last, padn; + uint32_t high, low; unsigned char msglen[8]; high = ( ctx->total[0] >> 29 ) | ( ctx->total[1] << 3 ); low = ( ctx->total[0] << 3 ); - PUT_ULONG_LE( low, msglen, 0 ); - PUT_ULONG_LE( high, msglen, 4 ); + PUT_UINT32_LE( low, msglen, 0 ); + PUT_UINT32_LE( high, msglen, 4 ); last = ctx->total[0] & 0x3F; padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last ); @@ -272,10 +272,10 @@ void md5_finish( md5_context *ctx, unsigned char output[16] ) md5_update( ctx, (unsigned char *) md5_padding, padn ); md5_update( ctx, msglen, 8 ); - PUT_ULONG_LE( ctx->state[0], output, 0 ); - PUT_ULONG_LE( ctx->state[1], output, 4 ); - PUT_ULONG_LE( ctx->state[2], output, 8 ); - PUT_ULONG_LE( ctx->state[3], output, 12 ); + PUT_UINT32_LE( ctx->state[0], output, 0 ); + PUT_UINT32_LE( ctx->state[1], output, 4 ); + PUT_UINT32_LE( ctx->state[2], output, 8 ); + PUT_UINT32_LE( ctx->state[3], output, 12 ); } /* diff --git a/library/net.c b/library/net.c index a0c141ad1..fedde16fe 100644 --- a/library/net.c +++ b/library/net.c @@ -76,6 +76,13 @@ static int wsa_init_done = 0; #include #include +#ifdef _MSC_VER +#include +typedef UINT32 uint32_t; +#else +#include +#endif + /* * htons() is not always available. * By default go for LITTLE_ENDIAN variant. Otherwise hope for _BYTE_ORDER and __BIG_ENDIAN @@ -179,10 +186,10 @@ int net_bind( int *fd, const char *bind_ip, int port ) if( n == 4 ) server_addr.sin_addr.s_addr = - ( (unsigned long) c[0] << 24 ) | - ( (unsigned long) c[1] << 16 ) | - ( (unsigned long) c[2] << 8 ) | - ( (unsigned long) c[3] ); + ( (uint32_t) c[0] << 24 ) | + ( (uint32_t) c[1] << 16 ) | + ( (uint32_t) c[2] << 8 ) | + ( (uint32_t) c[3] ); } if( bind( *fd, (struct sockaddr *) &server_addr, diff --git a/library/padlock.c b/library/padlock.c index 2e2e4775f..a7b4c0c77 100644 --- a/library/padlock.c +++ b/library/padlock.c @@ -77,9 +77,9 @@ int padlock_xcryptecb( aes_context *ctx, unsigned char output[16] ) { int ebx; - unsigned long *rk; - unsigned long *blk; - unsigned long *ctrl; + uint32_t *rk; + uint32_t *blk; + uint32_t *ctrl; unsigned char buf[256]; rk = ctx->rk; @@ -119,9 +119,9 @@ int padlock_xcryptcbc( aes_context *ctx, { int ebx; size_t count; - unsigned long *rk; - unsigned long *iw; - unsigned long *ctrl; + uint32_t *rk; + uint32_t *iw; + uint32_t *ctrl; unsigned char buf[256]; if( ( (long) input & 15 ) != 0 || diff --git a/library/pbkdf2.c b/library/pbkdf2.c index 19a8f41cc..5bc4ab7a2 100644 --- a/library/pbkdf2.c +++ b/library/pbkdf2.c @@ -42,7 +42,7 @@ int pbkdf2_hmac( md_context_t *ctx, const unsigned char *password, size_t plen, const unsigned char *salt, size_t slen, unsigned int iteration_count, - unsigned long key_length, unsigned char *output ) + uint32_t key_length, unsigned char *output ) { int ret, j; unsigned int i; @@ -143,10 +143,10 @@ unsigned char salt[MAX_TESTS][40] = "sa\0lt", }; -unsigned long it_cnt[MAX_TESTS] = +uint32_t it_cnt[MAX_TESTS] = { 1, 2, 4096, 16777216, 4096, 4096 }; -unsigned long key_len[MAX_TESTS] = +uint32_t key_len[MAX_TESTS] = { 20, 20, 20, 20, 25, 16 }; diff --git a/library/sha1.c b/library/sha1.c index 72ca06338..b0b6e4331 100644 --- a/library/sha1.c +++ b/library/sha1.c @@ -41,18 +41,18 @@ /* * 32-bit integer manipulation macros (big endian) */ -#ifndef GET_ULONG_BE -#define GET_ULONG_BE(n,b,i) \ +#ifndef GET_UINT32_BE +#define GET_UINT32_BE(n,b,i) \ { \ - (n) = ( (unsigned long) (b)[(i) ] << 24 ) \ - | ( (unsigned long) (b)[(i) + 1] << 16 ) \ - | ( (unsigned long) (b)[(i) + 2] << 8 ) \ - | ( (unsigned long) (b)[(i) + 3] ); \ + (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ + | ( (uint32_t) (b)[(i) + 1] << 16 ) \ + | ( (uint32_t) (b)[(i) + 2] << 8 ) \ + | ( (uint32_t) (b)[(i) + 3] ); \ } #endif -#ifndef PUT_ULONG_BE -#define PUT_ULONG_BE(n,b,i) \ +#ifndef PUT_UINT32_BE +#define PUT_UINT32_BE(n,b,i) \ { \ (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ @@ -78,24 +78,24 @@ void sha1_starts( sha1_context *ctx ) static void sha1_process( sha1_context *ctx, const unsigned char data[64] ) { - unsigned long temp, W[16], A, B, C, D, E; + uint32_t temp, W[16], A, B, C, D, E; - GET_ULONG_BE( W[ 0], data, 0 ); - GET_ULONG_BE( W[ 1], data, 4 ); - GET_ULONG_BE( W[ 2], data, 8 ); - GET_ULONG_BE( W[ 3], data, 12 ); - GET_ULONG_BE( W[ 4], data, 16 ); - GET_ULONG_BE( W[ 5], data, 20 ); - GET_ULONG_BE( W[ 6], data, 24 ); - GET_ULONG_BE( W[ 7], data, 28 ); - GET_ULONG_BE( W[ 8], data, 32 ); - GET_ULONG_BE( W[ 9], data, 36 ); - GET_ULONG_BE( W[10], data, 40 ); - GET_ULONG_BE( W[11], data, 44 ); - GET_ULONG_BE( W[12], data, 48 ); - GET_ULONG_BE( W[13], data, 52 ); - GET_ULONG_BE( W[14], data, 56 ); - GET_ULONG_BE( W[15], data, 60 ); + GET_UINT32_BE( W[ 0], data, 0 ); + GET_UINT32_BE( W[ 1], data, 4 ); + GET_UINT32_BE( W[ 2], data, 8 ); + GET_UINT32_BE( W[ 3], data, 12 ); + GET_UINT32_BE( W[ 4], data, 16 ); + GET_UINT32_BE( W[ 5], data, 20 ); + GET_UINT32_BE( W[ 6], data, 24 ); + GET_UINT32_BE( W[ 7], data, 28 ); + GET_UINT32_BE( W[ 8], data, 32 ); + GET_UINT32_BE( W[ 9], data, 36 ); + GET_UINT32_BE( W[10], data, 40 ); + GET_UINT32_BE( W[11], data, 44 ); + GET_UINT32_BE( W[12], data, 48 ); + GET_UINT32_BE( W[13], data, 52 ); + GET_UINT32_BE( W[14], data, 56 ); + GET_UINT32_BE( W[15], data, 60 ); #define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n))) @@ -238,7 +238,7 @@ static void sha1_process( sha1_context *ctx, const unsigned char data[64] ) void sha1_update( sha1_context *ctx, const unsigned char *input, size_t ilen ) { size_t fill; - unsigned long left; + uint32_t left; if( ilen <= 0 ) return; @@ -246,10 +246,10 @@ void sha1_update( sha1_context *ctx, const unsigned char *input, size_t ilen ) left = ctx->total[0] & 0x3F; fill = 64 - left; - ctx->total[0] += (unsigned long) ilen; + ctx->total[0] += (uint32_t) ilen; ctx->total[0] &= 0xFFFFFFFF; - if( ctx->total[0] < (unsigned long) ilen ) + if( ctx->total[0] < (uint32_t) ilen ) ctx->total[1]++; if( left && ilen >= fill ) @@ -289,16 +289,16 @@ static const unsigned char sha1_padding[64] = */ void sha1_finish( sha1_context *ctx, unsigned char output[20] ) { - unsigned long last, padn; - unsigned long high, low; + uint32_t last, padn; + uint32_t high, low; unsigned char msglen[8]; high = ( ctx->total[0] >> 29 ) | ( ctx->total[1] << 3 ); low = ( ctx->total[0] << 3 ); - PUT_ULONG_BE( high, msglen, 0 ); - PUT_ULONG_BE( low, msglen, 4 ); + PUT_UINT32_BE( high, msglen, 0 ); + PUT_UINT32_BE( low, msglen, 4 ); last = ctx->total[0] & 0x3F; padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last ); @@ -306,11 +306,11 @@ void sha1_finish( sha1_context *ctx, unsigned char output[20] ) sha1_update( ctx, (unsigned char *) sha1_padding, padn ); sha1_update( ctx, msglen, 8 ); - PUT_ULONG_BE( ctx->state[0], output, 0 ); - PUT_ULONG_BE( ctx->state[1], output, 4 ); - PUT_ULONG_BE( ctx->state[2], output, 8 ); - PUT_ULONG_BE( ctx->state[3], output, 12 ); - PUT_ULONG_BE( ctx->state[4], output, 16 ); + PUT_UINT32_BE( ctx->state[0], output, 0 ); + PUT_UINT32_BE( ctx->state[1], output, 4 ); + PUT_UINT32_BE( ctx->state[2], output, 8 ); + PUT_UINT32_BE( ctx->state[3], output, 12 ); + PUT_UINT32_BE( ctx->state[4], output, 16 ); } /* diff --git a/library/sha2.c b/library/sha2.c index 4b5e6962f..0245f312c 100644 --- a/library/sha2.c +++ b/library/sha2.c @@ -41,18 +41,18 @@ /* * 32-bit integer manipulation macros (big endian) */ -#ifndef GET_ULONG_BE -#define GET_ULONG_BE(n,b,i) \ +#ifndef GET_UINT32_BE +#define GET_UINT32_BE(n,b,i) \ { \ - (n) = ( (unsigned long) (b)[(i) ] << 24 ) \ - | ( (unsigned long) (b)[(i) + 1] << 16 ) \ - | ( (unsigned long) (b)[(i) + 2] << 8 ) \ - | ( (unsigned long) (b)[(i) + 3] ); \ + (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ + | ( (uint32_t) (b)[(i) + 1] << 16 ) \ + | ( (uint32_t) (b)[(i) + 2] << 8 ) \ + | ( (uint32_t) (b)[(i) + 3] ); \ } #endif -#ifndef PUT_ULONG_BE -#define PUT_ULONG_BE(n,b,i) \ +#ifndef PUT_UINT32_BE +#define PUT_UINT32_BE(n,b,i) \ { \ (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ @@ -99,25 +99,25 @@ void sha2_starts( sha2_context *ctx, int is224 ) static void sha2_process( sha2_context *ctx, const unsigned char data[64] ) { - unsigned long temp1, temp2, W[64]; - unsigned long A, B, C, D, E, F, G, H; + uint32_t temp1, temp2, W[64]; + uint32_t A, B, C, D, E, F, G, H; - GET_ULONG_BE( W[ 0], data, 0 ); - GET_ULONG_BE( W[ 1], data, 4 ); - GET_ULONG_BE( W[ 2], data, 8 ); - GET_ULONG_BE( W[ 3], data, 12 ); - GET_ULONG_BE( W[ 4], data, 16 ); - GET_ULONG_BE( W[ 5], data, 20 ); - GET_ULONG_BE( W[ 6], data, 24 ); - GET_ULONG_BE( W[ 7], data, 28 ); - GET_ULONG_BE( W[ 8], data, 32 ); - GET_ULONG_BE( W[ 9], data, 36 ); - GET_ULONG_BE( W[10], data, 40 ); - GET_ULONG_BE( W[11], data, 44 ); - GET_ULONG_BE( W[12], data, 48 ); - GET_ULONG_BE( W[13], data, 52 ); - GET_ULONG_BE( W[14], data, 56 ); - GET_ULONG_BE( W[15], data, 60 ); + GET_UINT32_BE( W[ 0], data, 0 ); + GET_UINT32_BE( W[ 1], data, 4 ); + GET_UINT32_BE( W[ 2], data, 8 ); + GET_UINT32_BE( W[ 3], data, 12 ); + GET_UINT32_BE( W[ 4], data, 16 ); + GET_UINT32_BE( W[ 5], data, 20 ); + GET_UINT32_BE( W[ 6], data, 24 ); + GET_UINT32_BE( W[ 7], data, 28 ); + GET_UINT32_BE( W[ 8], data, 32 ); + GET_UINT32_BE( W[ 9], data, 36 ); + GET_UINT32_BE( W[10], data, 40 ); + GET_UINT32_BE( W[11], data, 44 ); + GET_UINT32_BE( W[12], data, 48 ); + GET_UINT32_BE( W[13], data, 52 ); + GET_UINT32_BE( W[14], data, 56 ); + GET_UINT32_BE( W[15], data, 60 ); #define SHR(x,n) ((x & 0xFFFFFFFF) >> n) #define ROTR(x,n) (SHR(x,n) | (x << (32 - n))) @@ -234,7 +234,7 @@ static void sha2_process( sha2_context *ctx, const unsigned char data[64] ) void sha2_update( sha2_context *ctx, const unsigned char *input, size_t ilen ) { size_t fill; - unsigned long left; + uint32_t left; if( ilen <= 0 ) return; @@ -242,10 +242,10 @@ void sha2_update( sha2_context *ctx, const unsigned char *input, size_t ilen ) left = ctx->total[0] & 0x3F; fill = 64 - left; - ctx->total[0] += (unsigned long) ilen; + ctx->total[0] += (uint32_t) ilen; ctx->total[0] &= 0xFFFFFFFF; - if( ctx->total[0] < (unsigned long) ilen ) + if( ctx->total[0] < (uint32_t) ilen ) ctx->total[1]++; if( left && ilen >= fill ) @@ -285,16 +285,16 @@ static const unsigned char sha2_padding[64] = */ void sha2_finish( sha2_context *ctx, unsigned char output[32] ) { - unsigned long last, padn; - unsigned long high, low; + uint32_t last, padn; + uint32_t high, low; unsigned char msglen[8]; high = ( ctx->total[0] >> 29 ) | ( ctx->total[1] << 3 ); low = ( ctx->total[0] << 3 ); - PUT_ULONG_BE( high, msglen, 0 ); - PUT_ULONG_BE( low, msglen, 4 ); + PUT_UINT32_BE( high, msglen, 0 ); + PUT_UINT32_BE( low, msglen, 4 ); last = ctx->total[0] & 0x3F; padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last ); @@ -302,16 +302,16 @@ void sha2_finish( sha2_context *ctx, unsigned char output[32] ) sha2_update( ctx, (unsigned char *) sha2_padding, padn ); sha2_update( ctx, msglen, 8 ); - PUT_ULONG_BE( ctx->state[0], output, 0 ); - PUT_ULONG_BE( ctx->state[1], output, 4 ); - PUT_ULONG_BE( ctx->state[2], output, 8 ); - PUT_ULONG_BE( ctx->state[3], output, 12 ); - PUT_ULONG_BE( ctx->state[4], output, 16 ); - PUT_ULONG_BE( ctx->state[5], output, 20 ); - PUT_ULONG_BE( ctx->state[6], output, 24 ); + PUT_UINT32_BE( ctx->state[0], output, 0 ); + PUT_UINT32_BE( ctx->state[1], output, 4 ); + PUT_UINT32_BE( ctx->state[2], output, 8 ); + PUT_UINT32_BE( ctx->state[3], output, 12 ); + PUT_UINT32_BE( ctx->state[4], output, 16 ); + PUT_UINT32_BE( ctx->state[5], output, 20 ); + PUT_UINT32_BE( ctx->state[6], output, 24 ); if( ctx->is224 == 0 ) - PUT_ULONG_BE( ctx->state[7], output, 28 ); + PUT_UINT32_BE( ctx->state[7], output, 28 ); } /* diff --git a/library/sha4.c b/library/sha4.c index cf54d114c..6361a542c 100644 --- a/library/sha4.c +++ b/library/sha4.c @@ -44,14 +44,14 @@ #ifndef GET_UINT64_BE #define GET_UINT64_BE(n,b,i) \ { \ - (n) = ( (unsigned long64) (b)[(i) ] << 56 ) \ - | ( (unsigned long64) (b)[(i) + 1] << 48 ) \ - | ( (unsigned long64) (b)[(i) + 2] << 40 ) \ - | ( (unsigned long64) (b)[(i) + 3] << 32 ) \ - | ( (unsigned long64) (b)[(i) + 4] << 24 ) \ - | ( (unsigned long64) (b)[(i) + 5] << 16 ) \ - | ( (unsigned long64) (b)[(i) + 6] << 8 ) \ - | ( (unsigned long64) (b)[(i) + 7] ); \ + (n) = ( (uint64_t) (b)[(i) ] << 56 ) \ + | ( (uint64_t) (b)[(i) + 1] << 48 ) \ + | ( (uint64_t) (b)[(i) + 2] << 40 ) \ + | ( (uint64_t) (b)[(i) + 3] << 32 ) \ + | ( (uint64_t) (b)[(i) + 4] << 24 ) \ + | ( (uint64_t) (b)[(i) + 5] << 16 ) \ + | ( (uint64_t) (b)[(i) + 6] << 8 ) \ + | ( (uint64_t) (b)[(i) + 7] ); \ } #endif @@ -72,7 +72,7 @@ /* * Round constants */ -static const unsigned long64 K[80] = +static const uint64_t K[80] = { UL64(0x428A2F98D728AE22), UL64(0x7137449123EF65CD), UL64(0xB5C0FBCFEC4D3B2F), UL64(0xE9B5DBA58189DBBC), @@ -155,8 +155,8 @@ void sha4_starts( sha4_context *ctx, int is384 ) static void sha4_process( sha4_context *ctx, const unsigned char data[128] ) { int i; - unsigned long64 temp1, temp2, W[80]; - unsigned long64 A, B, C, D, E, F, G, H; + uint64_t temp1, temp2, W[80]; + uint64_t A, B, C, D, E, F, G, H; #define SHR(x,n) (x >> n) #define ROTR(x,n) (SHR(x,n) | (x << (64 - n))) @@ -235,9 +235,9 @@ void sha4_update( sha4_context *ctx, const unsigned char *input, size_t ilen ) left = (unsigned int) (ctx->total[0] & 0x7F); fill = 128 - left; - ctx->total[0] += (unsigned long64) ilen; + ctx->total[0] += (uint64_t) ilen; - if( ctx->total[0] < (unsigned long64) ilen ) + if( ctx->total[0] < (uint64_t) ilen ) ctx->total[1]++; if( left && ilen >= fill ) @@ -282,7 +282,7 @@ static const unsigned char sha4_padding[128] = void sha4_finish( sha4_context *ctx, unsigned char output[64] ) { size_t last, padn; - unsigned long64 high, low; + uint64_t high, low; unsigned char msglen[16]; high = ( ctx->total[0] >> 61 ) diff --git a/library/x509parse.c b/library/x509parse.c index a9fd0e89d..85638ad8c 100644 --- a/library/x509parse.c +++ b/library/x509parse.c @@ -2704,7 +2704,7 @@ int x509parse_cert_info( char *buf, size_t size, const char *prefix, SAFE_SNPRINTF(); ret = snprintf( p, n, "\n%sRSA key size : %d bits\n", prefix, - (int) crt->rsa.N.n * (int) sizeof( unsigned long ) * 8 ); + (int) crt->rsa.N.n * (int) sizeof( t_uint ) * 8 ); SAFE_SNPRINTF(); return( (int) ( size - n ) ); diff --git a/library/xtea.c b/library/xtea.c index bc473e527..b4825dde9 100644 --- a/library/xtea.c +++ b/library/xtea.c @@ -32,18 +32,18 @@ /* * 32-bit integer manipulation macros (big endian) */ -#ifndef GET_ULONG_BE -#define GET_ULONG_BE(n,b,i) \ +#ifndef GET_UINT32_BE +#define GET_UINT32_BE(n,b,i) \ { \ - (n) = ( (unsigned long) (b)[(i) ] << 24 ) \ - | ( (unsigned long) (b)[(i) + 1] << 16 ) \ - | ( (unsigned long) (b)[(i) + 2] << 8 ) \ - | ( (unsigned long) (b)[(i) + 3] ); \ + (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ + | ( (uint32_t) (b)[(i) + 1] << 16 ) \ + | ( (uint32_t) (b)[(i) + 2] << 8 ) \ + | ( (uint32_t) (b)[(i) + 3] ); \ } #endif -#ifndef PUT_ULONG_BE -#define PUT_ULONG_BE(n,b,i) \ +#ifndef PUT_UINT32_BE +#define PUT_UINT32_BE(n,b,i) \ { \ (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ @@ -63,7 +63,7 @@ void xtea_setup( xtea_context *ctx, unsigned char key[16] ) for( i = 0; i < 4; i++ ) { - GET_ULONG_BE( ctx->k[i], key, i << 2 ); + GET_UINT32_BE( ctx->k[i], key, i << 2 ); } } @@ -77,8 +77,8 @@ int xtea_crypt_ecb( xtea_context *ctx, int mode, unsigned char input[8], k = ctx->k; - GET_ULONG_BE( v0, input, 0 ); - GET_ULONG_BE( v1, input, 4 ); + GET_UINT32_BE( v0, input, 0 ); + GET_UINT32_BE( v1, input, 4 ); if( mode == XTEA_ENCRYPT ) { @@ -103,8 +103,8 @@ int xtea_crypt_ecb( xtea_context *ctx, int mode, unsigned char input[8], } } - PUT_ULONG_BE( v0, output, 0 ); - PUT_ULONG_BE( v1, output, 4 ); + PUT_UINT32_BE( v0, output, 0 ); + PUT_UINT32_BE( v1, output, 4 ); return( 0 ); } diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function index 486bff82b..2f1b26cf8 100644 --- a/tests/suites/helpers.function +++ b/tests/suites/helpers.function @@ -10,18 +10,18 @@ typedef UINT32 uint32_t; /* * 32-bit integer manipulation macros (big endian) */ -#ifndef GET_ULONG_BE -#define GET_ULONG_BE(n,b,i) \ +#ifndef GET_UINT32_BE +#define GET_UINT32_BE(n,b,i) \ { \ - (n) = ( (unsigned long) (b)[(i) ] << 24 ) \ - | ( (unsigned long) (b)[(i) + 1] << 16 ) \ - | ( (unsigned long) (b)[(i) + 2] << 8 ) \ - | ( (unsigned long) (b)[(i) + 3] ); \ + (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ + | ( (uint32_t) (b)[(i) + 1] << 16 ) \ + | ( (uint32_t) (b)[(i) + 2] << 8 ) \ + | ( (uint32_t) (b)[(i) + 3] ); \ } #endif -#ifndef PUT_ULONG_BE -#define PUT_ULONG_BE(n,b,i) \ +#ifndef PUT_UINT32_BE +#define PUT_UINT32_BE(n,b,i) \ { \ (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ @@ -211,7 +211,7 @@ static int rnd_pseudo_rand( void *rng_state, unsigned char *output, size_t len ) info->v1 += (((info->v0 << 4) ^ (info->v0 >> 5)) + info->v0) ^ (sum + k[(sum>>11) & 3]); } - PUT_ULONG_BE( info->v0, result, 0 ); + PUT_UINT32_BE( info->v0, result, 0 ); memcpy( output, result, use_len ); len -= use_len; }