test_suite_base64.function 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /* BEGIN_HEADER */
  2. #include "mbedtls/base64.h"
  3. /* END_HEADER */
  4. /* BEGIN_DEPENDENCIES
  5. * depends_on:MBEDTLS_BASE64_C
  6. * END_DEPENDENCIES
  7. */
  8. /* BEGIN_CASE */
  9. void mbedtls_base64_encode( char *src_string, char *dst_string, int dst_buf_size,
  10. int result )
  11. {
  12. unsigned char src_str[1000];
  13. unsigned char dst_str[1000];
  14. size_t len;
  15. memset(src_str, 0x00, 1000);
  16. memset(dst_str, 0x00, 1000);
  17. strncpy( (char *) src_str, src_string, sizeof(src_str) - 1 );
  18. TEST_ASSERT( mbedtls_base64_encode( dst_str, dst_buf_size, &len, src_str, strlen( (char *) src_str ) ) == result );
  19. if( result == 0 )
  20. {
  21. TEST_ASSERT( strcmp( (char *) dst_str, dst_string ) == 0 );
  22. }
  23. }
  24. /* END_CASE */
  25. /* BEGIN_CASE */
  26. void mbedtls_base64_decode( char *src_string, char *dst_string, int result )
  27. {
  28. unsigned char src_str[1000];
  29. unsigned char dst_str[1000];
  30. size_t len;
  31. int res;
  32. memset(src_str, 0x00, 1000);
  33. memset(dst_str, 0x00, 1000);
  34. strncpy( (char *) src_str, src_string, sizeof(src_str) - 1 );
  35. res = mbedtls_base64_decode( dst_str, sizeof( dst_str ), &len, src_str, strlen( (char *) src_str ) );
  36. TEST_ASSERT( res == result );
  37. if( result == 0 )
  38. {
  39. TEST_ASSERT( strcmp( (char *) dst_str, dst_string ) == 0 );
  40. }
  41. }
  42. /* END_CASE */
  43. /* BEGIN_CASE */
  44. void base64_encode_hex( char *src_hex, char *dst, int dst_buf_size,
  45. int result )
  46. {
  47. unsigned char *src = NULL, *res = NULL;
  48. size_t len, src_len;
  49. src = unhexify_alloc( src_hex, &src_len );
  50. res = zero_alloc( dst_buf_size );
  51. TEST_ASSERT( mbedtls_base64_encode( res, dst_buf_size, &len, src, src_len ) == result );
  52. if( result == 0 )
  53. {
  54. TEST_ASSERT( len == strlen( dst ) );
  55. TEST_ASSERT( memcmp( dst, res, len ) == 0 );
  56. }
  57. exit:
  58. mbedtls_free( src );
  59. mbedtls_free( res );
  60. }
  61. /* END_CASE */
  62. /* BEGIN_CASE */
  63. void base64_decode_hex( char *src, char *dst_hex, int dst_buf_size,
  64. int result )
  65. {
  66. unsigned char *dst = NULL, *res = NULL;
  67. size_t len, dst_len;
  68. dst = unhexify_alloc( dst_hex, &dst_len );
  69. res = zero_alloc( dst_buf_size );
  70. TEST_ASSERT( mbedtls_base64_decode( res, dst_buf_size, &len, (unsigned char *) src,
  71. strlen( src ) ) == result );
  72. if( result == 0 )
  73. {
  74. TEST_ASSERT( len == dst_len );
  75. TEST_ASSERT( memcmp( dst, res, len ) == 0 );
  76. }
  77. exit:
  78. mbedtls_free( dst );
  79. mbedtls_free( res );
  80. }
  81. /* END_CASE */
  82. /* BEGIN_CASE */
  83. void base64_decode_hex_src( char *src_hex, char *dst_ref, int result )
  84. {
  85. unsigned char dst[1000] = { 0 };
  86. unsigned char *src;
  87. size_t src_len, len;
  88. src = unhexify_alloc( src_hex, &src_len );
  89. TEST_ASSERT( mbedtls_base64_decode( dst, sizeof( dst ), &len, src, src_len ) == result );
  90. if( result == 0 )
  91. {
  92. TEST_ASSERT( len == strlen( dst_ref ) );
  93. TEST_ASSERT( memcmp( dst, dst_ref, len ) == 0 );
  94. }
  95. exit:
  96. mbedtls_free( src );
  97. }
  98. /* END_CASE */
  99. /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */
  100. void base64_selftest()
  101. {
  102. TEST_ASSERT( mbedtls_base64_self_test( 1 ) == 0 );
  103. }
  104. /* END_CASE */