Create function-level MBETLS_DES_xxx_ALT

This commit is contained in:
Manuel Pégourié-Gonnard 2015-05-12 15:02:45 +02:00
parent e45dba47b5
commit 70a5010783
3 changed files with 27 additions and 8 deletions

View File

@ -251,6 +251,9 @@
//#define MBEDTLS_SHA1_PROCESS_ALT //#define MBEDTLS_SHA1_PROCESS_ALT
//#define MBEDTLS_SHA256_PROCESS_ALT //#define MBEDTLS_SHA256_PROCESS_ALT
//#define MBEDTLS_SHA512_PROCESS_ALT //#define MBEDTLS_SHA512_PROCESS_ALT
//#define MBEDTLS_DES_SETKEY_ALT
//#define MBEDTLS_DES_CRYPT_ECB_ALT
//#define MBEDTLS_DES3_CRYPT_ECB_ALT
/** /**
* \def MBEDTLS_AES_ROM_TABLES * \def MBEDTLS_AES_ROM_TABLES

View File

@ -271,6 +271,16 @@ int mbedtls_des3_crypt_cbc( mbedtls_des3_context *ctx,
unsigned char *output ); unsigned char *output );
#endif /* MBEDTLS_CIPHER_MODE_CBC */ #endif /* MBEDTLS_CIPHER_MODE_CBC */
/**
* \brief Internal function for key expansion.
* (Only exposed to allow overriding it,
* see MBEDTLS_DES_SETKEY_ALT)
*
* \param SK Round keys
* \param key Base key
*/
void mbedtls_des_setkey( uint32_t SK[32],
const unsigned char key[MBEDTLS_DES_KEY_SIZE] );
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -421,7 +421,8 @@ int mbedtls_des_key_check_weak( const unsigned char key[MBEDTLS_DES_KEY_SIZE] )
return( 0 ); return( 0 );
} }
static void des_setkey( uint32_t SK[32], const unsigned char key[MBEDTLS_DES_KEY_SIZE] ) #if !defined(MBEDTLS_DES_SETKEY_ALT)
void mbedtls_des_setkey( uint32_t SK[32], const unsigned char key[MBEDTLS_DES_KEY_SIZE] )
{ {
int i; int i;
uint32_t X, Y, T; uint32_t X, Y, T;
@ -489,13 +490,14 @@ static void des_setkey( uint32_t SK[32], const unsigned char key[MBEDTLS_DES_KEY
| ((Y << 2) & 0x00000004) | ((Y >> 21) & 0x00000002); | ((Y << 2) & 0x00000004) | ((Y >> 21) & 0x00000002);
} }
} }
#endif /* !MBEDTLS_DES_SETKEY_ALT */
/* /*
* DES key schedule (56-bit, encryption) * DES key schedule (56-bit, encryption)
*/ */
int mbedtls_des_setkey_enc( mbedtls_des_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE] ) int mbedtls_des_setkey_enc( mbedtls_des_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE] )
{ {
des_setkey( ctx->sk, key ); mbedtls_des_setkey( ctx->sk, key );
return( 0 ); return( 0 );
} }
@ -507,7 +509,7 @@ int mbedtls_des_setkey_dec( mbedtls_des_context *ctx, const unsigned char key[MB
{ {
int i; int i;
des_setkey( ctx->sk, key ); mbedtls_des_setkey( ctx->sk, key );
for( i = 0; i < 16; i += 2 ) for( i = 0; i < 16; i += 2 )
{ {
@ -524,8 +526,8 @@ static void des3_set2key( uint32_t esk[96],
{ {
int i; int i;
des_setkey( esk, key ); mbedtls_des_setkey( esk, key );
des_setkey( dsk + 32, key + 8 ); mbedtls_des_setkey( dsk + 32, key + 8 );
for( i = 0; i < 32; i += 2 ) for( i = 0; i < 32; i += 2 )
{ {
@ -577,9 +579,9 @@ static void des3_set3key( uint32_t esk[96],
{ {
int i; int i;
des_setkey( esk, key ); mbedtls_des_setkey( esk, key );
des_setkey( dsk + 32, key + 8 ); mbedtls_des_setkey( dsk + 32, key + 8 );
des_setkey( esk + 64, key + 16 ); mbedtls_des_setkey( esk + 64, key + 16 );
for( i = 0; i < 32; i += 2 ) for( i = 0; i < 32; i += 2 )
{ {
@ -625,6 +627,7 @@ int mbedtls_des3_set3key_dec( mbedtls_des3_context *ctx,
/* /*
* DES-ECB block encryption/decryption * DES-ECB block encryption/decryption
*/ */
#if !defined(MBEDTLS_DES_CRYPT_ECB_ALT)
int mbedtls_des_crypt_ecb( mbedtls_des_context *ctx, int mbedtls_des_crypt_ecb( mbedtls_des_context *ctx,
const unsigned char input[8], const unsigned char input[8],
unsigned char output[8] ) unsigned char output[8] )
@ -652,6 +655,7 @@ int mbedtls_des_crypt_ecb( mbedtls_des_context *ctx,
return( 0 ); return( 0 );
} }
#endif /* !MBEDTLS_DES_CRYPT_ECB_ALT */
#if defined(MBEDTLS_CIPHER_MODE_CBC) #if defined(MBEDTLS_CIPHER_MODE_CBC)
/* /*
@ -710,6 +714,7 @@ int mbedtls_des_crypt_cbc( mbedtls_des_context *ctx,
/* /*
* 3DES-ECB block encryption/decryption * 3DES-ECB block encryption/decryption
*/ */
#if !defined(MBEDTLS_DES3_CRYPT_ECB_ALT)
int mbedtls_des3_crypt_ecb( mbedtls_des3_context *ctx, int mbedtls_des3_crypt_ecb( mbedtls_des3_context *ctx,
const unsigned char input[8], const unsigned char input[8],
unsigned char output[8] ) unsigned char output[8] )
@ -749,6 +754,7 @@ int mbedtls_des3_crypt_ecb( mbedtls_des3_context *ctx,
return( 0 ); return( 0 );
} }
#endif /* !MBEDTLS_DES3_CRYPT_ECB_ALT */
#if defined(MBEDTLS_CIPHER_MODE_CBC) #if defined(MBEDTLS_CIPHER_MODE_CBC)
/* /*