forked from xuos/xiuos
Add SHA1, SHA256, AES CBC and etc. tests for MBed-TLS, modified kconfig to enable selection of
whether to compile test code when build for board ok1052-c.
This commit is contained in:
@@ -36,7 +36,6 @@
|
||||
#include "pkcs12.h"
|
||||
#include "asn1.h"
|
||||
#include "cipher.h"
|
||||
#include "platform_util.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
@@ -48,6 +47,11 @@
|
||||
#include "des.h"
|
||||
#endif
|
||||
|
||||
/* Implementation that should never be optimized out by the compiler */
|
||||
static void mbedtls_zeroize( void *v, size_t n ) {
|
||||
volatile unsigned char *p = v; while( n-- ) *p++ = 0;
|
||||
}
|
||||
|
||||
#if defined(MBEDTLS_ASN1_PARSE_C)
|
||||
|
||||
static int pkcs12_parse_pbe_params( mbedtls_asn1_buf *params,
|
||||
@@ -99,8 +103,8 @@ static int pkcs12_pbe_derive_key_iv( mbedtls_asn1_buf *pbe_params, mbedtls_md_ty
|
||||
if( pwdlen > PKCS12_MAX_PWDLEN )
|
||||
return( MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA );
|
||||
|
||||
mbedtls_platform_memset( &salt, 0, sizeof(mbedtls_asn1_buf) );
|
||||
mbedtls_platform_memset( &unipwd, 0, sizeof(unipwd) );
|
||||
memset( &salt, 0, sizeof(mbedtls_asn1_buf) );
|
||||
memset( &unipwd, 0, sizeof(unipwd) );
|
||||
|
||||
if( ( ret = pkcs12_parse_pbe_params( pbe_params, &salt,
|
||||
&iterations ) ) != 0 )
|
||||
@@ -164,7 +168,7 @@ int mbedtls_pkcs12_pbe_sha1_rc4_128( mbedtls_asn1_buf *pbe_params, int mode,
|
||||
goto exit;
|
||||
|
||||
exit:
|
||||
mbedtls_platform_zeroize( key, sizeof( key ) );
|
||||
mbedtls_zeroize( key, sizeof( key ) );
|
||||
mbedtls_arc4_free( &ctx );
|
||||
|
||||
return( ret );
|
||||
@@ -221,8 +225,8 @@ int mbedtls_pkcs12_pbe( mbedtls_asn1_buf *pbe_params, int mode,
|
||||
ret = MBEDTLS_ERR_PKCS12_PASSWORD_MISMATCH;
|
||||
|
||||
exit:
|
||||
mbedtls_platform_zeroize( key, sizeof( key ) );
|
||||
mbedtls_platform_zeroize( iv, sizeof( iv ) );
|
||||
mbedtls_zeroize( key, sizeof( key ) );
|
||||
mbedtls_zeroize( iv, sizeof( iv ) );
|
||||
mbedtls_cipher_free( &cipher_ctx );
|
||||
|
||||
return( ret );
|
||||
@@ -239,7 +243,7 @@ static void pkcs12_fill_buffer( unsigned char *data, size_t data_len,
|
||||
while( data_len > 0 )
|
||||
{
|
||||
use_len = ( data_len > fill_len ) ? fill_len : data_len;
|
||||
mbedtls_platform_memcpy( p, filler, use_len );
|
||||
memcpy( p, filler, use_len );
|
||||
p += use_len;
|
||||
data_len -= use_len;
|
||||
}
|
||||
@@ -261,7 +265,7 @@ int mbedtls_pkcs12_derivation( unsigned char *data, size_t datalen,
|
||||
|
||||
size_t hlen, use_len, v, i;
|
||||
|
||||
mbedtls_md_handle_t md_info;
|
||||
const mbedtls_md_info_t *md_info;
|
||||
mbedtls_md_context_t md_ctx;
|
||||
|
||||
// This version only allows max of 64 bytes of password or salt
|
||||
@@ -269,7 +273,7 @@ int mbedtls_pkcs12_derivation( unsigned char *data, size_t datalen,
|
||||
return( MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA );
|
||||
|
||||
md_info = mbedtls_md_info_from_type( md_type );
|
||||
if( md_info == MBEDTLS_MD_INVALID_HANDLE )
|
||||
if( md_info == NULL )
|
||||
return( MBEDTLS_ERR_PKCS12_FEATURE_UNAVAILABLE );
|
||||
|
||||
mbedtls_md_init( &md_ctx );
|
||||
@@ -283,7 +287,7 @@ int mbedtls_pkcs12_derivation( unsigned char *data, size_t datalen,
|
||||
else
|
||||
v = 128;
|
||||
|
||||
mbedtls_platform_memset( diversifier, (unsigned char) id, v );
|
||||
memset( diversifier, (unsigned char) id, v );
|
||||
|
||||
pkcs12_fill_buffer( salt_block, v, salt, saltlen );
|
||||
pkcs12_fill_buffer( pwd_block, v, pwd, pwdlen );
|
||||
@@ -315,7 +319,7 @@ int mbedtls_pkcs12_derivation( unsigned char *data, size_t datalen,
|
||||
}
|
||||
|
||||
use_len = ( datalen > hlen ) ? hlen : datalen;
|
||||
mbedtls_platform_memcpy( p, hash_output, use_len );
|
||||
memcpy( p, hash_output, use_len );
|
||||
datalen -= use_len;
|
||||
p += use_len;
|
||||
|
||||
@@ -352,10 +356,10 @@ int mbedtls_pkcs12_derivation( unsigned char *data, size_t datalen,
|
||||
ret = 0;
|
||||
|
||||
exit:
|
||||
mbedtls_platform_zeroize( salt_block, sizeof( salt_block ) );
|
||||
mbedtls_platform_zeroize( pwd_block, sizeof( pwd_block ) );
|
||||
mbedtls_platform_zeroize( hash_block, sizeof( hash_block ) );
|
||||
mbedtls_platform_zeroize( hash_output, sizeof( hash_output ) );
|
||||
mbedtls_zeroize( salt_block, sizeof( salt_block ) );
|
||||
mbedtls_zeroize( pwd_block, sizeof( pwd_block ) );
|
||||
mbedtls_zeroize( hash_block, sizeof( hash_block ) );
|
||||
mbedtls_zeroize( hash_output, sizeof( hash_output ) );
|
||||
|
||||
mbedtls_md_free( &md_ctx );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user