blob: bd09930454e118be38b1c32b29ac8a989ee09e53 [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/rsa.h"
3#include "mbedtls/md.h"
Paul Bakker33b43f12013-08-20 11:48:36 +02004/* END_HEADER */
Paul Bakker9dcc3222011-03-08 14:16:06 +00005
Paul Bakker33b43f12013-08-20 11:48:36 +02006/* BEGIN_DEPENDENCIES
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02007 * depends_on:MBEDTLS_PKCS1_V21:MBEDTLS_RSA_C:MBEDTLS_SHA1_C
Paul Bakker33b43f12013-08-20 11:48:36 +02008 * END_DEPENDENCIES
9 */
Paul Bakker5690efc2011-05-26 13:16:06 +000010
Paul Bakker33b43f12013-08-20 11:48:36 +020011/* BEGIN_CASE */
12void pkcs1_rsaes_oaep_encrypt( int mod, int radix_N, char *input_N, int radix_E,
13 char *input_E, int hash,
14 char *message_hex_string, char *seed,
15 char *result_hex_str, int result )
Paul Bakker9dcc3222011-03-08 14:16:06 +000016{
17 unsigned char message_str[1000];
18 unsigned char output[1000];
19 unsigned char output_str[1000];
20 unsigned char rnd_buf[1000];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020021 mbedtls_rsa_context ctx;
Paul Bakkerf4a3f302011-04-24 15:53:29 +000022 size_t msg_len;
Paul Bakker4cce2bb2011-03-13 16:56:35 +000023 rnd_buf_info info;
Hanno Becker6326a6d2017-08-23 06:38:22 +010024 mbedtls_mpi N, E;
Paul Bakker9dcc3222011-03-08 14:16:06 +000025
Paul Bakker33b43f12013-08-20 11:48:36 +020026 info.length = unhexify( rnd_buf, seed );
Paul Bakker9dcc3222011-03-08 14:16:06 +000027 info.buf = rnd_buf;
Paul Bakker9dcc3222011-03-08 14:16:06 +000028
Hanno Becker6326a6d2017-08-23 06:38:22 +010029 mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E );
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020030 mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V21, hash );
Paul Bakker9dcc3222011-03-08 14:16:06 +000031 memset( message_str, 0x00, 1000 );
32 memset( output, 0x00, 1000 );
33 memset( output_str, 0x00, 1000 );
34
Hanno Becker6326a6d2017-08-23 06:38:22 +010035 TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 );
36 TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 );
37 TEST_ASSERT( mbedtls_rsa_import( &ctx, &N, NULL, NULL, NULL, &E ) == 0 );
38 TEST_ASSERT( mbedtls_rsa_get_len( &ctx ) == (size_t) ( ( mod + 7 ) / 8 ) );
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020039 TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 );
Paul Bakker9dcc3222011-03-08 14:16:06 +000040
Paul Bakker33b43f12013-08-20 11:48:36 +020041 msg_len = unhexify( message_str, message_hex_string );
Paul Bakker9dcc3222011-03-08 14:16:06 +000042
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020043 TEST_ASSERT( mbedtls_rsa_pkcs1_encrypt( &ctx, &rnd_buffer_rand, &info, MBEDTLS_RSA_PUBLIC, msg_len, message_str, output ) == result );
Paul Bakker33b43f12013-08-20 11:48:36 +020044 if( result == 0 )
Paul Bakker9dcc3222011-03-08 14:16:06 +000045 {
46 hexify( output_str, output, ctx.len );
47
Paul Bakker33b43f12013-08-20 11:48:36 +020048 TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 );
Paul Bakker9dcc3222011-03-08 14:16:06 +000049 }
Paul Bakker58ef6ec2013-01-03 11:33:48 +010050
Paul Bakkerbd51b262014-07-10 15:26:12 +020051exit:
Hanno Becker6326a6d2017-08-23 06:38:22 +010052 mbedtls_mpi_free( &N ); mbedtls_mpi_free( &E );
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020053 mbedtls_rsa_free( &ctx );
Paul Bakker9dcc3222011-03-08 14:16:06 +000054}
Paul Bakker33b43f12013-08-20 11:48:36 +020055/* END_CASE */
Paul Bakker9dcc3222011-03-08 14:16:06 +000056
Paul Bakker33b43f12013-08-20 11:48:36 +020057/* BEGIN_CASE */
58void pkcs1_rsaes_oaep_decrypt( int mod, int radix_P, char *input_P,
59 int radix_Q, char *input_Q, int radix_N,
60 char *input_N, int radix_E, char *input_E,
61 int hash, char *result_hex_str, char *seed,
62 char *message_hex_string, int result )
Paul Bakker9dcc3222011-03-08 14:16:06 +000063{
64 unsigned char message_str[1000];
65 unsigned char output[1000];
66 unsigned char output_str[1000];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020067 mbedtls_rsa_context ctx;
Paul Bakkerf4a3f302011-04-24 15:53:29 +000068 size_t output_len;
Paul Bakker548957d2013-08-30 10:30:02 +020069 rnd_pseudo_info rnd_info;
Hanno Becker6326a6d2017-08-23 06:38:22 +010070 mbedtls_mpi N, P, Q, E;
Paul Bakkerdbd443d2013-08-16 13:38:47 +020071 ((void) seed);
Paul Bakker9dcc3222011-03-08 14:16:06 +000072
Hanno Becker6326a6d2017-08-23 06:38:22 +010073 mbedtls_mpi_init( &N ); mbedtls_mpi_init( &P );
74 mbedtls_mpi_init( &Q ); mbedtls_mpi_init( &E );
75
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020076 mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V21, hash );
Paul Bakker9dcc3222011-03-08 14:16:06 +000077
78 memset( message_str, 0x00, 1000 );
79 memset( output, 0x00, 1000 );
80 memset( output_str, 0x00, 1000 );
Paul Bakker548957d2013-08-30 10:30:02 +020081 memset( &rnd_info, 0, sizeof( rnd_pseudo_info ) );
Paul Bakker9dcc3222011-03-08 14:16:06 +000082
Hanno Becker6326a6d2017-08-23 06:38:22 +010083 TEST_ASSERT( mbedtls_mpi_read_string( &P, radix_P, input_P ) == 0 );
84 TEST_ASSERT( mbedtls_mpi_read_string( &Q, radix_Q, input_Q ) == 0 );
85 TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 );
86 TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 );
Paul Bakker548957d2013-08-30 10:30:02 +020087
Hanno Becker6326a6d2017-08-23 06:38:22 +010088 TEST_ASSERT( mbedtls_rsa_import( &ctx, &N, &P, &Q, NULL, &E ) == 0 );
89 TEST_ASSERT( mbedtls_rsa_get_len( &ctx ) == (size_t) ( ( mod + 7 ) / 8 ) );
90 TEST_ASSERT( mbedtls_rsa_complete( &ctx, NULL, NULL ) == 0 );
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020091 TEST_ASSERT( mbedtls_rsa_check_privkey( &ctx ) == 0 );
Paul Bakker9dcc3222011-03-08 14:16:06 +000092
Paul Bakker33b43f12013-08-20 11:48:36 +020093 unhexify( message_str, message_hex_string );
Paul Bakker9dcc3222011-03-08 14:16:06 +000094
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020095 TEST_ASSERT( mbedtls_rsa_pkcs1_decrypt( &ctx, &rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PRIVATE, &output_len, message_str, output, 1000 ) == result );
Paul Bakker33b43f12013-08-20 11:48:36 +020096 if( result == 0 )
Paul Bakker9dcc3222011-03-08 14:16:06 +000097 {
98 hexify( output_str, output, ctx.len );
99
Paul Bakker33b43f12013-08-20 11:48:36 +0200100 TEST_ASSERT( strncasecmp( (char *) output_str, result_hex_str, strlen( result_hex_str ) ) == 0 );
Paul Bakker9dcc3222011-03-08 14:16:06 +0000101 }
Paul Bakker6c591fa2011-05-05 11:49:20 +0000102
Paul Bakkerbd51b262014-07-10 15:26:12 +0200103exit:
Hanno Becker6326a6d2017-08-23 06:38:22 +0100104 mbedtls_mpi_free( &N ); mbedtls_mpi_free( &P );
105 mbedtls_mpi_free( &Q ); mbedtls_mpi_free( &E );
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200106 mbedtls_rsa_free( &ctx );
Paul Bakker9dcc3222011-03-08 14:16:06 +0000107}
Paul Bakker33b43f12013-08-20 11:48:36 +0200108/* END_CASE */
Paul Bakker9dcc3222011-03-08 14:16:06 +0000109
Paul Bakker33b43f12013-08-20 11:48:36 +0200110/* BEGIN_CASE */
111void pkcs1_rsassa_pss_sign( int mod, int radix_P, char *input_P, int radix_Q,
112 char *input_Q, int radix_N, char *input_N,
113 int radix_E, char *input_E, int digest, int hash,
114 char *message_hex_string, char *salt,
115 char *result_hex_str, int result )
Paul Bakker9dcc3222011-03-08 14:16:06 +0000116{
117 unsigned char message_str[1000];
118 unsigned char hash_result[1000];
119 unsigned char output[1000];
120 unsigned char output_str[1000];
121 unsigned char rnd_buf[1000];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200122 mbedtls_rsa_context ctx;
Paul Bakkerf4a3f302011-04-24 15:53:29 +0000123 size_t msg_len;
Paul Bakker4cce2bb2011-03-13 16:56:35 +0000124 rnd_buf_info info;
Hanno Becker6326a6d2017-08-23 06:38:22 +0100125 mbedtls_mpi N, P, Q, E;
Paul Bakker9dcc3222011-03-08 14:16:06 +0000126
Paul Bakker33b43f12013-08-20 11:48:36 +0200127 info.length = unhexify( rnd_buf, salt );
Paul Bakker9dcc3222011-03-08 14:16:06 +0000128 info.buf = rnd_buf;
Paul Bakker9dcc3222011-03-08 14:16:06 +0000129
Hanno Becker6326a6d2017-08-23 06:38:22 +0100130 mbedtls_mpi_init( &N ); mbedtls_mpi_init( &P );
131 mbedtls_mpi_init( &Q ); mbedtls_mpi_init( &E );
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200132 mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V21, hash );
Paul Bakker9dcc3222011-03-08 14:16:06 +0000133
134 memset( message_str, 0x00, 1000 );
135 memset( hash_result, 0x00, 1000 );
136 memset( output, 0x00, 1000 );
137 memset( output_str, 0x00, 1000 );
138
Hanno Becker6326a6d2017-08-23 06:38:22 +0100139 TEST_ASSERT( mbedtls_mpi_read_string( &P, radix_P, input_P ) == 0 );
140 TEST_ASSERT( mbedtls_mpi_read_string( &Q, radix_Q, input_Q ) == 0 );
141 TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 );
142 TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 );
Paul Bakker9dcc3222011-03-08 14:16:06 +0000143
Hanno Becker6326a6d2017-08-23 06:38:22 +0100144 TEST_ASSERT( mbedtls_rsa_import( &ctx, &N, &P, &Q, NULL, &E ) == 0 );
145 TEST_ASSERT( mbedtls_rsa_get_len( &ctx ) == (size_t) ( ( mod + 7 ) / 8 ) );
146 TEST_ASSERT( mbedtls_rsa_complete( &ctx, NULL, NULL ) == 0 );
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200147 TEST_ASSERT( mbedtls_rsa_check_privkey( &ctx ) == 0 );
Paul Bakker9dcc3222011-03-08 14:16:06 +0000148
Paul Bakker33b43f12013-08-20 11:48:36 +0200149 msg_len = unhexify( message_str, message_hex_string );
Paul Bakker9dcc3222011-03-08 14:16:06 +0000150
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200151 if( mbedtls_md_info_from_type( digest ) != NULL )
Hanno Becker6326a6d2017-08-23 06:38:22 +0100152 TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str,
153 msg_len, hash_result ) == 0 );
Paul Bakker9dcc3222011-03-08 14:16:06 +0000154
Hanno Becker6326a6d2017-08-23 06:38:22 +0100155 TEST_ASSERT( mbedtls_rsa_pkcs1_sign( &ctx, &rnd_buffer_rand, &info, MBEDTLS_RSA_PRIVATE,
156 digest, 0, hash_result, output ) == result );
Paul Bakker33b43f12013-08-20 11:48:36 +0200157 if( result == 0 )
Paul Bakker9dcc3222011-03-08 14:16:06 +0000158 {
159 hexify( output_str, output, ctx.len);
160
Paul Bakker33b43f12013-08-20 11:48:36 +0200161 TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 );
Paul Bakker9dcc3222011-03-08 14:16:06 +0000162 }
Paul Bakker6c591fa2011-05-05 11:49:20 +0000163
Paul Bakkerbd51b262014-07-10 15:26:12 +0200164exit:
Hanno Becker6326a6d2017-08-23 06:38:22 +0100165 mbedtls_mpi_free( &N ); mbedtls_mpi_free( &P );
166 mbedtls_mpi_free( &Q ); mbedtls_mpi_free( &E );
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200167 mbedtls_rsa_free( &ctx );
Paul Bakker9dcc3222011-03-08 14:16:06 +0000168}
Paul Bakker33b43f12013-08-20 11:48:36 +0200169/* END_CASE */
Paul Bakker9dcc3222011-03-08 14:16:06 +0000170
Paul Bakker33b43f12013-08-20 11:48:36 +0200171/* BEGIN_CASE */
172void pkcs1_rsassa_pss_verify( int mod, int radix_N, char *input_N, int radix_E,
173 char *input_E, int digest, int hash,
174 char *message_hex_string, char *salt,
175 char *result_hex_str, int result )
Paul Bakker9dcc3222011-03-08 14:16:06 +0000176{
177 unsigned char message_str[1000];
178 unsigned char hash_result[1000];
179 unsigned char result_str[1000];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200180 mbedtls_rsa_context ctx;
Paul Bakkerf4a3f302011-04-24 15:53:29 +0000181 size_t msg_len;
Hanno Becker6326a6d2017-08-23 06:38:22 +0100182 mbedtls_mpi N, E;
Paul Bakkerdbd443d2013-08-16 13:38:47 +0200183 ((void) salt);
Paul Bakker9dcc3222011-03-08 14:16:06 +0000184
Hanno Becker6326a6d2017-08-23 06:38:22 +0100185 mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E );
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200186 mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V21, hash );
Paul Bakker9dcc3222011-03-08 14:16:06 +0000187 memset( message_str, 0x00, 1000 );
188 memset( hash_result, 0x00, 1000 );
189 memset( result_str, 0x00, 1000 );
190
Hanno Becker6326a6d2017-08-23 06:38:22 +0100191 TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 );
192 TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 );
Paul Bakker9dcc3222011-03-08 14:16:06 +0000193
Hanno Becker6326a6d2017-08-23 06:38:22 +0100194 TEST_ASSERT( mbedtls_rsa_import( &ctx, &N, NULL, NULL, NULL, &E ) == 0 );
195 TEST_ASSERT( mbedtls_rsa_get_len( &ctx ) == (size_t) ( ( mod + 7 ) / 8 ) );
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200196 TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 );
Paul Bakker9dcc3222011-03-08 14:16:06 +0000197
Paul Bakker33b43f12013-08-20 11:48:36 +0200198 msg_len = unhexify( message_str, message_hex_string );
199 unhexify( result_str, result_hex_str );
Paul Bakker9dcc3222011-03-08 14:16:06 +0000200
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200201 if( mbedtls_md_info_from_type( digest ) != NULL )
Hanno Becker6326a6d2017-08-23 06:38:22 +0100202 TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str,
203 msg_len, hash_result ) == 0 );
Paul Bakker9dcc3222011-03-08 14:16:06 +0000204
Hanno Becker6326a6d2017-08-23 06:38:22 +0100205 TEST_ASSERT( mbedtls_rsa_pkcs1_verify( &ctx, NULL, NULL, MBEDTLS_RSA_PUBLIC,
206 digest, 0, hash_result, result_str ) == result );
Paul Bakker58ef6ec2013-01-03 11:33:48 +0100207
Paul Bakkerbd51b262014-07-10 15:26:12 +0200208exit:
Hanno Becker6326a6d2017-08-23 06:38:22 +0100209 mbedtls_mpi_free( &N ); mbedtls_mpi_free( &E );
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200210 mbedtls_rsa_free( &ctx );
Paul Bakker9dcc3222011-03-08 14:16:06 +0000211}
Paul Bakker33b43f12013-08-20 11:48:36 +0200212/* END_CASE */
Manuel Pégourié-Gonnard5ec628a2014-06-03 11:44:06 +0200213
214/* BEGIN_CASE */
215void pkcs1_rsassa_pss_verify_ext( int mod,
216 int radix_N, char *input_N,
217 int radix_E, char *input_E,
218 int msg_digest_id, int ctx_hash,
219 int mgf_hash, int salt_len,
220 char *message_hex_string,
221 char *result_hex_str,
222 int result_simple,
223 int result_full )
224{
225 unsigned char message_str[1000];
226 unsigned char hash_result[1000];
227 unsigned char result_str[1000];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200228 mbedtls_rsa_context ctx;
Manuel Pégourié-Gonnard5ec628a2014-06-03 11:44:06 +0200229 size_t msg_len, hash_len;
Hanno Becker6326a6d2017-08-23 06:38:22 +0100230 mbedtls_mpi N, E;
Manuel Pégourié-Gonnard5ec628a2014-06-03 11:44:06 +0200231
Hanno Becker6326a6d2017-08-23 06:38:22 +0100232 mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E );
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200233 mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V21, ctx_hash );
Manuel Pégourié-Gonnard5ec628a2014-06-03 11:44:06 +0200234 memset( message_str, 0x00, 1000 );
235 memset( hash_result, 0x00, 1000 );
236 memset( result_str, 0x00, 1000 );
237
Hanno Becker6326a6d2017-08-23 06:38:22 +0100238 TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 );
239 TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 );
Manuel Pégourié-Gonnard5ec628a2014-06-03 11:44:06 +0200240
Hanno Becker6326a6d2017-08-23 06:38:22 +0100241 TEST_ASSERT( mbedtls_rsa_import( &ctx, &N, NULL, NULL, NULL, &E ) == 0 );
242 TEST_ASSERT( mbedtls_rsa_get_len( &ctx ) == (size_t) ( ( mod + 7 ) / 8 ) );
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200243 TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 );
Manuel Pégourié-Gonnard5ec628a2014-06-03 11:44:06 +0200244
245 msg_len = unhexify( message_str, message_hex_string );
246 unhexify( result_str, result_hex_str );
247
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200248 if( msg_digest_id != MBEDTLS_MD_NONE )
Manuel Pégourié-Gonnard5ec628a2014-06-03 11:44:06 +0200249 {
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200250 TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( msg_digest_id ),
Manuel Pégourié-Gonnard5ec628a2014-06-03 11:44:06 +0200251 message_str, msg_len, hash_result ) == 0 );
252 hash_len = 0;
253 }
254 else
255 {
256 memcpy( hash_result, message_str, msg_len );
257 hash_len = msg_len;
258 }
259
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200260 TEST_ASSERT( mbedtls_rsa_pkcs1_verify( &ctx, NULL, NULL, MBEDTLS_RSA_PUBLIC,
Manuel Pégourié-Gonnard5ec628a2014-06-03 11:44:06 +0200261 msg_digest_id, hash_len, hash_result,
262 result_str ) == result_simple );
263
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200264 TEST_ASSERT( mbedtls_rsa_rsassa_pss_verify_ext( &ctx, NULL, NULL, MBEDTLS_RSA_PUBLIC,
Manuel Pégourié-Gonnard5ec628a2014-06-03 11:44:06 +0200265 msg_digest_id, hash_len, hash_result,
266 mgf_hash, salt_len,
267 result_str ) == result_full );
268
Paul Bakkerbd51b262014-07-10 15:26:12 +0200269exit:
Hanno Becker6326a6d2017-08-23 06:38:22 +0100270 mbedtls_mpi_free( &N ); mbedtls_mpi_free( &E );
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200271 mbedtls_rsa_free( &ctx );
Manuel Pégourié-Gonnard5ec628a2014-06-03 11:44:06 +0200272}
273/* END_CASE */