Merge remote-tracking branch 'upstream-public/pr/2102' into mbedtls-2.7
This commit is contained in:
commit
b85e35d8d2
9 changed files with 48 additions and 23 deletions
|
@ -122,6 +122,10 @@
|
||||||
#error "MBEDTLS_ECP_C defined, but not all prerequisites"
|
#error "MBEDTLS_ECP_C defined, but not all prerequisites"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_PK_PARSE_C) && !defined(MBEDTLS_ASN1_PARSE_C)
|
||||||
|
#error "MBEDTLS_PK_PARSE_C defined, but not all prerequesites"
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(MBEDTLS_ENTROPY_C) && (!defined(MBEDTLS_SHA512_C) && \
|
#if defined(MBEDTLS_ENTROPY_C) && (!defined(MBEDTLS_SHA512_C) && \
|
||||||
!defined(MBEDTLS_SHA256_C))
|
!defined(MBEDTLS_SHA256_C))
|
||||||
#error "MBEDTLS_ENTROPY_C defined, but not all prerequisites"
|
#error "MBEDTLS_ENTROPY_C defined, but not all prerequisites"
|
||||||
|
|
|
@ -46,6 +46,8 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_ASN1_PARSE_C)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief PKCS12 Password Based function (encryption / decryption)
|
* \brief PKCS12 Password Based function (encryption / decryption)
|
||||||
* for pbeWithSHAAnd128BitRC4
|
* for pbeWithSHAAnd128BitRC4
|
||||||
|
@ -87,6 +89,8 @@ int mbedtls_pkcs12_pbe( mbedtls_asn1_buf *pbe_params, int mode,
|
||||||
const unsigned char *input, size_t len,
|
const unsigned char *input, size_t len,
|
||||||
unsigned char *output );
|
unsigned char *output );
|
||||||
|
|
||||||
|
#endif /* MBEDTLS_ASN1_PARSE_C */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief The PKCS#12 derivation function uses a password and a salt
|
* \brief The PKCS#12 derivation function uses a password and a salt
|
||||||
* to produce pseudo-random bits for a particular "purpose".
|
* to produce pseudo-random bits for a particular "purpose".
|
||||||
|
|
|
@ -44,6 +44,8 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_ASN1_PARSE_C)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief PKCS#5 PBES2 function
|
* \brief PKCS#5 PBES2 function
|
||||||
*
|
*
|
||||||
|
@ -62,6 +64,8 @@ int mbedtls_pkcs5_pbes2( const mbedtls_asn1_buf *pbe_params, int mode,
|
||||||
const unsigned char *data, size_t datalen,
|
const unsigned char *data, size_t datalen,
|
||||||
unsigned char *output );
|
unsigned char *output );
|
||||||
|
|
||||||
|
#endif /* MBEDTLS_ASN1_PARSE_C */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief PKCS#5 PBKDF2 using HMAC
|
* \brief PKCS#5 PBKDF2 using HMAC
|
||||||
*
|
*
|
||||||
|
|
|
@ -331,14 +331,36 @@ int mbedtls_asn1_write_octet_string( unsigned char **p, unsigned char *start,
|
||||||
return( (int) len );
|
return( (int) len );
|
||||||
}
|
}
|
||||||
|
|
||||||
mbedtls_asn1_named_data *mbedtls_asn1_store_named_data( mbedtls_asn1_named_data **head,
|
|
||||||
|
/* This is a copy of the ASN.1 parsing function mbedtls_asn1_find_named_data(),
|
||||||
|
* which is replicated to avoid a dependency ASN1_WRITE_C on ASN1_PARSE_C. */
|
||||||
|
static mbedtls_asn1_named_data *asn1_find_named_data(
|
||||||
|
mbedtls_asn1_named_data *list,
|
||||||
|
const char *oid, size_t len )
|
||||||
|
{
|
||||||
|
while( list != NULL )
|
||||||
|
{
|
||||||
|
if( list->oid.len == len &&
|
||||||
|
memcmp( list->oid.p, oid, len ) == 0 )
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
list = list->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
return( list );
|
||||||
|
}
|
||||||
|
|
||||||
|
mbedtls_asn1_named_data *mbedtls_asn1_store_named_data(
|
||||||
|
mbedtls_asn1_named_data **head,
|
||||||
const char *oid, size_t oid_len,
|
const char *oid, size_t oid_len,
|
||||||
const unsigned char *val,
|
const unsigned char *val,
|
||||||
size_t val_len )
|
size_t val_len )
|
||||||
{
|
{
|
||||||
mbedtls_asn1_named_data *cur;
|
mbedtls_asn1_named_data *cur;
|
||||||
|
|
||||||
if( ( cur = mbedtls_asn1_find_named_data( *head, oid, oid_len ) ) == NULL )
|
if( ( cur = asn1_find_named_data( *head, oid, oid_len ) ) == NULL )
|
||||||
{
|
{
|
||||||
// Add new entry if not present yet based on OID
|
// Add new entry if not present yet based on OID
|
||||||
//
|
//
|
||||||
|
|
|
@ -52,6 +52,8 @@ static void mbedtls_zeroize( void *v, size_t n ) {
|
||||||
volatile unsigned char *p = v; while( n-- ) *p++ = 0;
|
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,
|
static int pkcs12_parse_pbe_params( mbedtls_asn1_buf *params,
|
||||||
mbedtls_asn1_buf *salt, int *iterations )
|
mbedtls_asn1_buf *salt, int *iterations )
|
||||||
{
|
{
|
||||||
|
@ -230,6 +232,8 @@ exit:
|
||||||
return( ret );
|
return( ret );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* MBEDTLS_ASN1_PARSE_C */
|
||||||
|
|
||||||
static void pkcs12_fill_buffer( unsigned char *data, size_t data_len,
|
static void pkcs12_fill_buffer( unsigned char *data, size_t data_len,
|
||||||
const unsigned char *filler, size_t fill_len )
|
const unsigned char *filler, size_t fill_len )
|
||||||
{
|
{
|
||||||
|
|
|
@ -54,22 +54,7 @@
|
||||||
#define mbedtls_printf printf
|
#define mbedtls_printf printf
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(MBEDTLS_ASN1_PARSE_C)
|
#if defined(MBEDTLS_ASN1_PARSE_C)
|
||||||
int mbedtls_pkcs5_pbes2( const mbedtls_asn1_buf *pbe_params, int mode,
|
|
||||||
const unsigned char *pwd, size_t pwdlen,
|
|
||||||
const unsigned char *data, size_t datalen,
|
|
||||||
unsigned char *output )
|
|
||||||
{
|
|
||||||
((void) pbe_params);
|
|
||||||
((void) mode);
|
|
||||||
((void) pwd);
|
|
||||||
((void) pwdlen);
|
|
||||||
((void) data);
|
|
||||||
((void) datalen);
|
|
||||||
((void) output);
|
|
||||||
return( MBEDTLS_ERR_PKCS5_FEATURE_UNAVAILABLE );
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
static int pkcs5_parse_pbkdf2_params( const mbedtls_asn1_buf *params,
|
static int pkcs5_parse_pbkdf2_params( const mbedtls_asn1_buf *params,
|
||||||
mbedtls_asn1_buf *salt, int *iterations,
|
mbedtls_asn1_buf *salt, int *iterations,
|
||||||
int *keylen, mbedtls_md_type_t *md_type )
|
int *keylen, mbedtls_md_type_t *md_type )
|
||||||
|
|
|
@ -87,10 +87,12 @@
|
||||||
USAGE_OUT \
|
USAGE_OUT \
|
||||||
"\n"
|
"\n"
|
||||||
|
|
||||||
#if !defined(MBEDTLS_PK_WRITE_C) || !defined(MBEDTLS_FS_IO)
|
#if !defined(MBEDTLS_PK_PARSE_C) || \
|
||||||
|
!defined(MBEDTLS_PK_WRITE_C) || \
|
||||||
|
!defined(MBEDTLS_FS_IO)
|
||||||
int main( void )
|
int main( void )
|
||||||
{
|
{
|
||||||
mbedtls_printf( "MBEDTLS_PK_WRITE_C and/or MBEDTLS_FS_IO not defined.\n" );
|
mbedtls_printf( "MBEDTLS_PK_PARSE_C and/or MBEDTLS_PK_WRITE_C and/or MBEDTLS_FS_IO not defined.\n" );
|
||||||
return( 0 );
|
return( 0 );
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
@ -433,4 +435,4 @@ exit:
|
||||||
|
|
||||||
return( exit_code );
|
return( exit_code );
|
||||||
}
|
}
|
||||||
#endif /* MBEDTLS_PK_WRITE_C && MBEDTLS_FS_IO */
|
#endif /* MBEDTLS_PK_PARSE_C && MBEDTLS_PK_WRITE_C && MBEDTLS_FS_IO */
|
||||||
|
|
|
@ -83,7 +83,7 @@ void mbedtls_asn1_write_ia5_string( char *str, char *hex_asn1,
|
||||||
}
|
}
|
||||||
/* END_CASE */
|
/* END_CASE */
|
||||||
|
|
||||||
/* BEGIN_CASE */
|
/* BEGIN_CASE depends_on:MBEDTLS_ASN1PARSE_C */
|
||||||
void mbedtls_asn1_write_len( int len, char *check_str, int buf_len,
|
void mbedtls_asn1_write_len( int len, char *check_str, int buf_len,
|
||||||
int result )
|
int result )
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
/* END_HEADER */
|
/* END_HEADER */
|
||||||
|
|
||||||
/* BEGIN_DEPENDENCIES
|
/* BEGIN_DEPENDENCIES
|
||||||
* depends_on:MBEDTLS_PK_WRITE_C:MBEDTLS_BIGNUM_C:MBEDTLS_FS_IO
|
* depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:MBEDTLS_BIGNUM_C:MBEDTLS_FS_IO
|
||||||
* END_DEPENDENCIES
|
* END_DEPENDENCIES
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue