test_suite_pkwrite.function 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /* BEGIN_HEADER */
  2. #include "mbedtls/pk.h"
  3. #include "mbedtls/pem.h"
  4. #include "mbedtls/oid.h"
  5. /* END_HEADER */
  6. /* BEGIN_DEPENDENCIES
  7. * depends_on:MBEDTLS_PK_WRITE_C:MBEDTLS_BIGNUM_C:MBEDTLS_FS_IO
  8. * END_DEPENDENCIES
  9. */
  10. /* BEGIN_CASE depends_on:MBEDTLS_PEM_WRITE_C */
  11. void pk_write_pubkey_check( char *key_file )
  12. {
  13. mbedtls_pk_context key;
  14. unsigned char buf[5000];
  15. unsigned char check_buf[5000];
  16. int ret;
  17. FILE *f;
  18. size_t ilen;
  19. memset( buf, 0, sizeof( buf ) );
  20. memset( check_buf, 0, sizeof( check_buf ) );
  21. mbedtls_pk_init( &key );
  22. TEST_ASSERT( mbedtls_pk_parse_public_keyfile( &key, key_file ) == 0 );
  23. ret = mbedtls_pk_write_pubkey_pem( &key, buf, sizeof( buf ));
  24. TEST_ASSERT( ret == 0 );
  25. f = fopen( key_file, "r" );
  26. TEST_ASSERT( f != NULL );
  27. ilen = fread( check_buf, 1, sizeof( check_buf ), f );
  28. fclose( f );
  29. TEST_ASSERT( ilen == strlen( (char *) buf ) );
  30. TEST_ASSERT( memcmp( (char *) buf, (char *) check_buf, ilen ) == 0 );
  31. exit:
  32. mbedtls_pk_free( &key );
  33. }
  34. /* END_CASE */
  35. /* BEGIN_CASE depends_on:MBEDTLS_PEM_WRITE_C */
  36. void pk_write_key_check( char *key_file )
  37. {
  38. mbedtls_pk_context key;
  39. unsigned char buf[5000];
  40. unsigned char check_buf[5000];
  41. int ret;
  42. FILE *f;
  43. size_t ilen;
  44. memset( buf, 0, sizeof( buf ) );
  45. memset( check_buf, 0, sizeof( check_buf ) );
  46. mbedtls_pk_init( &key );
  47. TEST_ASSERT( mbedtls_pk_parse_keyfile( &key, key_file, NULL ) == 0 );
  48. ret = mbedtls_pk_write_key_pem( &key, buf, sizeof( buf ));
  49. TEST_ASSERT( ret == 0 );
  50. f = fopen( key_file, "r" );
  51. TEST_ASSERT( f != NULL );
  52. ilen = fread( check_buf, 1, sizeof( check_buf ), f );
  53. fclose( f );
  54. TEST_ASSERT( ilen == strlen( (char *) buf ) );
  55. TEST_ASSERT( memcmp( (char *) buf, (char *) check_buf, ilen ) == 0 );
  56. exit:
  57. mbedtls_pk_free( &key );
  58. }
  59. /* END_CASE */