From 14cb63a40c0ceb55f034e30944836e76641b389b Mon Sep 17 00:00:00 2001
From: Paul Bakker
Date: Fri, 25 Nov 2011 12:44:31 +0000
Subject: [PATCH] - cert_app now prints all certificates in the file given,
not just the first
---
programs/x509/cert_app.c | 28 +++++++++++++++++-----------
1 file changed, 17 insertions(+), 11 deletions(-)
diff --git a/programs/x509/cert_app.c b/programs/x509/cert_app.c
index fca8bc691..07e9e5203 100644
--- a/programs/x509/cert_app.c
+++ b/programs/x509/cert_app.c
@@ -176,12 +176,13 @@ int main( int argc, char *argv[] )
if( opt.mode == MODE_FILE )
{
x509_cert crt;
+ x509_cert *cur = &crt;
memset( &crt, 0, sizeof( x509_cert ) );
/*
- * 1.1. Load the certificate
+ * 1.1. Load the certificate(s)
*/
- printf( "\n . Loading the certificate ..." );
+ printf( "\n . Loading the certificate(s) ..." );
fflush( stdout );
ret = x509parse_crtfile( &crt, opt.filename );
@@ -196,18 +197,23 @@ int main( int argc, char *argv[] )
printf( " ok\n" );
/*
- * 1.2 Print the certificate
+ * 1.2 Print the certificate(s)
*/
- printf( " . Peer certificate information ...\n" );
- ret = x509parse_cert_info( (char *) buf, sizeof( buf ) - 1, " ", &crt );
- if( ret == -1 )
+ while( cur != NULL )
{
- printf( " failed\n ! x509parse_cert_info returned %d\n\n", ret );
- x509_free( &crt );
- goto exit;
- }
+ printf( " . Peer certificate information ...\n" );
+ ret = x509parse_cert_info( (char *) buf, sizeof( buf ) - 1, " ", &crt );
+ if( ret == -1 )
+ {
+ printf( " failed\n ! x509parse_cert_info returned %d\n\n", ret );
+ x509_free( &crt );
+ goto exit;
+ }
- printf( "%s\n", buf );
+ printf( "%s\n", buf );
+
+ cur = cur->next;
+ }
x509_free( &crt );
}