1/* BEGIN_HEADER */ 2#include "mbedtls/camellia.h" 3/* END_HEADER */ 4 5/* BEGIN_DEPENDENCIES 6 * depends_on:MBEDTLS_CAMELLIA_C 7 * END_DEPENDENCIES 8 */ 9 10/* BEGIN_CASE depends_on:NOT_DEFINED */ 11void camellia_invalid_param( ) 12{ 13 mbedtls_camellia_context ctx; 14 unsigned char buf[16] = { 0 }; 15 const int invalid_mode = 42; 16 size_t off; 17 ((void) off); 18 19 TEST_EQUAL( MBEDTLS_ERR_CAMELLIA_BAD_INPUT_DATA, 20 mbedtls_camellia_crypt_ecb( &ctx, 21 invalid_mode, 22 buf, buf ) ); 23 24#if defined(MBEDTLS_CIPHER_MODE_CBC) 25 TEST_EQUAL( MBEDTLS_ERR_CAMELLIA_BAD_INPUT_DATA, 26 mbedtls_camellia_crypt_cbc( &ctx, 27 invalid_mode, 28 sizeof( buf ), 29 buf, buf, buf ) ); 30#endif /* MBEDTLS_CIPHER_MODE_CBC */ 31 32#if defined(MBEDTLS_CIPHER_MODE_CFB) 33 TEST_EQUAL( MBEDTLS_ERR_CAMELLIA_BAD_INPUT_DATA, 34 mbedtls_camellia_crypt_cfb128( &ctx, 35 invalid_mode, 36 sizeof( buf ), 37 &off, buf, 38 buf, buf ) ); 39#endif /* MBEDTLS_CIPHER_MODE_CFB */ 40 41exit: 42 return; 43} 44/* END_CASE */ 45 46/* BEGIN_CASE */ 47void camellia_encrypt_ecb( data_t * key_str, data_t * src_str, 48 data_t * dst, int setkey_result ) 49{ 50 unsigned char output[100]; 51 mbedtls_camellia_context ctx; 52 53 memset(output, 0x00, 100); 54 mbedtls_camellia_init( &ctx ); 55 56 57 TEST_ASSERT( mbedtls_camellia_setkey_enc( &ctx, key_str->x, key_str->len * 8 ) == setkey_result ); 58 if( setkey_result == 0 ) 59 { 60 TEST_ASSERT( mbedtls_camellia_crypt_ecb( &ctx, MBEDTLS_CAMELLIA_ENCRYPT, src_str->x, output ) == 0 ); 61 62 TEST_ASSERT( mbedtls_test_hexcmp( output, dst->x, 16, dst->len ) == 0 ); 63 } 64 65exit: 66 mbedtls_camellia_free( &ctx ); 67} 68/* END_CASE */ 69 70/* BEGIN_CASE */ 71void camellia_decrypt_ecb( data_t * key_str, data_t * src_str, 72 data_t * dst, int setkey_result ) 73{ 74 unsigned char output[100]; 75 mbedtls_camellia_context ctx; 76 77 memset(output, 0x00, 100); 78 mbedtls_camellia_init( &ctx ); 79 80 81 TEST_ASSERT( mbedtls_camellia_setkey_dec( &ctx, key_str->x, key_str->len * 8 ) == setkey_result ); 82 if( setkey_result == 0 ) 83 { 84 TEST_ASSERT( mbedtls_camellia_crypt_ecb( &ctx, MBEDTLS_CAMELLIA_DECRYPT, src_str->x, output ) == 0 ); 85 86 TEST_ASSERT( mbedtls_test_hexcmp( output, dst->x, 16, dst->len ) == 0 ); 87 } 88 89exit: 90 mbedtls_camellia_free( &ctx ); 91} 92/* END_CASE */ 93 94/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ 95void camellia_encrypt_cbc( data_t * key_str, data_t * iv_str, 96 data_t * src_str, data_t * dst, int cbc_result ) 97{ 98 unsigned char output[100]; 99 mbedtls_camellia_context ctx; 100 101 memset(output, 0x00, 100); 102 mbedtls_camellia_init( &ctx ); 103 104 105 mbedtls_camellia_setkey_enc( &ctx, key_str->x, key_str->len * 8 ); 106 TEST_ASSERT( mbedtls_camellia_crypt_cbc( &ctx, MBEDTLS_CAMELLIA_ENCRYPT, src_str->len, iv_str->x, src_str->x, output) == cbc_result ); 107 if( cbc_result == 0 ) 108 { 109 110 TEST_ASSERT( mbedtls_test_hexcmp( output, dst->x, src_str->len, 111 dst->len ) == 0 ); 112 } 113 114exit: 115 mbedtls_camellia_free( &ctx ); 116} 117/* END_CASE */ 118 119/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ 120void camellia_decrypt_cbc( data_t * key_str, data_t * iv_str, 121 data_t * src_str, data_t * dst, 122 int cbc_result ) 123{ 124 unsigned char output[100]; 125 mbedtls_camellia_context ctx; 126 127 memset(output, 0x00, 100); 128 mbedtls_camellia_init( &ctx ); 129 130 131 mbedtls_camellia_setkey_dec( &ctx, key_str->x, key_str->len * 8 ); 132 TEST_ASSERT( mbedtls_camellia_crypt_cbc( &ctx, MBEDTLS_CAMELLIA_DECRYPT, src_str->len, iv_str->x, src_str->x, output ) == cbc_result ); 133 if( cbc_result == 0 ) 134 { 135 136 TEST_ASSERT( mbedtls_test_hexcmp( output, dst->x, src_str->len, 137 dst->len ) == 0 ); 138 } 139 140exit: 141 mbedtls_camellia_free( &ctx ); 142} 143/* END_CASE */ 144 145/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ 146void camellia_encrypt_cfb128( data_t * key_str, data_t * iv_str, 147 data_t * src_str, data_t * dst ) 148{ 149 unsigned char output[100]; 150 mbedtls_camellia_context ctx; 151 size_t iv_offset = 0; 152 153 memset(output, 0x00, 100); 154 mbedtls_camellia_init( &ctx ); 155 156 157 mbedtls_camellia_setkey_enc( &ctx, key_str->x, key_str->len * 8 ); 158 TEST_ASSERT( mbedtls_camellia_crypt_cfb128( &ctx, MBEDTLS_CAMELLIA_ENCRYPT, 16, &iv_offset, iv_str->x, src_str->x, output ) == 0 ); 159 160 TEST_ASSERT( mbedtls_test_hexcmp( output, dst->x, 16, dst->len ) == 0 ); 161 162exit: 163 mbedtls_camellia_free( &ctx ); 164} 165/* END_CASE */ 166 167/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ 168void camellia_decrypt_cfb128( data_t * key_str, data_t * iv_str, 169 data_t * src_str, 170 data_t * dst ) 171{ 172 unsigned char output[100]; 173 mbedtls_camellia_context ctx; 174 size_t iv_offset = 0; 175 176 memset(output, 0x00, 100); 177 mbedtls_camellia_init( &ctx ); 178 179 180 mbedtls_camellia_setkey_enc( &ctx, key_str->x, key_str->len * 8 ); 181 TEST_ASSERT( mbedtls_camellia_crypt_cfb128( &ctx, MBEDTLS_CAMELLIA_DECRYPT, 16, &iv_offset, iv_str->x, src_str->x, output ) == 0 ); 182 183 TEST_ASSERT( mbedtls_test_hexcmp( output, dst->x, 16, dst->len ) == 0 ); 184 185exit: 186 mbedtls_camellia_free( &ctx ); 187} 188/* END_CASE */ 189 190/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ 191void camellia_selftest( ) 192{ 193 TEST_ASSERT( mbedtls_camellia_self_test( 1 ) == 0 ); 194} 195/* END_CASE */ 196