test_suite_pem.function 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /* BEGIN_HEADER */
  2. #include "mbedtls/base64.h"
  3. #include "mbedtls/pem.h"
  4. /* END_HEADER */
  5. /* BEGIN_DEPENDENCIES
  6. * depends_on:MBEDTLS_PEM_WRITE_C
  7. * END_DEPENDENCIES
  8. */
  9. /* BEGIN_CASE */
  10. void mbedtls_pem_write_buffer( char *start, char *end, char *buf_str, char *result_str )
  11. {
  12. unsigned char buf[5000];
  13. unsigned char *check_buf = NULL;
  14. int ret;
  15. size_t buf_len, olen = 0, olen2 = 0;
  16. memset( buf, 0, sizeof( buf ) );
  17. buf_len = unhexify( buf, buf_str );
  18. ret = mbedtls_pem_write_buffer( start, end, buf, buf_len, NULL, 0, &olen );
  19. TEST_ASSERT( ret == MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL );
  20. check_buf = (unsigned char *) mbedtls_calloc( 1, olen );
  21. TEST_ASSERT( check_buf != NULL );
  22. memset( check_buf, 0, olen );
  23. ret = mbedtls_pem_write_buffer( start, end, buf, buf_len, check_buf, olen, &olen2 );
  24. TEST_ASSERT( olen2 <= olen );
  25. TEST_ASSERT( olen > strlen( (char*) result_str ) );
  26. TEST_ASSERT( ret == 0 );
  27. TEST_ASSERT( strncmp( (char *) check_buf, (char *) result_str, olen ) == 0 );
  28. exit:
  29. mbedtls_free( check_buf );
  30. }
  31. /* END_CASE */