提交 954ef7ef 编写于 作者: D Dr. Stephen Henson

Merge some common functionality in the apps, delete
the encryption option in the pkcs7 utility (they never
did anything) and add a couple more options to pkcs7.
上级 c4471290
...@@ -4,6 +4,10 @@ ...@@ -4,6 +4,10 @@
Changes between 0.9.4 and 0.9.5 [xx XXX 1999] Changes between 0.9.4 and 0.9.5 [xx XXX 1999]
*) Add options -text and -noout to pkcs7 utility and delets the
encryption options which never did anything. Update docs.
[Steve Henson]
*) Add options to some of the utilities to allow the pass phrase *) Add options to some of the utilities to allow the pass phrase
to be included on either the command line (not recommended on to be included on either the command line (not recommended on
OSes like Unix) or read from the environment. Update the OSes like Unix) or read from the environment. Update the
......
...@@ -335,3 +335,17 @@ int MS_CALLBACK key_cb(char *buf, int len, int verify, void *key) ...@@ -335,3 +335,17 @@ int MS_CALLBACK key_cb(char *buf, int len, int verify, void *key)
memcpy(buf,key,i); memcpy(buf,key,i);
return(i); return(i);
} }
int dump_cert_text (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;
}
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
#include <openssl/buffer.h> #include <openssl/buffer.h>
#include <openssl/bio.h> #include <openssl/bio.h>
#include <openssl/crypto.h> #include <openssl/crypto.h>
#include <openssl/x509.h>
#include "progs.h" #include "progs.h"
int app_RAND_load_file(const char *file, BIO *bio_e, int dont_warn); int app_RAND_load_file(const char *file, BIO *bio_e, int dont_warn);
...@@ -143,6 +144,9 @@ int str2fmt(char *s); ...@@ -143,6 +144,9 @@ int str2fmt(char *s);
void program_name(char *in,char *out,int size); void program_name(char *in,char *out,int size);
int chopup_args(ARGS *arg,char *buf, int *argc, char **argv[]); int chopup_args(ARGS *arg,char *buf, int *argc, char **argv[]);
int MS_CALLBACK key_cb(char *buf,int len,int verify,void *u); int MS_CALLBACK key_cb(char *buf,int len,int verify,void *u);
#ifdef HEADER_X509_H
int dump_cert_text(BIO *out, X509 *x);
#endif
#define FORMAT_UNDEF 0 #define FORMAT_UNDEF 0
#define FORMAT_ASN1 1 #define FORMAT_ASN1 1
#define FORMAT_TEXT 2 #define FORMAT_TEXT 2
......
...@@ -65,7 +65,6 @@ ...@@ -65,7 +65,6 @@
#undef PROG #undef PROG
#define PROG nseq_main #define PROG nseq_main
static int dump_cert_text(BIO *out, X509 *x);
int MAIN(int argc, char **argv) int MAIN(int argc, char **argv)
{ {
...@@ -158,17 +157,3 @@ end: ...@@ -158,17 +157,3 @@ end:
EXIT(ret); EXIT(ret);
} }
static int dump_cert_text(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;
}
...@@ -79,7 +79,6 @@ EVP_CIPHER *enc; ...@@ -79,7 +79,6 @@ EVP_CIPHER *enc;
#define CACERTS 0x10 #define CACERTS 0x10
int get_cert_chain(X509 *cert, STACK_OF(X509) **chain); int get_cert_chain(X509 *cert, STACK_OF(X509) **chain);
int dump_cert_text (BIO *out, X509 *x);
int dump_certs_keys_p12(BIO *out, PKCS12 *p12, char *pass, int passlen, int options); int dump_certs_keys_p12(BIO *out, PKCS12 *p12, char *pass, int passlen, int options);
int dump_certs_pkeys_bags(BIO *out, STACK *bags, char *pass, int passlen, int options); int dump_certs_pkeys_bags(BIO *out, STACK *bags, char *pass, int passlen, int options);
int dump_certs_pkeys_bag(BIO *out, PKCS12_SAFEBAG *bags, char *pass, int passlen, int options); int dump_certs_pkeys_bag(BIO *out, PKCS12_SAFEBAG *bags, char *pass, int passlen, int options);
...@@ -453,20 +452,6 @@ int MAIN(int argc, char **argv) ...@@ -453,20 +452,6 @@ int MAIN(int argc, char **argv)
EXIT(ret); EXIT(ret);
} }
int dump_cert_text (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;
}
int dump_certs_keys_p12 (BIO *out, PKCS12 *p12, char *pass, int dump_certs_keys_p12 (BIO *out, PKCS12 *p12, char *pass,
int passlen, int options) int passlen, int options)
{ {
......
...@@ -75,9 +75,6 @@ ...@@ -75,9 +75,6 @@
* -outform arg - output format - default PEM * -outform arg - output format - default PEM
* -in arg - input file - default stdin * -in arg - input file - default stdin
* -out arg - output file - default stdout * -out arg - output file - default stdout
* -des - encrypt output if PEM format with DES in cbc mode
* -des3 - encrypt output if PEM format
* -idea - encrypt output if PEM format
* -print_certs * -print_certs
*/ */
...@@ -85,13 +82,10 @@ int MAIN(int argc, char **argv) ...@@ -85,13 +82,10 @@ int MAIN(int argc, char **argv)
{ {
PKCS7 *p7=NULL; PKCS7 *p7=NULL;
int i,badops=0; int i,badops=0;
#if !defined(NO_DES) || !defined(NO_IDEA)
EVP_CIPHER *enc=NULL;
#endif
BIO *in=NULL,*out=NULL; BIO *in=NULL,*out=NULL;
int informat,outformat; int informat,outformat;
char *infile,*outfile,*prog,buf[256]; char *infile,*outfile,*prog;
int print_certs=0; int print_certs=0,text=0,noout=0;
int ret=0; int ret=0;
apps_startup(); apps_startup();
...@@ -130,18 +124,12 @@ int MAIN(int argc, char **argv) ...@@ -130,18 +124,12 @@ int MAIN(int argc, char **argv)
if (--argc < 1) goto bad; if (--argc < 1) goto bad;
outfile= *(++argv); outfile= *(++argv);
} }
else if (strcmp(*argv,"-noout") == 0)
noout=1;
else if (strcmp(*argv,"-text") == 0)
text=1;
else if (strcmp(*argv,"-print_certs") == 0) else if (strcmp(*argv,"-print_certs") == 0)
print_certs=1; print_certs=1;
#ifndef NO_DES
else if (strcmp(*argv,"-des") == 0)
enc=EVP_des_cbc();
else if (strcmp(*argv,"-des3") == 0)
enc=EVP_des_ede3_cbc();
#endif
#ifndef NO_IDEA
else if (strcmp(*argv,"-idea") == 0)
enc=EVP_idea_cbc();
#endif
else else
{ {
BIO_printf(bio_err,"unknown option %s\n",*argv); BIO_printf(bio_err,"unknown option %s\n",*argv);
...@@ -162,11 +150,8 @@ bad: ...@@ -162,11 +150,8 @@ bad:
BIO_printf(bio_err," -in arg input file\n"); BIO_printf(bio_err," -in arg input file\n");
BIO_printf(bio_err," -out arg output file\n"); BIO_printf(bio_err," -out arg output file\n");
BIO_printf(bio_err," -print_certs print any certs or crl in the input\n"); BIO_printf(bio_err," -print_certs print any certs or crl in the input\n");
BIO_printf(bio_err," -des encrypt PEM output with cbc des\n"); BIO_printf(bio_err," -text print full details of certificates\n");
BIO_printf(bio_err," -des3 encrypt PEM output with ede cbc des using 168 bit key\n"); BIO_printf(bio_err," -noout don't output encoded data\n");
#ifndef NO_IDEA
BIO_printf(bio_err," -idea encrypt PEM output with cbc idea\n");
#endif
EXIT(1); EXIT(1);
} }
...@@ -246,19 +231,10 @@ bad: ...@@ -246,19 +231,10 @@ bad:
for (i=0; i<sk_X509_num(certs); i++) for (i=0; i<sk_X509_num(certs); i++)
{ {
x=sk_X509_value(certs,i); x=sk_X509_value(certs,i);
if(text) X509_print(out, x);
else dump_cert_text(out, x);
X509_NAME_oneline(X509_get_subject_name(x), if(!noout) PEM_write_bio_X509(out,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");
PEM_write_bio_X509(out,x);
BIO_puts(out,"\n"); BIO_puts(out,"\n");
} }
} }
...@@ -270,17 +246,9 @@ bad: ...@@ -270,17 +246,9 @@ bad:
{ {
crl=sk_X509_CRL_value(crls,i); crl=sk_X509_CRL_value(crls,i);
X509_NAME_oneline(crl->crl->issuer,buf,256); X509_CRL_print(out, crl);
BIO_puts(out,"issuer= ");
BIO_puts(out,buf);
BIO_puts(out,"\nlast update=");
ASN1_TIME_print(out,crl->crl->lastUpdate);
BIO_puts(out,"\nnext update=");
ASN1_TIME_print(out,crl->crl->nextUpdate);
BIO_puts(out,"\n");
PEM_write_bio_X509_CRL(out,crl); if(!noout)PEM_write_bio_X509_CRL(out,crl);
BIO_puts(out,"\n"); BIO_puts(out,"\n");
} }
} }
...@@ -289,21 +257,23 @@ bad: ...@@ -289,21 +257,23 @@ bad:
goto end; goto end;
} }
if (outformat == FORMAT_ASN1) if(!noout) {
i=i2d_PKCS7_bio(out,p7); if (outformat == FORMAT_ASN1)
else if (outformat == FORMAT_PEM) i=i2d_PKCS7_bio(out,p7);
i=PEM_write_bio_PKCS7(out,p7); else if (outformat == FORMAT_PEM)
else { i=PEM_write_bio_PKCS7(out,p7);
BIO_printf(bio_err,"bad output format specified for outfile\n"); else {
goto end; BIO_printf(bio_err,"bad output format specified for outfile\n");
} goto end;
}
if (!i) if (!i)
{ {
BIO_printf(bio_err,"unable to write pkcs7 object\n"); BIO_printf(bio_err,"unable to write pkcs7 object\n");
ERR_print_errors(bio_err); ERR_print_errors(bio_err);
goto end; goto end;
} }
}
ret=0; ret=0;
end: end:
if (p7 != NULL) PKCS7_free(p7); if (p7 != NULL) PKCS7_free(p7);
......
...@@ -47,6 +47,16 @@ default. ...@@ -47,6 +47,16 @@ default.
prints out any certificates or CRLs contained in the file. They are prints out any certificates or CRLs contained in the file. They are
preceded by their subject and issuer names in one line format. preceded by their subject and issuer names in one line format.
=item B<-text>
prints out certificates details in full rather than just subject and
issuer names.
=item B<-noout>
don't output the encoded version of the PKCS#7 structure (or certificates
is B<-print_certs> is set).
=back =back
=head1 EXAMPLES =head1 EXAMPLES
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册