- cert_app now prints all certificates in the file given, not just the first

diff --git a/programs/x509/cert_app.c b/programs/x509/cert_app.c
index fca8bc6..07e9e52 100644
--- a/programs/x509/cert_app.c
+++ b/programs/x509/cert_app.c
@@ -176,12 +176,13 @@
     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 @@
         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 );
     }