1#if !defined(POLARSSL_CONFIG_FILE)
4#include POLARSSL_CONFIG_FILE
7#ifdef POLARSSL_BIGNUM_C
16int verify_none(
void *data,
x509_crt *crt,
int certificate_depth,
int *flags )
20 ((void) certificate_depth);
26int verify_all(
void *data,
x509_crt *crt,
int certificate_depth,
int *flags )
30 ((void) certificate_depth);
39#if defined(POLARSSL_MEMORY_BUFFER_ALLOC_C)
43#if defined(POLARSSL_PLATFORM_C)
46#define polarssl_malloc malloc
47#define polarssl_free free
52typedef UINT32 uint32_t;
65#define GET_UINT32_BE(n,b,i) \
67 (n) = ( (uint32_t) (b)[(i) ] << 24 ) \
68 | ( (uint32_t) (b)[(i) + 1] << 16 ) \
69 | ( (uint32_t) (b)[(i) + 2] << 8 ) \
70 | ( (uint32_t) (b)[(i) + 3] ); \
75#define PUT_UINT32_BE(n,b,i) \
77 (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \
78 (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \
79 (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \
80 (b)[(i) + 3] = (unsigned char) ( (n) ); \
84static int unhexify(
unsigned char *obuf,
const char *ibuf)
87 int len = strlen(ibuf) / 2;
88 assert(!(strlen(ibuf) %1));
93 if( c >=
'0' && c <=
'9' )
95 else if( c >=
'a' && c <=
'f' )
97 else if( c >=
'A' && c <=
'F' )
103 if( c2 >=
'0' && c2 <=
'9' )
105 else if( c2 >=
'a' && c2 <=
'f' )
107 else if( c2 >=
'A' && c2 <=
'F' )
112 *obuf++ = ( c << 4 ) | c2;
118static void hexify(
unsigned char *obuf,
const unsigned char *ibuf,
int len)
130 *obuf++ =
'a' + h - 10;
135 *obuf++ =
'a' + l - 10;
152 size_t actual_len = len != 0 ? len : 1;
157 memset( p, 0x00, actual_len );
176 *olen = strlen(ibuf) / 2;
182 assert( obuf != NULL );
198static int rnd_std_rand(
void *rng_state,
unsigned char *output,
size_t len )
200#if !defined(__OpenBSD__)
203 if( rng_state != NULL )
206 for( i = 0; i < len; ++i )
209 if( rng_state != NULL )
212 arc4random_buf( output, len );
223static int rnd_zero_rand(
void *rng_state,
unsigned char *output,
size_t len )
225 if( rng_state != NULL )
228 memset( output, 0, len );
255 if( rng_state == NULL )
264 memcpy( output, info->
buf, use_len );
265 info->
buf += use_len;
269 if( len - use_len > 0 )
270 return(
rnd_std_rand( NULL, output + use_len, len - use_len ) );
299 uint32_t i, *k, sum, delta=0x9E3779B9;
300 unsigned char result[4], *out = output;
302 if( rng_state == NULL )
309 size_t use_len = ( len > 4 ) ? 4 : len;
312 for( i = 0; i < 32; i++ )
314 info->
v0 += (((info->
v1 << 4) ^ (info->
v1 >> 5)) + info->
v1) ^ (sum + k[sum & 3]);
316 info->
v1 += (((info->
v0 << 4) ^ (info->
v0 >> 5)) + info->
v0) ^ (sum + k[(sum>>11) & 3]);
320 memcpy( out, result, use_len );
332#if defined(POLARSSL_PLATFORM_C)
335#define polarssl_printf printf
336#define polarssl_malloc malloc
337#define polarssl_free free
342#ifdef POLARSSL_BIGNUM_C
344#define TEST_SUITE_ACTIVE
346static int test_assert(
int correct,
const char *test )
353 printf(
"FAILED\n" );
354 printf(
" %s\n", test );
359#define TEST_ASSERT( TEST ) \
360 do { test_assert( (TEST) ? 1 : 0, #TEST ); \
361 if( test_errors) goto exit; \
366 if( (*str)[0] !=
'"' ||
367 (*str)[strlen( *str ) - 1] !=
'"' )
369 printf(
"Expected string (with \"\") for parameter and got: %s\n", *str );
374 (*str)[strlen( *str ) - 1] =
'\0';
386 for( i = 0; i < strlen( str ); i++ )
388 if( i == 0 && str[i] ==
'-' )
394 if( ( ( minus && i == 2 ) || ( !minus && i == 1 ) ) &&
395 str[i - 1] ==
'0' && str[i] ==
'x' )
401 if( ! ( ( str[i] >=
'0' && str[i] <=
'9' ) ||
402 ( hex && ( ( str[i] >=
'a' && str[i] <=
'f' ) ||
403 ( str[i] >=
'A' && str[i] <=
'F' ) ) ) ) )
413 *value = strtol( str, NULL, 16 );
415 *value = strtol( str, NULL, 10 );
420#ifdef POLARSSL_X509_CRL_PARSE_C
421 if( strcmp( str,
" 1" ) == 0 )
427#ifdef POLARSSL_X509_CSR_PARSE_C
428 if( strcmp( str,
" 1" ) == 0 )
434#ifdef POLARSSL_X509_CRT_PARSE_C
435 if( strcmp( str,
" 1" ) == 0 )
441#ifdef POLARSSL_X509_CRT_PARSE_C
442 if( strcmp( str,
"POLARSSL_ERR_PK_INVALID_PUBKEY + POLARSSL_ERR_ASN1_LENGTH_MISMATCH" ) == 0 )
448#ifdef POLARSSL_X509_CRT_PARSE_C
449 if( strcmp( str,
"POLARSSL_ERR_X509_SIG_MISMATCH" ) == 0 )
455#ifdef POLARSSL_X509_CRL_PARSE_C
456 if( strcmp( str,
"POLARSSL_ERR_X509_SIG_MISMATCH" ) == 0 )
462#ifdef POLARSSL_X509_CSR_PARSE_C
463 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_FORMAT + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
469#ifdef POLARSSL_X509_CRL_PARSE_C
470 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_FORMAT + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
476#ifdef POLARSSL_X509_CRT_PARSE_C
477 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_FORMAT + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
484#ifdef POLARSSL_X509_CRT_PARSE_C
485#ifdef POLARSSL_X509_CRL_PARSE_C
486 if( strcmp( str,
"BADCRL_EXPIRED" ) == 0 )
494#ifdef POLARSSL_X509_CRT_PARSE_C
495 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_VERSION + POLARSSL_ERR_ASN1_INVALID_LENGTH" ) == 0 )
501#ifdef POLARSSL_X509_CRT_PARSE_C
502#ifdef POLARSSL_X509_RSASSA_PSS_SUPPORT
503 if( strcmp( str,
"POLARSSL_MD_SHA1" ) == 0 )
510#ifdef POLARSSL_X509_CRT_PARSE_C
511 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_ALG + POLARSSL_ERR_ASN1_LENGTH_MISMATCH" ) == 0 )
517#ifdef POLARSSL_X509_CRT_PARSE_C
518#ifdef POLARSSL_X509_RSASSA_PSS_SUPPORT
519 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_ALG + POLARSSL_ERR_ASN1_LENGTH_MISMATCH" ) == 0 )
526#ifdef POLARSSL_X509_CRT_PARSE_C
527#ifdef POLARSSL_X509_RSASSA_PSS_SUPPORT
528 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_ALG + POLARSSL_ERR_ASN1_INVALID_DATA" ) == 0 )
535#ifdef POLARSSL_X509_CRT_PARSE_C
536 if( strcmp( str,
"POLARSSL_ERR_PK_INVALID_PUBKEY + POLARSSL_ERR_ASN1_UNEXPECTED_TAG" ) == 0 )
542#ifdef POLARSSL_X509_CRT_PARSE_C
543 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_SERIAL + POLARSSL_ERR_ASN1_UNEXPECTED_TAG" ) == 0 )
549#ifdef POLARSSL_X509_CRT_PARSE_C
550 if( strcmp( str,
"POLARSSL_ERR_X509_UNKNOWN_VERSION" ) == 0 )
556#ifdef POLARSSL_X509_CRL_PARSE_C
557 if( strcmp( str,
"POLARSSL_ERR_X509_UNKNOWN_VERSION" ) == 0 )
563#ifdef POLARSSL_X509_CSR_PARSE_C
564 if( strcmp( str,
"POLARSSL_ERR_X509_UNKNOWN_VERSION" ) == 0 )
571#ifdef POLARSSL_X509_CRT_PARSE_C
572#ifdef POLARSSL_X509_CRL_PARSE_C
573 if( strcmp( str,
"BADCERT_REVOKED | BADCRL_EXPIRED | BADCERT_CN_MISMATCH" ) == 0 )
582#ifdef POLARSSL_X509_CRT_PARSE_C
583#ifdef POLARSSL_X509_CRL_PARSE_C
584 if( strcmp( str,
"BADCRL_FUTURE" ) == 0 )
592#ifdef POLARSSL_X509_CRT_PARSE_C
593 if( strcmp( str,
"POLARSSL_ERR_PK_UNKNOWN_PK_ALG" ) == 0 )
599#ifdef POLARSSL_X509_CRL_PARSE_C
600 if( strcmp( str,
"POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
606#ifdef POLARSSL_X509_CRT_PARSE_C
607 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_DATE" ) == 0 )
613#ifdef POLARSSL_X509_CRT_PARSE_C
614 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_EXTENSIONS + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
620#ifdef POLARSSL_X509_CRT_PARSE_C
621 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_DATE + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
627#ifdef POLARSSL_X509_CRL_PARSE_C
628 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_DATE + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
635#ifdef POLARSSL_X509_CRT_PARSE_C
636#ifdef POLARSSL_X509_CRL_PARSE_C
637 if( strcmp( str,
"BADCERT_CN_MISMATCH + BADCERT_NOT_TRUSTED" ) == 0 )
645#ifdef POLARSSL_X509_CSR_PARSE_C
646 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_SIGNATURE + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
652#ifdef POLARSSL_X509_CRT_PARSE_C
653 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_SIGNATURE + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
659#ifdef POLARSSL_X509_CRL_PARSE_C
660 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_FORMAT" ) == 0 )
666#ifdef POLARSSL_X509_CSR_PARSE_C
667 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_FORMAT" ) == 0 )
673#ifdef POLARSSL_X509_CRT_PARSE_C
674 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_FORMAT" ) == 0 )
680#ifdef POLARSSL_X509_CRT_PARSE_C
681 if( strcmp( str,
"POLARSSL_ERR_X509_UNKNOWN_SIG_ALG + POLARSSL_ERR_OID_NOT_FOUND" ) == 0 )
688#ifdef POLARSSL_X509_CRT_PARSE_C
689#ifdef POLARSSL_X509_CRL_PARSE_C
690 if( strcmp( str,
"POLARSSL_ERR_X509_CERT_VERIFY_FAILED" ) == 0 )
698#ifdef POLARSSL_X509_CRT_PARSE_C
699 if( strcmp( str,
"POLARSSL_ERR_PK_KEY_INVALID_FORMAT + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
705#ifdef POLARSSL_X509_CSR_PARSE_C
706 if( strcmp( str,
"POLARSSL_ERR_PK_KEY_INVALID_FORMAT + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
712#ifdef POLARSSL_X509_CRT_PARSE_C
713 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_NAME + POLARSSL_ERR_ASN1_UNEXPECTED_TAG" ) == 0 )
719#ifdef POLARSSL_X509_CSR_PARSE_C
720 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_NAME + POLARSSL_ERR_ASN1_UNEXPECTED_TAG" ) == 0 )
727#ifdef POLARSSL_X509_CRT_PARSE_C
728#ifdef POLARSSL_X509_CHECK_EXTENDED_KEY_USAGE
729 if( strcmp( str,
"POLARSSL_ERR_X509_BAD_INPUT_DATA" ) == 0 )
738#ifdef POLARSSL_X509_CRT_PARSE_C
739#ifdef POLARSSL_X509_CHECK_KEY_USAGE
740 if( strcmp( str,
"POLARSSL_ERR_X509_BAD_INPUT_DATA" ) == 0 )
748#ifdef POLARSSL_X509_CRT_PARSE_C
749 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_ALG + POLARSSL_ERR_ASN1_UNEXPECTED_TAG" ) == 0 )
755#ifdef POLARSSL_X509_CRT_PARSE_C
756#ifdef POLARSSL_X509_RSASSA_PSS_SUPPORT
757 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_ALG + POLARSSL_ERR_ASN1_UNEXPECTED_TAG" ) == 0 )
764#ifdef POLARSSL_X509_CRL_PARSE_C
765 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_ALG + POLARSSL_ERR_ASN1_UNEXPECTED_TAG" ) == 0 )
771#ifdef POLARSSL_X509_CSR_PARSE_C
772 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_ALG + POLARSSL_ERR_ASN1_UNEXPECTED_TAG" ) == 0 )
779#ifdef POLARSSL_X509_CRT_PARSE_C
780#ifdef POLARSSL_X509_CRL_PARSE_C
781 if( strcmp( str,
"BADCERT_REVOKED | BADCRL_EXPIRED" ) == 0 )
790#ifdef POLARSSL_X509_CRT_PARSE_C
791#ifdef POLARSSL_X509_CHECK_KEY_USAGE
792 if( strcmp( str,
"KU_KEY_CERT_SIGN|KU_CRL_SIGN" ) == 0 )
800#ifdef POLARSSL_X509_CRT_PARSE_C
801 if( strcmp( str,
"POLARSSL_ERR_PK_INVALID_PUBKEY" ) == 0 )
808#ifdef POLARSSL_X509_CRT_PARSE_C
809#ifdef POLARSSL_X509_CRL_PARSE_C
810 if( strcmp( str,
"BADCERT_OTHER" ) == 0 )
819#ifdef POLARSSL_X509_CRT_PARSE_C
820#ifdef POLARSSL_X509_CRL_PARSE_C
821 if( strcmp( str,
"BADCERT_REVOKED | BADCRL_FUTURE | BADCERT_CN_MISMATCH" ) == 0 )
829#ifdef POLARSSL_X509_CRT_PARSE_C
830 if( strcmp( str,
"POLARSSL_ERR_PK_INVALID_ALG + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
836#ifdef POLARSSL_X509_CRT_PARSE_C
837 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_SERIAL + POLARSSL_ERR_ASN1_OUT_OF_DATA " ) == 0 )
844#ifdef POLARSSL_X509_CRT_PARSE_C
845#ifdef POLARSSL_X509_CHECK_KEY_USAGE
846 if( strcmp( str,
"KU_KEY_ENCIPHERMENT|KU_KEY_AGREEMENT" ) == 0 )
854#ifdef POLARSSL_X509_CRT_PARSE_C
855#ifdef POLARSSL_X509_RSASSA_PSS_SUPPORT
856 if( strcmp( str,
"POLARSSL_MD_SHA256" ) == 0 )
863#ifdef POLARSSL_X509_CRT_PARSE_C
864#ifdef POLARSSL_X509_RSASSA_PSS_SUPPORT
865 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_ALG + POLARSSL_ERR_OID_NOT_FOUND" ) == 0 )
872#ifdef POLARSSL_X509_CRT_PARSE_C
873 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_VERSION + POLARSSL_ERR_ASN1_LENGTH_MISMATCH" ) == 0 )
880#ifdef POLARSSL_X509_CRT_PARSE_C
881#ifdef POLARSSL_X509_CHECK_KEY_USAGE
882 if( strcmp( str,
"KU_DIGITAL_SIGNATURE|KU_KEY_ENCIPHERMENT" ) == 0 )
890#ifdef POLARSSL_X509_CRL_PARSE_C
891 if( strcmp( str,
"POLARSSL_ERR_X509_UNKNOWN_SIG_ALG" ) == 0 )
897#ifdef POLARSSL_X509_CSR_PARSE_C
898 if( strcmp( str,
"POLARSSL_ERR_X509_UNKNOWN_SIG_ALG" ) == 0 )
904#ifdef POLARSSL_X509_CRT_PARSE_C
905 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_DATE + POLARSSL_ERR_ASN1_LENGTH_MISMATCH" ) == 0 )
911#ifdef POLARSSL_X509_CRT_PARSE_C
912 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_EXTENSIONS + POLARSSL_ERR_ASN1_LENGTH_MISMATCH" ) == 0 )
918#ifdef POLARSSL_X509_CRT_PARSE_C
919 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_VERSION + POLARSSL_ERR_ASN1_UNEXPECTED_TAG" ) == 0 )
925#ifdef POLARSSL_X509_CRT_PARSE_C
926 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_SERIAL + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
932#ifdef POLARSSL_X509_CRT_PARSE_C
933 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_SIGNATURE + POLARSSL_ERR_ASN1_INVALID_DATA" ) == 0 )
939#ifdef POLARSSL_X509_CRL_PARSE_C
940 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_ALG + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
946#ifdef POLARSSL_X509_CSR_PARSE_C
947 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_ALG + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
953#ifdef POLARSSL_X509_CRT_PARSE_C
954#ifdef POLARSSL_X509_RSASSA_PSS_SUPPORT
955 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_ALG + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
962#ifdef POLARSSL_X509_CRT_PARSE_C
963 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_ALG + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
970#ifdef POLARSSL_X509_CRT_PARSE_C
971#ifdef POLARSSL_X509_CRL_PARSE_C
972 if( strcmp( str,
"BADCERT_REVOKED" ) == 0 )
981#ifdef POLARSSL_X509_CRT_PARSE_C
982#ifdef POLARSSL_X509_CRL_PARSE_C
983 if( strcmp( str,
"BADCERT_REVOKED | BADCRL_FUTURE" ) == 0 )
991#ifdef POLARSSL_X509_CRT_PARSE_C
992#ifdef POLARSSL_X509_RSASSA_PSS_SUPPORT
993 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_ALG" ) == 0 )
1000#ifdef POLARSSL_FS_IO
1001#ifdef POLARSSL_X509_CRT_PARSE_C
1002#ifdef POLARSSL_X509_CRL_PARSE_C
1003 if( strcmp( str,
"BADCERT_EXPIRED" ) == 0 )
1011#ifdef POLARSSL_X509_CSR_PARSE_C
1012 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_NAME + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
1018#ifdef POLARSSL_X509_CRL_PARSE_C
1019 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_NAME + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
1025#ifdef POLARSSL_X509_CRT_PARSE_C
1026 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_NAME + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
1032#ifdef POLARSSL_FS_IO
1033#ifdef POLARSSL_X509_CRT_PARSE_C
1034#ifdef POLARSSL_X509_CHECK_KEY_USAGE
1035 if( strcmp( str,
"KU_DIGITAL_SIGNATURE" ) == 0 )
1043#ifdef POLARSSL_X509_USE_C
1044 if( strcmp( str,
"POLARSSL_ERR_OID_BUF_TOO_SMALL" ) == 0 )
1050#ifdef POLARSSL_X509_CRT_PARSE_C
1051 if( strcmp( str,
"POLARSSL_ERR_X509_FEATURE_UNAVAILABLE" ) == 0 )
1057#ifdef POLARSSL_X509_CSR_PARSE_C
1058 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_SIGNATURE + POLARSSL_ERR_ASN1_UNEXPECTED_TAG" ) == 0 )
1064#ifdef POLARSSL_X509_CRL_PARSE_C
1065 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_VERSION + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
1071#ifdef POLARSSL_X509_CSR_PARSE_C
1072 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_VERSION + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
1078#ifdef POLARSSL_X509_CRT_PARSE_C
1079 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_VERSION + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
1085#ifdef POLARSSL_X509_CRT_PARSE_C
1086#ifdef POLARSSL_X509_RSASSA_PSS_SUPPORT
1087 if( strcmp( str,
"ASN1_CONSTRUCTED | ASN1_SEQUENCE" ) == 0 )
1094#ifdef POLARSSL_X509_CRT_PARSE_C
1095 if( strcmp( str,
"POLARSSL_ERR_ASN1_INVALID_LENGTH" ) == 0 )
1101#ifdef POLARSSL_X509_CRT_PARSE_C
1102#ifdef POLARSSL_FS_IO
1103 if( strcmp( str,
"POLARSSL_ERR_PEM_INVALID_DATA + POLARSSL_ERR_BASE64_INVALID_CHARACTER" ) == 0 )
1110#ifdef POLARSSL_FS_IO
1111#ifdef POLARSSL_X509_CRT_PARSE_C
1112#ifdef POLARSSL_X509_CHECK_KEY_USAGE
1113 if( strcmp( str,
"KU_KEY_CERT_SIGN" ) == 0 )
1121#ifdef POLARSSL_X509_CRT_PARSE_C
1122#ifdef POLARSSL_X509_RSASSA_PSS_SUPPORT
1123 if( strcmp( str,
"POLARSSL_ERR_X509_FEATURE_UNAVAILABLE + POLARSSL_ERR_OID_NOT_FOUND" ) == 0 )
1130#ifdef POLARSSL_FS_IO
1131#ifdef POLARSSL_X509_CRT_PARSE_C
1132#ifdef POLARSSL_X509_CRL_PARSE_C
1133 if( strcmp( str,
"BADCERT_REVOKED | BADCERT_CN_MISMATCH" ) == 0 )
1141#ifdef POLARSSL_X509_CRT_PARSE_C
1142 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_FORMAT + POLARSSL_ERR_ASN1_INVALID_LENGTH" ) == 0 )
1148#ifdef POLARSSL_X509_CRT_PARSE_C
1149#ifdef POLARSSL_X509_RSASSA_PSS_SUPPORT
1150 if( strcmp( str,
"ASN1_SEQUENCE" ) == 0 )
1157#ifdef POLARSSL_X509_CRT_PARSE_C
1158 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_EXTENSIONS + POLARSSL_ERR_ASN1_UNEXPECTED_TAG" ) == 0 )
1164#ifdef POLARSSL_X509_CRT_PARSE_C
1165 if( strcmp( str,
"POLARSSL_ERR_PK_INVALID_PUBKEY + POLARSSL_ERR_ASN1_OUT_OF_DATA" ) == 0 )
1171#ifdef POLARSSL_X509_CSR_PARSE_C
1172 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_FORMAT + POLARSSL_ERR_ASN1_UNEXPECTED_TAG" ) == 0 )
1178#ifdef POLARSSL_X509_CRT_PARSE_C
1179 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_FORMAT + POLARSSL_ERR_ASN1_UNEXPECTED_TAG" ) == 0 )
1185#ifdef POLARSSL_X509_CRL_PARSE_C
1186 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_DATE + POLARSSL_ERR_ASN1_UNEXPECTED_TAG" ) == 0 )
1192#ifdef POLARSSL_X509_CRL_PARSE_C
1193 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_FORMAT + POLARSSL_ERR_ASN1_LENGTH_MISMATCH" ) == 0 )
1199#ifdef POLARSSL_X509_CSR_PARSE_C
1200 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_FORMAT + POLARSSL_ERR_ASN1_LENGTH_MISMATCH" ) == 0 )
1206#ifdef POLARSSL_X509_CRT_PARSE_C
1207 if( strcmp( str,
"POLARSSL_ERR_X509_INVALID_FORMAT + POLARSSL_ERR_ASN1_LENGTH_MISMATCH" ) == 0 )
1213#ifdef POLARSSL_X509_CSR_PARSE_C
1214 if( strcmp( str,
"POLARSSL_ERR_PK_KEY_INVALID_FORMAT + POLARSSL_ERR_ASN1_UNEXPECTED_TAG" ) == 0 )
1220#ifdef POLARSSL_FS_IO
1221#ifdef POLARSSL_X509_CRT_PARSE_C
1222#ifdef POLARSSL_X509_CRL_PARSE_C
1223 if( strcmp( str,
"BADCERT_FUTURE" ) == 0 )
1231#ifdef POLARSSL_FS_IO
1232#ifdef POLARSSL_X509_CRT_PARSE_C
1233#ifdef POLARSSL_X509_CRL_PARSE_C
1234 if( strcmp( str,
"BADCERT_CN_MISMATCH" ) == 0 )
1242#ifdef POLARSSL_X509_CRT_PARSE_C
1243 if( strcmp( str,
"POLARSSL_ERR_PK_INVALID_PUBKEY + POLARSSL_ERR_ASN1_INVALID_DATA" ) == 0 )
1249#ifdef POLARSSL_FS_IO
1250#ifdef POLARSSL_X509_CRT_PARSE_C
1251#ifdef POLARSSL_X509_CRL_PARSE_C
1252 if( strcmp( str,
"BADCRL_NOT_TRUSTED" ) == 0 )
1260#ifdef POLARSSL_FS_IO
1261#ifdef POLARSSL_X509_CRT_PARSE_C
1262#ifdef POLARSSL_X509_CRL_PARSE_C
1263 if( strcmp( str,
"BADCERT_NOT_TRUSTED" ) == 0 )
1273 printf(
"Expected integer for parameter and got: %s\n", str );
1277#ifdef POLARSSL_FS_IO
1278#ifdef POLARSSL_X509_CRT_PARSE_C
1279void test_suite_x509_cert_info(
char *crt_file,
char *result_str )
1286 memset( buf, 0, 2000 );
1302#ifdef POLARSSL_FS_IO
1303#ifdef POLARSSL_X509_CRL_PARSE_C
1304void test_suite_x509_crl_info(
char *crl_file,
char *result_str )
1311 memset( buf, 0, 2000 );
1327#ifdef POLARSSL_FS_IO
1328#ifdef POLARSSL_X509_CSR_PARSE_C
1329void test_suite_x509_csr_info(
char *csr_file,
char *result_str )
1336 memset( buf, 0, 2000 );
1352#ifdef POLARSSL_FS_IO
1353#ifdef POLARSSL_X509_CRT_PARSE_C
1354#ifdef POLARSSL_X509_CRL_PARSE_C
1355void test_suite_x509_verify(
char *crt_file,
char *ca_file,
char *crl_file,
1356 char *cn_name_str,
int result,
int flags_result,
1357 char *verify_callback )
1364 int (*f_vrfy)(
void *,
x509_crt *, int,
int *) = NULL;
1365 char * cn_name = NULL;
1371 if( strcmp( cn_name_str,
"NULL" ) != 0 )
1372 cn_name = cn_name_str;
1374 if( strcmp( verify_callback,
"NULL" ) == 0 )
1376 else if( strcmp( verify_callback,
"verify_none" ) == 0 )
1377 f_vrfy = verify_none;
1378 else if( strcmp( verify_callback,
"verify_all" ) == 0 )
1379 f_vrfy = verify_all;
1381 TEST_ASSERT(
"No known verify callback selected" == 0 );
1387 res =
x509_crt_verify( &crt, &ca, &crl, cn_name, &flags, f_vrfy, NULL );
1401#ifdef POLARSSL_FS_IO
1402#ifdef POLARSSL_X509_CRT_C
1403void test_suite_x509_dn_gets(
char *crt_file,
char *entity,
char *result_str )
1410 memset( buf, 0, 2000 );
1413 if( strcmp( entity,
"subject" ) == 0 )
1415 else if( strcmp( entity,
"issuer" ) == 0 )
1431#ifdef POLARSSL_FS_IO
1432#ifdef POLARSSL_X509_CRT_C
1433void test_suite_x509_time_expired(
char *crt_file,
char *entity,
int result )
1441 if( strcmp( entity,
"valid_from" ) == 0 )
1443 else if( strcmp( entity,
"valid_to" ) == 0 )
1454#ifdef POLARSSL_FS_IO
1455#ifdef POLARSSL_X509_CRT_C
1456void test_suite_x509_time_future(
char *crt_file,
char *entity,
int result )
1464 if( strcmp( entity,
"valid_from" ) == 0 )
1466 else if( strcmp( entity,
"valid_to" ) == 0 )
1477#ifdef POLARSSL_X509_CRT_PARSE_C
1478#ifdef POLARSSL_FS_IO
1479void test_suite_x509parse_crt_file(
char *crt_file,
int result )
1493#ifdef POLARSSL_X509_CRT_PARSE_C
1494void test_suite_x509parse_crt(
char *crt_data,
char *result_str,
int result )
1497 unsigned char buf[2000];
1498 unsigned char output[2000];
1502 memset( buf, 0, 2000 );
1503 memset( output, 0, 2000 );
1505 data_len =
unhexify( buf, crt_data );
1508 if( ( result ) == 0 )
1515 TEST_ASSERT( strcmp( (
char *) output, result_str ) == 0 );
1523#ifdef POLARSSL_X509_CRL_PARSE_C
1524void test_suite_x509parse_crl(
char *crl_data,
char *result_str,
int result )
1527 unsigned char buf[2000];
1528 unsigned char output[2000];
1532 memset( buf, 0, 2000 );
1533 memset( output, 0, 2000 );
1535 data_len =
unhexify( buf, crl_data );
1538 if( ( result ) == 0 )
1545 TEST_ASSERT( strcmp( (
char *) output, result_str ) == 0 );
1553#ifdef POLARSSL_X509_CSR_PARSE_C
1554void test_suite_x509_csr_parse(
char *csr_der_hex,
char *ref_out,
int ref_ret )
1557 unsigned char *csr_der = NULL;
1563 memset( my_out, 0,
sizeof( my_out ) );
1571 size_t my_out_len =
x509_csr_info( my_out,
sizeof( my_out ),
"", &csr );
1582#ifdef POLARSSL_FS_IO
1583#ifdef POLARSSL_X509_CRT_PARSE_C
1584void test_suite_x509_crt_parse_path(
char *crt_path,
int ret,
int nb_crt )
1594 for( i = 0, cur = &chain; cur != NULL; cur = cur->
next )
1595 if( cur->
raw.
p != NULL )
1606#ifdef POLARSSL_X509_USE_C
1607void test_suite_x509_oid_desc(
char *oid_str,
char *ref_desc )
1611 unsigned char buf[20];
1613 memset( buf, 0,
sizeof buf );
1621 if( strcmp( ref_desc,
"notfound" ) == 0 )
1634#ifdef POLARSSL_X509_USE_C
1635void test_suite_x509_oid_numstr(
char *oid_str,
char *numstr,
int blen,
int ret )
1638 unsigned char oid_buf[20];
1641 memset( oid_buf, 0x00,
sizeof oid_buf );
1642 memset( num_buf, 0x2a,
sizeof num_buf );
1663#ifdef POLARSSL_FS_IO
1664#ifdef POLARSSL_X509_CRT_PARSE_C
1665#ifdef POLARSSL_X509_CHECK_KEY_USAGE
1666void test_suite_x509_check_key_usage(
char *crt_file,
int usage,
int ret )
1683#ifdef POLARSSL_FS_IO
1684#ifdef POLARSSL_X509_CRT_PARSE_C
1685#ifdef POLARSSL_X509_CHECK_EXTENDED_KEY_USAGE
1686void test_suite_x509_check_extended_key_usage(
char *crt_file,
char *usage_hex,
int ret )
1694 len =
unhexify( (
unsigned char *) oid, usage_hex );
1707#ifdef POLARSSL_X509_CRT_PARSE_C
1708#ifdef POLARSSL_X509_RSASSA_PSS_SUPPORT
1709void test_suite_x509_parse_rsassa_pss_params(
char *hex_params,
int params_tag,
1710 int ref_msg_md,
int ref_mgf_md,
1711 int ref_salt_len,
int ref_ret )
1719 params.
tag = params_tag;
1724 if( my_ret != ref_ret ) printf(
"\n%04X\n", - my_ret );
1741#ifdef POLARSSL_X509_CRT_PARSE_C
1742#ifdef POLARSSL_SELF_TEST
1743void test_suite_x509_selftest()
1762 if( strcmp( str,
"POLARSSL_MD5_C" ) == 0 )
1764#if defined(POLARSSL_MD5_C)
1770 if( strcmp( str,
"POLARSSL_SHA1_C" ) == 0 )
1772#if defined(POLARSSL_SHA1_C)
1778 if( strcmp( str,
"POLARSSL_RSA_C" ) == 0 )
1780#if defined(POLARSSL_RSA_C)
1786 if( strcmp( str,
"POLARSSL_X509_CHECK_KEY_USAGE" ) == 0 )
1788#if defined(POLARSSL_X509_CHECK_KEY_USAGE)
1794 if( strcmp( str,
"POLARSSL_ECP_DP_SECP384R1_ENABLED" ) == 0 )
1796#if defined(POLARSSL_ECP_DP_SECP384R1_ENABLED)
1802 if( strcmp( str,
"POLARSSL_X509_RSASSA_PSS_SUPPORT" ) == 0 )
1804#if defined(POLARSSL_X509_RSASSA_PSS_SUPPORT)
1810 if( strcmp( str,
"POLARSSL_ECP_C" ) == 0 )
1812#if defined(POLARSSL_ECP_C)
1818 if( strcmp( str,
"POLARSSL_MD4_C" ) == 0 )
1820#if defined(POLARSSL_MD4_C)
1826 if( strcmp( str,
"POLARSSL_PKCS1_V15" ) == 0 )
1828#if defined(POLARSSL_PKCS1_V15)
1834 if( strcmp( str,
"POLARSSL_ECP_DP_SECP192R1_ENABLED" ) == 0 )
1836#if defined(POLARSSL_ECP_DP_SECP192R1_ENABLED)
1842 if( strcmp( str,
"POLARSSL_X509_ALLOW_EXTENSIONS_NON_V3" ) == 0 )
1844#if defined(POLARSSL_X509_ALLOW_EXTENSIONS_NON_V3)
1850 if( strcmp( str,
"POLARSSL_ECP_DP_SECP256R1_ENABLED" ) == 0 )
1852#if defined(POLARSSL_ECP_DP_SECP256R1_ENABLED)
1858 if( strcmp( str,
"POLARSSL_ECDSA_C" ) == 0 )
1860#if defined(POLARSSL_ECDSA_C)
1866 if( strcmp( str,
"POLARSSL_SHA512_C" ) == 0 )
1868#if defined(POLARSSL_SHA512_C)
1874 if( strcmp( str,
"POLARSSL_PEM_PARSE_C" ) == 0 )
1876#if defined(POLARSSL_PEM_PARSE_C)
1882 if( strcmp( str,
"POLARSSL_CERTS_C" ) == 0 )
1884#if defined(POLARSSL_CERTS_C)
1890 if( strcmp( str,
"POLARSSL_ECP_DP_SECP383R1_ENABLED" ) == 0 )
1892#if defined(POLARSSL_ECP_DP_SECP383R1_ENABLED)
1898 if( strcmp( str,
"POLARSSL_HAVE_TIME" ) == 0 )
1900#if defined(POLARSSL_HAVE_TIME)
1906 if( strcmp( str,
"POLARSSL_SHA256_C" ) == 0 )
1908#if defined(POLARSSL_SHA256_C)
1925#if defined(TEST_SUITE_ACTIVE)
1926 if( strcmp( params[0],
"x509_cert_info" ) == 0 )
1928 #ifdef POLARSSL_FS_IO
1929 #ifdef POLARSSL_X509_CRT_PARSE_C
1931 char *param1 = params[1];
1932 char *param2 = params[2];
1936 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 3 );
1943 test_suite_x509_cert_info( param1, param2 );
1951 if( strcmp( params[0],
"x509_crl_info" ) == 0 )
1953 #ifdef POLARSSL_FS_IO
1954 #ifdef POLARSSL_X509_CRL_PARSE_C
1956 char *param1 = params[1];
1957 char *param2 = params[2];
1961 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 3 );
1968 test_suite_x509_crl_info( param1, param2 );
1976 if( strcmp( params[0],
"x509_csr_info" ) == 0 )
1978 #ifdef POLARSSL_FS_IO
1979 #ifdef POLARSSL_X509_CSR_PARSE_C
1981 char *param1 = params[1];
1982 char *param2 = params[2];
1986 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 3 );
1993 test_suite_x509_csr_info( param1, param2 );
2001 if( strcmp( params[0],
"x509_verify" ) == 0 )
2003 #ifdef POLARSSL_FS_IO
2004 #ifdef POLARSSL_X509_CRT_PARSE_C
2005 #ifdef POLARSSL_X509_CRL_PARSE_C
2007 char *param1 = params[1];
2008 char *param2 = params[2];
2009 char *param3 = params[3];
2010 char *param4 = params[4];
2013 char *param7 = params[7];
2017 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 8 );
2025 if(
verify_int( params[5], ¶m5 ) != 0 )
return( 2 );
2026 if(
verify_int( params[6], ¶m6 ) != 0 )
return( 2 );
2029 test_suite_x509_verify( param1, param2, param3, param4, param5, param6, param7 );
2038 if( strcmp( params[0],
"x509_dn_gets" ) == 0 )
2040 #ifdef POLARSSL_FS_IO
2041 #ifdef POLARSSL_X509_CRT_C
2043 char *param1 = params[1];
2044 char *param2 = params[2];
2045 char *param3 = params[3];
2049 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 4 );
2057 test_suite_x509_dn_gets( param1, param2, param3 );
2065 if( strcmp( params[0],
"x509_time_expired" ) == 0 )
2067 #ifdef POLARSSL_FS_IO
2068 #ifdef POLARSSL_X509_CRT_C
2070 char *param1 = params[1];
2071 char *param2 = params[2];
2076 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 4 );
2082 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
2084 test_suite_x509_time_expired( param1, param2, param3 );
2092 if( strcmp( params[0],
"x509_time_future" ) == 0 )
2094 #ifdef POLARSSL_FS_IO
2095 #ifdef POLARSSL_X509_CRT_C
2097 char *param1 = params[1];
2098 char *param2 = params[2];
2103 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 4 );
2109 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
2111 test_suite_x509_time_future( param1, param2, param3 );
2119 if( strcmp( params[0],
"x509parse_crt_file" ) == 0 )
2121 #ifdef POLARSSL_X509_CRT_PARSE_C
2122 #ifdef POLARSSL_FS_IO
2124 char *param1 = params[1];
2129 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 3 );
2134 if(
verify_int( params[2], ¶m2 ) != 0 )
return( 2 );
2136 test_suite_x509parse_crt_file( param1, param2 );
2144 if( strcmp( params[0],
"x509parse_crt" ) == 0 )
2146 #ifdef POLARSSL_X509_CRT_PARSE_C
2148 char *param1 = params[1];
2149 char *param2 = params[2];
2154 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 4 );
2160 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
2162 test_suite_x509parse_crt( param1, param2, param3 );
2169 if( strcmp( params[0],
"x509parse_crl" ) == 0 )
2171 #ifdef POLARSSL_X509_CRL_PARSE_C
2173 char *param1 = params[1];
2174 char *param2 = params[2];
2179 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 4 );
2185 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
2187 test_suite_x509parse_crl( param1, param2, param3 );
2194 if( strcmp( params[0],
"x509_csr_parse" ) == 0 )
2196 #ifdef POLARSSL_X509_CSR_PARSE_C
2198 char *param1 = params[1];
2199 char *param2 = params[2];
2204 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 4 );
2210 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
2212 test_suite_x509_csr_parse( param1, param2, param3 );
2219 if( strcmp( params[0],
"x509_crt_parse_path" ) == 0 )
2221 #ifdef POLARSSL_FS_IO
2222 #ifdef POLARSSL_X509_CRT_PARSE_C
2224 char *param1 = params[1];
2230 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 4 );
2235 if(
verify_int( params[2], ¶m2 ) != 0 )
return( 2 );
2236 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
2238 test_suite_x509_crt_parse_path( param1, param2, param3 );
2246 if( strcmp( params[0],
"x509_oid_desc" ) == 0 )
2248 #ifdef POLARSSL_X509_USE_C
2250 char *param1 = params[1];
2251 char *param2 = params[2];
2255 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 3 );
2262 test_suite_x509_oid_desc( param1, param2 );
2269 if( strcmp( params[0],
"x509_oid_numstr" ) == 0 )
2271 #ifdef POLARSSL_X509_USE_C
2273 char *param1 = params[1];
2274 char *param2 = params[2];
2280 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 5 );
2286 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
2287 if(
verify_int( params[4], ¶m4 ) != 0 )
return( 2 );
2289 test_suite_x509_oid_numstr( param1, param2, param3, param4 );
2296 if( strcmp( params[0],
"x509_check_key_usage" ) == 0 )
2298 #ifdef POLARSSL_FS_IO
2299 #ifdef POLARSSL_X509_CRT_PARSE_C
2300 #ifdef POLARSSL_X509_CHECK_KEY_USAGE
2302 char *param1 = params[1];
2308 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 4 );
2313 if(
verify_int( params[2], ¶m2 ) != 0 )
return( 2 );
2314 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
2316 test_suite_x509_check_key_usage( param1, param2, param3 );
2325 if( strcmp( params[0],
"x509_check_extended_key_usage" ) == 0 )
2327 #ifdef POLARSSL_FS_IO
2328 #ifdef POLARSSL_X509_CRT_PARSE_C
2329 #ifdef POLARSSL_X509_CHECK_EXTENDED_KEY_USAGE
2331 char *param1 = params[1];
2332 char *param2 = params[2];
2337 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 4 );
2343 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
2345 test_suite_x509_check_extended_key_usage( param1, param2, param3 );
2354 if( strcmp( params[0],
"x509_parse_rsassa_pss_params" ) == 0 )
2356 #ifdef POLARSSL_X509_CRT_PARSE_C
2357 #ifdef POLARSSL_X509_RSASSA_PSS_SUPPORT
2359 char *param1 = params[1];
2368 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 7 );
2373 if(
verify_int( params[2], ¶m2 ) != 0 )
return( 2 );
2374 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
2375 if(
verify_int( params[4], ¶m4 ) != 0 )
return( 2 );
2376 if(
verify_int( params[5], ¶m5 ) != 0 )
return( 2 );
2377 if(
verify_int( params[6], ¶m6 ) != 0 )
return( 2 );
2379 test_suite_x509_parse_rsassa_pss_params( param1, param2, param3, param4, param5, param6 );
2387 if( strcmp( params[0],
"x509_selftest" ) == 0 )
2389 #ifdef POLARSSL_X509_CRT_PARSE_C
2390 #ifdef POLARSSL_SELF_TEST
2395 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 1 );
2400 test_suite_x509_selftest( );
2410 fprintf( stdout,
"FAILED\nSkipping unknown test function '%s'\n", params[0] );
2424 ret = fgets( buf, len, f );
2428 if( strlen( buf ) && buf[strlen(buf) - 1] ==
'\n' )
2429 buf[strlen(buf) - 1] =
'\0';
2430 if( strlen( buf ) && buf[strlen(buf) - 1] ==
'\r' )
2431 buf[strlen(buf) - 1] =
'\0';
2442 params[cnt++] = cur;
2444 while( *p !=
'\0' && p < buf + len )
2454 if( p + 1 < buf + len )
2457 params[cnt++] = cur;
2466 for( i = 0; i < cnt; i++ )
2473 if( *p ==
'\\' && *(p + 1) ==
'n' )
2478 else if( *p ==
'\\' && *(p + 1) ==
':' )
2483 else if( *p ==
'\\' && *(p + 1) ==
'?' )
2499 int ret, i, cnt, total_errors = 0, total_tests = 0, total_skipped = 0;
2500 const char *filename =
"/builddir/build/BUILD/polarssl-1.3.9/tests/suites/test_suite_x509parse.data";
2505#if defined(POLARSSL_MEMORY_BUFFER_ALLOC_C)
2506 unsigned char alloc_buf[1000000];
2510 file = fopen( filename,
"r" );
2513 fprintf( stderr,
"Failed to open\n" );
2517 while( !feof( file ) )
2521 if( ( ret =
get_line( file, buf,
sizeof(buf) ) ) != 0 )
2523 fprintf( stdout,
"%s%.66s",
test_errors ?
"\n" :
"", buf );
2524 fprintf( stdout,
" " );
2525 for( i = strlen( buf ) + 1; i < 67; i++ )
2526 fprintf( stdout,
"." );
2527 fprintf( stdout,
" " );
2532 if( ( ret =
get_line( file, buf,
sizeof(buf) ) ) != 0 )
2536 if( strcmp( params[0],
"depends_on" ) == 0 )
2538 for( i = 1; i < cnt; i++ )
2542 if( ( ret =
get_line( file, buf,
sizeof(buf) ) ) != 0 )
2553 if( skip == 1 || ret == 3 )
2556 fprintf( stdout,
"----\n" );
2561 fprintf( stdout,
"PASS\n" );
2566 fprintf( stderr,
"FAILED: FATAL PARSE ERROR\n" );
2573 if( ( ret =
get_line( file, buf,
sizeof(buf) ) ) != 0 )
2575 if( strlen(buf) != 0 )
2577 fprintf( stderr,
"Should be empty %d\n", (
int) strlen(buf) );
2583 fprintf( stdout,
"\n----------------------------------------------------------------------------\n\n");
2584 if( total_errors == 0 )
2585 fprintf( stdout,
"PASSED" );
2587 fprintf( stdout,
"FAILED" );
2589 fprintf( stdout,
" (%d / %d tests (%d skipped))\n",
2590 total_tests - total_errors, total_tests, total_skipped );
2592#if defined(POLARSSL_MEMORY_BUFFER_ALLOC_C)
2593#if defined(POLARSSL_MEMORY_DEBUG)
2594 memory_buffer_alloc_status();
2599 return( total_errors != 0 );
RFC 1521 base64 encoding/decoding.
#define POLARSSL_ERR_BASE64_INVALID_CHARACTER
Invalid character in input.
Configuration options (set of defines)
#define POLARSSL_ERR_ASN1_OUT_OF_DATA
Out of data when parsing an ASN1 data structure.
#define POLARSSL_ERR_ASN1_INVALID_LENGTH
Error when trying to determine the length or invalid length.
#define POLARSSL_ERR_ASN1_UNEXPECTED_TAG
ASN1 tag was of an unexpected value.
size_t len
ASN1 length, e.g.
unsigned char * p
ASN1 data, e.g.
#define POLARSSL_ERR_ASN1_INVALID_DATA
Data is invalid.
#define POLARSSL_ERR_ASN1_LENGTH_MISMATCH
Actual length differs from expected length.
x509_time valid_to
End time of certificate validity.
int x509_time_expired(const x509_time *time)
Check a given x509_time against the system time and check if it is not expired.
#define POLARSSL_ERR_X509_UNKNOWN_VERSION
CRT/CRL/CSR has an unsupported version number.
x509_name issuer
The parsed issuer data (named information object).
int x509_crt_check_key_usage(const x509_crt *crt, int usage)
Check usage of certificate against keyUsage extension.
int x509_crl_info(char *buf, size_t size, const char *prefix, const x509_crl *crl)
Returns an informational string about the CRL.
int x509_csr_info(char *buf, size_t size, const char *prefix, const x509_csr *csr)
Returns an informational string about the CSR.
#define POLARSSL_ERR_X509_CERT_VERIFY_FAILED
Certificate verification failed, e.g.
#define BADCERT_FUTURE
The certificate validity starts in the future.
void x509_crt_init(x509_crt *crt)
Initialize a certificate (chain)
int x509_crt_parse_file(x509_crt *chain, const char *path)
Load one or more certificates and add them to the chained list.
int x509_crt_parse_path(x509_crt *chain, const char *path)
Load one or more certificate files from a path and add them to the chained list.
#define KU_DIGITAL_SIGNATURE
int x509_time_future(const x509_time *time)
Check a given x509_time against the system time and check if it is not from the future.
#define POLARSSL_ERR_X509_INVALID_NAME
The name tag or value is invalid.
int x509_self_test(int verbose)
Checkup routine.
#define POLARSSL_ERR_X509_INVALID_DATE
The date tag or value is invalid.
#define BADCERT_REVOKED
The certificate has been revoked (is on a CRL).
int x509_dn_gets(char *buf, size_t size, const x509_name *dn)
Store the certificate DN in printable form into buf; no more than size characters will be written.
#define POLARSSL_ERR_X509_INVALID_SIGNATURE
The signature tag or value invalid.
#define POLARSSL_ERR_X509_BAD_INPUT_DATA
Input invalid.
void x509_csr_free(x509_csr *csr)
Unallocate all CSR data.
#define POLARSSL_ERR_X509_INVALID_SERIAL
The serial tag or value is invalid.
x509_time valid_from
Start time of certificate validity.
void x509_crt_free(x509_crt *crt)
Unallocate all certificate data.
#define BADCERT_EXPIRED
The certificate validity has expired.
#define KU_KEY_ENCIPHERMENT
x509_buf raw
The raw certificate data (DER).
#define BADCERT_NOT_TRUSTED
The certificate is not correctly signed by the trusted CA.
const char * x509_oid_get_description(x509_buf *oid)
Give an known OID, return its descriptive string.
#define POLARSSL_ERR_X509_INVALID_VERSION
The CRT/CRL/CSR version element is invalid.
int x509_crt_info(char *buf, size_t size, const char *prefix, const x509_crt *crt)
Returns an informational string about the certificate.
#define POLARSSL_ERR_X509_UNKNOWN_SIG_ALG
Signature algorithm (oid) is unsupported.
#define BADCRL_FUTURE
The CRL is from the future.
int x509_csr_parse_file(x509_csr *csr, const char *path)
Load a Certificate Signing Request (CSR)
void x509_crl_free(x509_crl *crl)
Unallocate all CRL data.
#define POLARSSL_ERR_X509_FEATURE_UNAVAILABLE
Unavailable feature, e.g.
x509_name subject
The parsed subject data (named information object).
#define POLARSSL_ERR_X509_INVALID_FORMAT
The CRT/CRL/CSR format is invalid, e.g.
#define BADCERT_OTHER
Other reason (can be used by verify callback)
int x509_crl_parse_file(x509_crl *chain, const char *path)
Load one or more CRLs and add them to the chained list.
#define POLARSSL_ERR_X509_SIG_MISMATCH
Signature algorithms do not match.
int x509_csr_parse_der(x509_csr *csr, const unsigned char *buf, size_t buflen)
Load a Certificate Signing Request (CSR) in DER format.
#define POLARSSL_ERR_X509_INVALID_ALG
The algorithm tag or value is invalid.
void x509_csr_init(x509_csr *csr)
Initialize a CSR.
int x509_crt_verify(x509_crt *crt, x509_crt *trust_ca, x509_crl *ca_crl, const char *cn, int *flags, int(*f_vrfy)(void *, x509_crt *, int, int *), void *p_vrfy)
Verify the certificate signature.
#define BADCERT_CN_MISMATCH
The certificate Common Name (CN) does not match with the expected CN.
int x509_crt_check_extended_key_usage(const x509_crt *crt, const char *usage_oid, size_t usage_len)
Check usage of certificate against extentedJeyUsage.
#define BADCRL_NOT_TRUSTED
CRL is not correctly signed by the trusted CA.
int x509_crl_parse(x509_crl *chain, const unsigned char *buf, size_t buflen)
Parse one or more CRLs and add them to the chained list.
#define BADCRL_EXPIRED
CRL is expired.
void x509_crl_init(x509_crl *crl)
Initialize a CRL (chain)
int x509_get_rsassa_pss_params(const x509_buf *params, md_type_t *md_alg, md_type_t *mgf_md, int *salt_len)
#define POLARSSL_ERR_X509_INVALID_EXTENSIONS
The extension tag or value is invalid.
struct _x509_crt * next
Next certificate in the CA-chain.
int x509_oid_get_numeric_string(char *buf, size_t size, x509_buf *oid)
Give an OID, return a string version of its OID number.
int x509_crt_parse(x509_crt *chain, const unsigned char *buf, size_t buflen)
Parse one or more certificates and add them to the chained list.
Memory allocation layer (Deprecated to platform layer)
void memory_buffer_alloc_free(void)
Free the mutex for thread-safety and clear remaining memory.
int memory_buffer_alloc_init(unsigned char *buf, size_t len)
Initialize use of stack-based memory allocator.
Object Identifier (OID) database.
#define POLARSSL_ERR_OID_NOT_FOUND
OID is not found.
#define POLARSSL_ERR_OID_BUF_TOO_SMALL
output buffer is too small
Privacy Enhanced Mail (PEM) decoding.
#define POLARSSL_ERR_PEM_INVALID_DATA
PEM string is not as expected.
#define POLARSSL_ERR_PK_KEY_INVALID_FORMAT
Invalid key tag or value.
#define POLARSSL_ERR_PK_INVALID_ALG
The algorithm tag or value is invalid.
#define POLARSSL_ERR_PK_UNKNOWN_PK_ALG
Key algorithm is unsupported (only RSA and EC are supported).
#define POLARSSL_ERR_PK_INVALID_PUBKEY
The pubkey tag or value is invalid (only RSA and EC are supported).
Type-length-value structure that allows for ASN1 using DER.
Certificate revocation list structure.
Container for an X.509 certificate.
Certificate Signing Request (CSR) structure.
Info structure for the pseudo random function.
int verify_int(char *str, int *value)
static int test_assert(int correct, const char *test)
int verify_string(char **str)
#define TEST_ASSERT(TEST)
static unsigned char * unhexify_alloc(const char *ibuf, size_t *olen)
Allocate and fill a buffer from hex data.
int dispatch_test(int cnt, char *params[50])
static void hexify(unsigned char *obuf, const unsigned char *ibuf, int len)
int parse_arguments(char *buf, size_t len, char *params[50])
#define PUT_UINT32_BE(n, b, i)
static int rnd_pseudo_rand(void *rng_state, unsigned char *output, size_t len)
This function returns random based on a pseudo random function.
int get_line(FILE *f, char *buf, size_t len)
static int rnd_buffer_rand(void *rng_state, unsigned char *output, size_t len)
This function returns random based on a buffer it receives.
static int unhexify(unsigned char *obuf, const char *ibuf)
static unsigned char * zero_alloc(size_t len)
Allocate and zeroize a buffer.
static int rnd_std_rand(void *rng_state, unsigned char *output, size_t len)
This function just returns data from rand().
static int rnd_zero_rand(void *rng_state, unsigned char *output, size_t len)
This function only returns zeros.
X.509 certificate revocation list parsing.
X.509 certificate parsing and writing.
X.509 certificate signing request parsing and writing.