36 #if !defined(POLARSSL_CONFIG_FILE)
39 #include POLARSSL_CONFIG_FILE
42 #if defined(POLARSSL_X509_CRL_PARSE_C)
46 #if defined(POLARSSL_PEM_PARSE_C)
50 #if defined(POLARSSL_PLATFORM_C)
53 #define polarssl_malloc malloc
54 #define polarssl_free free
59 #if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32)
66 #if defined(POLARSSL_FS_IO) || defined(EFIX64) || defined(EFI32)
71 static void polarssl_zeroize(
void *v,
size_t n ) {
72 volatile unsigned char *p = v;
while( n-- ) *p++ = 0;
78 static int x509_crl_get_version(
unsigned char **p,
79 const unsigned char *end,
101 static int x509_get_crl_ext(
unsigned char **p,
102 const unsigned char *end,
136 static int x509_get_crl_entry_ext(
unsigned char **p,
137 const unsigned char *end,
167 if( end != *p + ext->
len )
190 static int x509_get_entries(
unsigned char **p,
191 const unsigned char *end,
210 end = *p + entry_len;
215 const unsigned char *end2;
224 cur_entry->
raw.
p = *p;
225 cur_entry->
raw.
len = len2;
235 if( ( ret = x509_get_crl_entry_ext( p, end2,
243 if( cur_entry->
next == NULL )
246 cur_entry = cur_entry->
next;
261 unsigned char *p, *end;
265 #if defined(POLARSSL_PEM_PARSE_C)
270 memset( &sig_params1, 0,
sizeof(
x509_buf ) );
271 memset( &sig_params2, 0,
sizeof(
x509_buf ) );
278 if( crl == NULL || buf == NULL )
291 if( crl->
next == NULL )
301 #if defined(POLARSSL_PEM_PARSE_C)
303 ret = pem_read_buffer( &pem,
304 "-----BEGIN X509 CRL-----",
305 "-----END X509 CRL-----",
306 buf, NULL, 0, &use_len );
340 memcpy( p, buf, buflen );
362 if( len != (
size_t) ( end - p ) )
390 if( ( ret = x509_crl_get_version( &p, end, &crl->
version ) ) != 0 ||
463 if( ( ret = x509_get_entries( &p, end, &crl->
entry ) ) != 0 )
475 ret = x509_get_crl_ext( &p, end, &crl->
crl_ext );
505 sig_params1.
len != sig_params2.
len ||
506 memcmp( sig_params1.
p, sig_params2.
p, sig_params1.
len ) != 0 )
529 if( crl->
next == NULL )
544 #if defined(POLARSSL_FS_IO)
559 polarssl_zeroize( buf, n + 1 );
566 #if defined(_MSC_VER) && !defined snprintf && !defined(EFIX64) && \
570 #if !defined vsnprintf
571 #define vsnprintf _vsnprintf
581 static int compat_snprintf(
char *str,
size_t size,
const char *format, ... )
586 va_start( ap, format );
588 res = vsnprintf( str, size, format, ap );
594 return( (
int) size + 20 );
599 #define snprintf compat_snprintf
602 #define POLARSSL_ERR_DEBUG_BUF_TOO_SMALL -2
604 #define SAFE_SNPRINTF() \
609 if( (unsigned int) ret > n ) { \
611 return( POLARSSL_ERR_DEBUG_BUF_TOO_SMALL ); \
614 n -= (unsigned int) ret; \
615 p += (unsigned int) ret; \
621 #define BEFORE_COLON 14
626 int x509_crl_info(
char *buf,
size_t size,
const char *prefix,
637 ret = snprintf( p, n,
"%sCRL version : %d",
641 ret = snprintf( p, n,
"\n%sissuer name : ", prefix );
646 ret = snprintf( p, n,
"\n%sthis update : " \
647 "%04d-%02d-%02d %02d:%02d:%02d", prefix,
653 ret = snprintf( p, n,
"\n%snext update : " \
654 "%04d-%02d-%02d %02d:%02d:%02d", prefix,
662 ret = snprintf( p, n,
"\n%sRevoked certificates:",
666 while( entry != NULL && entry->
raw.
len != 0 )
668 ret = snprintf( p, n,
"\n%sserial number: ",
675 ret = snprintf( p, n,
" revocation date: " \
676 "%04d-%02d-%02d %02d:%02d:%02d",
685 ret = snprintf( p, n,
"\n%ssigned using : ", prefix );
692 ret = snprintf( p, n,
"\n" );
695 return( (
int) ( size - n ) );
723 #if defined(POLARSSL_X509_RSASSA_PSS_SUPPORT)
728 while( name_cur != NULL )
731 name_cur = name_cur->
next;
732 polarssl_zeroize( name_prv,
sizeof(
x509_name ) );
737 while( entry_cur != NULL )
739 entry_prv = entry_cur;
740 entry_cur = entry_cur->
next;
745 if( crl_cur->
raw.
p != NULL )
747 polarssl_zeroize( crl_cur->
raw.
p, crl_cur->
raw.
len );
751 crl_cur = crl_cur->
next;
753 while( crl_cur != NULL );
759 crl_cur = crl_cur->
next;
761 polarssl_zeroize( crl_prv,
sizeof(
x509_crl ) );
765 while( crl_cur != NULL );