Paul Bakker | 33b43f1 | 2013-08-20 11:48:36 +0200 | [diff] [blame] | 1 | /* BEGIN_HEADER */ |
Paul Bakker | 367dae4 | 2009-06-28 21:50:27 +0000 | [diff] [blame] | 2 | #include <polarssl/base64.h> |
Paul Bakker | 33b43f1 | 2013-08-20 11:48:36 +0200 | [diff] [blame] | 3 | /* END_HEADER */ |
Paul Bakker | 367dae4 | 2009-06-28 21:50:27 +0000 | [diff] [blame] | 4 | |
Paul Bakker | 33b43f1 | 2013-08-20 11:48:36 +0200 | [diff] [blame] | 5 | /* BEGIN_DEPENDENCIES |
| 6 | * depends_on:POLARSSL_BASE64_C |
| 7 | * END_DEPENDENCIES |
| 8 | */ |
Paul Bakker | 5690efc | 2011-05-26 13:16:06 +0000 | [diff] [blame] | 9 | |
Paul Bakker | 33b43f1 | 2013-08-20 11:48:36 +0200 | [diff] [blame] | 10 | /* BEGIN_CASE */ |
| 11 | void base64_encode( char *src_string, char *dst_string, int dst_buf_size, |
| 12 | int result ) |
Paul Bakker | 367dae4 | 2009-06-28 21:50:27 +0000 | [diff] [blame] | 13 | { |
| 14 | unsigned char src_str[1000]; |
| 15 | unsigned char dst_str[1000]; |
Paul Bakker | 33b43f1 | 2013-08-20 11:48:36 +0200 | [diff] [blame] | 16 | size_t len = dst_buf_size; |
Paul Bakker | 367dae4 | 2009-06-28 21:50:27 +0000 | [diff] [blame] | 17 | |
| 18 | memset(src_str, 0x00, 1000); |
| 19 | memset(dst_str, 0x00, 1000); |
| 20 | |
Paul Bakker | dd0aae9 | 2014-04-17 16:06:37 +0200 | [diff] [blame] | 21 | strncpy( (char *) src_str, src_string, sizeof(src_str) - 1 ); |
Paul Bakker | 33b43f1 | 2013-08-20 11:48:36 +0200 | [diff] [blame] | 22 | TEST_ASSERT( base64_encode( dst_str, &len, src_str, strlen( (char *) src_str ) ) == result ); |
| 23 | if( result == 0 ) |
Paul Bakker | 5946fd9 | 2009-07-11 15:29:30 +0000 | [diff] [blame] | 24 | { |
Paul Bakker | 33b43f1 | 2013-08-20 11:48:36 +0200 | [diff] [blame] | 25 | TEST_ASSERT( strcmp( (char *) dst_str, dst_string ) == 0 ); |
Paul Bakker | 5946fd9 | 2009-07-11 15:29:30 +0000 | [diff] [blame] | 26 | } |
Paul Bakker | 367dae4 | 2009-06-28 21:50:27 +0000 | [diff] [blame] | 27 | } |
Paul Bakker | 33b43f1 | 2013-08-20 11:48:36 +0200 | [diff] [blame] | 28 | /* END_CASE */ |
Paul Bakker | 367dae4 | 2009-06-28 21:50:27 +0000 | [diff] [blame] | 29 | |
Paul Bakker | 33b43f1 | 2013-08-20 11:48:36 +0200 | [diff] [blame] | 30 | /* BEGIN_CASE */ |
| 31 | void base64_decode( char *src_string, char *dst_string, int result ) |
Paul Bakker | 367dae4 | 2009-06-28 21:50:27 +0000 | [diff] [blame] | 32 | { |
| 33 | unsigned char src_str[1000]; |
| 34 | unsigned char dst_str[1000]; |
Paul Bakker | f4a3f30 | 2011-04-24 15:53:29 +0000 | [diff] [blame] | 35 | size_t len = 1000; |
Paul Bakker | 367dae4 | 2009-06-28 21:50:27 +0000 | [diff] [blame] | 36 | int res; |
| 37 | |
| 38 | memset(src_str, 0x00, 1000); |
| 39 | memset(dst_str, 0x00, 1000); |
Paul Bakker | dd0aae9 | 2014-04-17 16:06:37 +0200 | [diff] [blame] | 40 | |
| 41 | strncpy( (char *) src_str, src_string, sizeof(src_str) - 1 ); |
Paul Bakker | 94b916c | 2014-04-17 16:07:20 +0200 | [diff] [blame] | 42 | res = base64_decode( dst_str, &len, src_str, strlen( (char *) src_str ) ); |
| 43 | TEST_ASSERT( res == result ); |
Paul Bakker | 33b43f1 | 2013-08-20 11:48:36 +0200 | [diff] [blame] | 44 | if( result == 0 ) |
Paul Bakker | 5946fd9 | 2009-07-11 15:29:30 +0000 | [diff] [blame] | 45 | { |
Paul Bakker | 33b43f1 | 2013-08-20 11:48:36 +0200 | [diff] [blame] | 46 | TEST_ASSERT( strcmp( (char *) dst_str, dst_string ) == 0 ); |
Paul Bakker | 5946fd9 | 2009-07-11 15:29:30 +0000 | [diff] [blame] | 47 | } |
Paul Bakker | 367dae4 | 2009-06-28 21:50:27 +0000 | [diff] [blame] | 48 | } |
Paul Bakker | 33b43f1 | 2013-08-20 11:48:36 +0200 | [diff] [blame] | 49 | /* END_CASE */ |
Paul Bakker | 3d36082 | 2009-07-05 11:29:38 +0000 | [diff] [blame] | 50 | |
Paul Bakker | d598318 | 2014-07-04 13:50:31 +0200 | [diff] [blame] | 51 | /* BEGIN_CASE */ |
| 52 | void base64_encode_hex( char *src_hex, char *dst, int dst_buf_size, |
| 53 | int result ) |
| 54 | { |
| 55 | unsigned char *src, *res; |
| 56 | size_t len = dst_buf_size, src_len; |
| 57 | |
| 58 | src = unhexify_alloc( src_hex, &src_len ); |
| 59 | res = zero_alloc( dst_buf_size ); |
| 60 | |
| 61 | TEST_ASSERT( base64_encode( res, &len, src, src_len ) == result ); |
| 62 | if( result == 0 ) |
| 63 | { |
| 64 | TEST_ASSERT( len == strlen( dst ) ); |
| 65 | TEST_ASSERT( memcmp( dst, res, len ) == 0 ); |
| 66 | } |
Paul Bakker | 6697b6c | 2014-07-04 18:35:50 +0200 | [diff] [blame] | 67 | |
| 68 | polarssl_free( src ); |
| 69 | polarssl_free( res ); |
Paul Bakker | d598318 | 2014-07-04 13:50:31 +0200 | [diff] [blame] | 70 | } |
| 71 | /* END_CASE */ |
| 72 | |
| 73 | /* BEGIN_CASE */ |
| 74 | void base64_decode_hex( char *src, char *dst_hex, int dst_buf_size, |
| 75 | int result ) |
| 76 | { |
| 77 | unsigned char *dst, *res; |
| 78 | size_t len = dst_buf_size, dst_len; |
| 79 | |
| 80 | dst = unhexify_alloc( dst_hex, &dst_len ); |
| 81 | res = zero_alloc( dst_buf_size ); |
| 82 | |
| 83 | TEST_ASSERT( base64_decode( res, &len, (unsigned char *) src, |
| 84 | strlen( src ) ) == result ); |
| 85 | if( result == 0 ) |
| 86 | { |
| 87 | TEST_ASSERT( len == dst_len ); |
| 88 | TEST_ASSERT( memcmp( dst, res, len ) == 0 ); |
| 89 | } |
Paul Bakker | 6697b6c | 2014-07-04 18:35:50 +0200 | [diff] [blame] | 90 | |
| 91 | polarssl_free( dst ); |
| 92 | polarssl_free( res ); |
Paul Bakker | d598318 | 2014-07-04 13:50:31 +0200 | [diff] [blame] | 93 | } |
| 94 | /* END_CASE */ |
| 95 | |
Manuel Pégourié-Gonnard | 2014016 | 2013-10-10 12:48:03 +0200 | [diff] [blame] | 96 | /* BEGIN_CASE depends_on:POLARSSL_SELF_TEST */ |
Paul Bakker | 33b43f1 | 2013-08-20 11:48:36 +0200 | [diff] [blame] | 97 | void base64_selftest() |
Paul Bakker | 3d36082 | 2009-07-05 11:29:38 +0000 | [diff] [blame] | 98 | { |
| 99 | TEST_ASSERT( base64_self_test( 0 ) == 0 ); |
| 100 | } |
Paul Bakker | 33b43f1 | 2013-08-20 11:48:36 +0200 | [diff] [blame] | 101 | /* END_CASE */ |