1/* BEGIN_HEADER */ 2#include "mbedtls/base64.h" 3#include "mbedtls/pem.h" 4#include "mbedtls/des.h" 5#include "mbedtls/aes.h" 6/* END_HEADER */ 7 8/* BEGIN_CASE depends_on:MBEDTLS_PEM_WRITE_C */ 9void mbedtls_pem_write_buffer( char *start, char *end, char *buf_str, char *result_str ) 10{ 11 unsigned char buf[5000]; 12 unsigned char *check_buf = NULL; 13 int ret; 14 size_t buf_len, olen = 0, olen2 = 0; 15 16 memset( buf, 0, sizeof( buf ) ); 17 18 buf_len = unhexify( buf, buf_str ); 19 20 ret = mbedtls_pem_write_buffer( start, end, buf, buf_len, NULL, 0, &olen ); 21 TEST_ASSERT( ret == MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL ); 22 23 check_buf = (unsigned char *) mbedtls_calloc( 1, olen ); 24 TEST_ASSERT( check_buf != NULL ); 25 26 memset( check_buf, 0, olen ); 27 ret = mbedtls_pem_write_buffer( start, end, buf, buf_len, check_buf, olen, &olen2 ); 28 29 TEST_ASSERT( olen2 <= olen ); 30 TEST_ASSERT( olen > strlen( (char*) result_str ) ); 31 TEST_ASSERT( ret == 0 ); 32 TEST_ASSERT( strncmp( (char *) check_buf, (char *) result_str, olen ) == 0 ); 33 34exit: 35 mbedtls_free( check_buf ); 36} 37/* END_CASE */ 38 39/* BEGIN_CASE depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_AES_C:MBEDTLS_DES_C:MBEDTLS_MD5_C:MBEDTLS_CIPHER_MODE_CBC */ 40void mbedtls_pem_read_buffer( char *header, char *footer, char *data, 41 char *pwd, int res ) 42{ 43 mbedtls_pem_context ctx; 44 int ret; 45 size_t use_len = 0; 46 size_t pwd_len = strlen( pwd ); 47 48 mbedtls_pem_init( &ctx ); 49 50 ret = mbedtls_pem_read_buffer( &ctx, header, footer, (unsigned char *)data, 51 (unsigned char *)pwd, pwd_len, &use_len ); 52 TEST_ASSERT( ret == res ); 53 54exit: 55 mbedtls_pem_free( &ctx ); 56} 57/* END_CASE */ 58