blob: d7e888f4009edb65fb264150927a2d66d389919a [file] [log] [blame]
Paul Bakker33b43f12013-08-20 11:48:36 +02001/* BEGIN_HEADER */
Manuel Pégourié-Gonnard7f809972015-03-09 17:05:11 +00002#include "mbedtls/base64.h"
Paul Bakker33b43f12013-08-20 11:48:36 +02003/* END_HEADER */
Paul Bakker367dae42009-06-28 21:50:27 +00004
Paul Bakker33b43f12013-08-20 11:48:36 +02005/* BEGIN_DEPENDENCIES
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006 * depends_on:MBEDTLS_BASE64_C
Paul Bakker33b43f12013-08-20 11:48:36 +02007 * END_DEPENDENCIES
8 */
Paul Bakker5690efc2011-05-26 13:16:06 +00009
Paul Bakker33b43f12013-08-20 11:48:36 +020010/* BEGIN_CASE */
Azim Khanf1aaec92017-05-30 14:23:15 +010011void mbedtls_base64_encode( char * src_string, char * dst_string,
12 int dst_buf_size, int result )
Paul Bakker367dae42009-06-28 21:50:27 +000013{
14 unsigned char src_str[1000];
15 unsigned char dst_str[1000];
Paul Elliott69b904b2021-02-24 15:32:42 +000016 size_t len, src_len;
Paul Bakker367dae42009-06-28 21:50:27 +000017
18 memset(src_str, 0x00, 1000);
19 memset(dst_str, 0x00, 1000);
20
Paul Bakkerdd0aae92014-04-17 16:06:37 +020021 strncpy( (char *) src_str, src_string, sizeof(src_str) - 1 );
Paul Elliott69b904b2021-02-24 15:32:42 +000022 src_len = strlen( (char *) src_str );
23
24 TEST_CF_SECRET( src_str, sizeof( src_str ) );
25 TEST_ASSERT( mbedtls_base64_encode( dst_str, dst_buf_size, &len, src_str, src_len) == result );
26 TEST_CF_PUBLIC( src_str, sizeof( src_str ) );
27
Paul Bakker33b43f12013-08-20 11:48:36 +020028 if( result == 0 )
Paul Bakker5946fd92009-07-11 15:29:30 +000029 {
Paul Bakker33b43f12013-08-20 11:48:36 +020030 TEST_ASSERT( strcmp( (char *) dst_str, dst_string ) == 0 );
Paul Bakker5946fd92009-07-11 15:29:30 +000031 }
Paul Bakker367dae42009-06-28 21:50:27 +000032}
Paul Bakker33b43f12013-08-20 11:48:36 +020033/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +000034
Paul Bakker33b43f12013-08-20 11:48:36 +020035/* BEGIN_CASE */
Azim Khanf1aaec92017-05-30 14:23:15 +010036void mbedtls_base64_decode( char * src_string, char * dst_string, int result )
Paul Bakker367dae42009-06-28 21:50:27 +000037{
38 unsigned char src_str[1000];
39 unsigned char dst_str[1000];
Manuel Pégourié-Gonnardba561362015-06-02 16:30:35 +010040 size_t len;
Manuel Pégourié-Gonnard64938c62014-10-15 21:45:39 +020041 int res;
Paul Bakker367dae42009-06-28 21:50:27 +000042
43 memset(src_str, 0x00, 1000);
44 memset(dst_str, 0x00, 1000);
Paul Bakkerdd0aae92014-04-17 16:06:37 +020045
46 strncpy( (char *) src_str, src_string, sizeof(src_str) - 1 );
Manuel Pégourié-Gonnardba561362015-06-02 16:30:35 +010047 res = mbedtls_base64_decode( dst_str, sizeof( dst_str ), &len, src_str, strlen( (char *) src_str ) );
Paul Bakker94b916c2014-04-17 16:07:20 +020048 TEST_ASSERT( res == result );
Paul Bakker33b43f12013-08-20 11:48:36 +020049 if( result == 0 )
Paul Bakker5946fd92009-07-11 15:29:30 +000050 {
Paul Bakker33b43f12013-08-20 11:48:36 +020051 TEST_ASSERT( strcmp( (char *) dst_str, dst_string ) == 0 );
Paul Bakker5946fd92009-07-11 15:29:30 +000052 }
Paul Bakker367dae42009-06-28 21:50:27 +000053}
Paul Bakker33b43f12013-08-20 11:48:36 +020054/* END_CASE */
Paul Bakker3d360822009-07-05 11:29:38 +000055
Paul Bakkerd5983182014-07-04 13:50:31 +020056/* BEGIN_CASE */
Azim Khan5fcca462018-06-29 11:05:32 +010057void base64_encode_hex( data_t * src, char * dst, int dst_buf_size,
Paul Bakkerd5983182014-07-04 13:50:31 +020058 int result )
59{
Azim Khand30ca132017-06-09 04:32:58 +010060 unsigned char *res = NULL;
61 size_t len;
Paul Bakkerd5983182014-07-04 13:50:31 +020062
Paul Bakkerd5983182014-07-04 13:50:31 +020063 res = zero_alloc( dst_buf_size );
64
Paul Elliott69b904b2021-02-24 15:32:42 +000065 TEST_CF_SECRET( src->x, src->len );
Azim Khand30ca132017-06-09 04:32:58 +010066 TEST_ASSERT( mbedtls_base64_encode( res, dst_buf_size, &len, src->x, src->len ) == result );
Paul Elliott69b904b2021-02-24 15:32:42 +000067 TEST_CF_PUBLIC( src->x, src->len );
68
Paul Bakkerd5983182014-07-04 13:50:31 +020069 if( result == 0 )
70 {
71 TEST_ASSERT( len == strlen( dst ) );
72 TEST_ASSERT( memcmp( dst, res, len ) == 0 );
73 }
Paul Bakker6697b6c2014-07-04 18:35:50 +020074
Paul Bakkerbd51b262014-07-10 15:26:12 +020075exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020076 mbedtls_free( res );
Paul Bakkerd5983182014-07-04 13:50:31 +020077}
78/* END_CASE */
79
80/* BEGIN_CASE */
Azim Khan5fcca462018-06-29 11:05:32 +010081void base64_decode_hex( char * src, data_t * dst, int dst_buf_size,
Paul Bakkerd5983182014-07-04 13:50:31 +020082 int result )
83{
Azim Khand30ca132017-06-09 04:32:58 +010084 unsigned char *res = NULL;
85 size_t len;
Paul Bakkerd5983182014-07-04 13:50:31 +020086
Paul Bakkerd5983182014-07-04 13:50:31 +020087 res = zero_alloc( dst_buf_size );
88
Manuel Pégourié-Gonnardba561362015-06-02 16:30:35 +010089 TEST_ASSERT( mbedtls_base64_decode( res, dst_buf_size, &len, (unsigned char *) src,
Paul Bakkerd5983182014-07-04 13:50:31 +020090 strlen( src ) ) == result );
91 if( result == 0 )
92 {
Azim Khand30ca132017-06-09 04:32:58 +010093 TEST_ASSERT( len == dst->len );
94 TEST_ASSERT( memcmp( dst->x, res, len ) == 0 );
Paul Bakkerd5983182014-07-04 13:50:31 +020095 }
Paul Bakker6697b6c2014-07-04 18:35:50 +020096
Paul Bakkerbd51b262014-07-10 15:26:12 +020097exit:
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020098 mbedtls_free( res );
Paul Bakkerd5983182014-07-04 13:50:31 +020099}
100/* END_CASE */
101
Manuel Pégourié-Gonnard64938c62014-10-15 21:45:39 +0200102/* BEGIN_CASE */
Azim Khan5fcca462018-06-29 11:05:32 +0100103void base64_decode_hex_src( data_t * src, char * dst_ref, int result )
Manuel Pégourié-Gonnard64938c62014-10-15 21:45:39 +0200104{
105 unsigned char dst[1000] = { 0 };
Azim Khand30ca132017-06-09 04:32:58 +0100106 size_t len;
Manuel Pégourié-Gonnard64938c62014-10-15 21:45:39 +0200107
Azim Khand30ca132017-06-09 04:32:58 +0100108 TEST_ASSERT( mbedtls_base64_decode( dst, sizeof( dst ), &len, src->x, src->len ) == result );
Manuel Pégourié-Gonnard64938c62014-10-15 21:45:39 +0200109 if( result == 0 )
110 {
111 TEST_ASSERT( len == strlen( dst_ref ) );
112 TEST_ASSERT( memcmp( dst, dst_ref, len ) == 0 );
113 }
114
115exit:
Azim Khand30ca132017-06-09 04:32:58 +0100116 ;;
Manuel Pégourié-Gonnard64938c62014-10-15 21:45:39 +0200117}
118/* END_CASE */
119
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200120/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */
Azim Khanf1aaec92017-05-30 14:23:15 +0100121void base64_selftest( )
Paul Bakker3d360822009-07-05 11:29:38 +0000122{
Andres AG93012e82016-09-09 09:10:28 +0100123 TEST_ASSERT( mbedtls_base64_self_test( 1 ) == 0 );
Paul Bakker3d360822009-07-05 11:29:38 +0000124}
Paul Bakker33b43f12013-08-20 11:48:36 +0200125/* END_CASE */