Workaround for some CMS signature formats.
[openssl.git] / apps / nseq.c
index edf83bf..e3c4dba 100644 (file)
@@ -1,5 +1,5 @@
 /* nseq.c */
-/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
+/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
  * project 1999.
  */
 /* ====================================================================
  */
 
 #include <stdio.h>
-#include "pem.h"
-#include "err.h"
+#include <string.h>
 #include "apps.h"
+#include <openssl/pem.h>
+#include <openssl/err.h>
 
 #undef PROG
 #define PROG nseq_main
 
-#ifdef NOPROTO
-static int dump_cert_text(BIO *out, X509 *x);
-#else
-static int dump_cert_text();
-#endif
+int MAIN(int, char **);
 
-int MAIN(argc, argv)
-int argc;
-char **argv;
+int MAIN(int argc, char **argv)
 {
        char **args, *infile = NULL, *outfile = NULL;
        BIO *in = NULL, *out = NULL;
@@ -83,7 +78,6 @@ char **argv;
        int badarg = 0;
        if (bio_err == NULL) bio_err = BIO_new_fp (stderr, BIO_NOCLOSE);
        ERR_load_crypto_strings();
-        SSLeay_add_all_algorithms();
        args = argv + 1;
        while (!badarg && *args && *args[0] == '-') {
                if (!strcmp (*args, "-toseq")) toseq = 1;
@@ -105,10 +99,10 @@ char **argv;
                BIO_printf (bio_err, "Netscape certificate sequence utility\n");
                BIO_printf (bio_err, "Usage nseq [options]\n");
                BIO_printf (bio_err, "where options are\n");
-                BIO_printf (bio_err, "-in file  input file\n");
-                BIO_printf (bio_err, "-out file output file\n");
-                BIO_printf (bio_err, "-toseq    output NS Sequence file\n");
-               EXIT(1);
+               BIO_printf (bio_err, "-in file  input file\n");
+               BIO_printf (bio_err, "-out file output file\n");
+               BIO_printf (bio_err, "-toseq    output NS Sequence file\n");
+               OPENSSL_EXIT(1);
        }
 
        if (infile) {
@@ -125,15 +119,22 @@ char **argv;
                                 "Can't open output file %s\n", outfile);
                        goto end;
                }
-       } else out = BIO_new_fp(stdout, BIO_NOCLOSE);
-
+       } else {
+               out = BIO_new_fp(stdout, BIO_NOCLOSE);
+#ifdef OPENSSL_SYS_VMS
+               {
+               BIO *tmpbio = BIO_new(BIO_f_linebuffer());
+               out = BIO_push(tmpbio, out);
+               }
+#endif
+       }
        if (toseq) {
                seq = NETSCAPE_CERT_SEQUENCE_new();
-               seq->certs = sk_new(NULL);
-               while((x509 = PEM_read_bio_X509(in, NULL, NULL))) 
-                                       sk_push(seq->certs, (char *)x509);
+               seq->certs = sk_X509_new_null();
+               while((x509 = PEM_read_bio_X509(in, NULL, NULL, NULL))) 
+                   sk_X509_push(seq->certs,x509);
 
-               if(!sk_num(seq->certs))
+               if(!sk_X509_num(seq->certs))
                {
                        BIO_printf (bio_err, "Error reading certs file %s\n", infile);
                        ERR_print_errors(bio_err);
@@ -144,39 +145,23 @@ char **argv;
                goto end;
        }
 
-       if (!(seq = PEM_read_bio_NETSCAPE_CERT_SEQUENCE(in, NULL, NULL))) {
+       if (!(seq = PEM_read_bio_NETSCAPE_CERT_SEQUENCE(in, NULL, NULL, NULL))) {
                BIO_printf (bio_err, "Error reading sequence file %s\n", infile);
                ERR_print_errors(bio_err);
                goto end;
        }
 
-       for(i = 0; i < sk_num(seq->certs); i++) {
-               x509 = (X509 *) sk_value(seq->certs, i);
+       for(i = 0; i < sk_X509_num(seq->certs); i++) {
+               x509 = sk_X509_value(seq->certs, i);
                dump_cert_text(out, x509);
                PEM_write_bio_X509(out, x509);
        }
        ret = 0;
 end:
        BIO_free(in);
-       BIO_free(out);
+       BIO_free_all(out);
        NETSCAPE_CERT_SEQUENCE_free(seq);
 
-       EXIT(ret);
-}
-
-static int dump_cert_text(out, x)
-BIO *out;
-X509 *x;
-{
-        char buf[256];
-        X509_NAME_oneline(X509_get_subject_name(x),buf,256);
-        BIO_puts(out,"subject=");
-        BIO_puts(out,buf);
-
-        X509_NAME_oneline(X509_get_issuer_name(x),buf,256);
-        BIO_puts(out,"\nissuer= ");
-        BIO_puts(out,buf);
-        BIO_puts(out,"\n");
-        return 0;
+       OPENSSL_EXIT(ret);
 }