diff options
author | Richard Levitte <levitte@openssl.org> | 2000-07-27 17:28:25 +0000 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2000-07-27 17:28:25 +0000 |
commit | ca1e465f6dd96d8dc15e418eda13fc3bd26362b2 (patch) | |
tree | 96936fa929c8d9280868e0d634196b627b4ebb38 /apps/asn1pars.c | |
parent | f6c1c9e95dd7ceadae070bd32e59cfa20726b42e (diff) | |
download | openssl-ca1e465f6dd96d8dc15e418eda13fc3bd26362b2.tar.gz |
Add the possibility to get hexdumps of unprintable data when using
'openssl asn1parse'. As a side effect, the functions ASN1_parse_dump
and BIO_dump_indent are added.
Diffstat (limited to 'apps/asn1pars.c')
-rw-r--r-- | apps/asn1pars.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/apps/asn1pars.c b/apps/asn1pars.c index 2d64492ffd..30e1da443a 100644 --- a/apps/asn1pars.c +++ b/apps/asn1pars.c @@ -88,7 +88,7 @@ int MAIN(int argc, char **argv) unsigned int length=0; long num,tmplen; BIO *in=NULL,*out=NULL,*b64=NULL, *derout = NULL; - int informat,indent=0, noout = 0; + int informat,indent=0, noout = 0, dump = 0; char *infile=NULL,*str=NULL,*prog,*oidfile=NULL, *derfile=NULL; unsigned char *tmpbuf; BUF_MEM *buf=NULL; @@ -149,6 +149,16 @@ int MAIN(int argc, char **argv) length= atoi(*(++argv)); if (length == 0) goto bad; } + else if (strcmp(*argv,"-dump") == 0) + { + dump= -1; + } + else if (strcmp(*argv,"-dlimit") == 0) + { + if (--argc < 1) goto bad; + dump= atoi(*(++argv)); + if (dump <= 0) goto bad; + } else if (strcmp(*argv,"-strparse") == 0) { if (--argc < 1) goto bad; @@ -176,6 +186,8 @@ bad: BIO_printf(bio_err," -offset arg offset into file\n"); BIO_printf(bio_err," -length arg length of section in file\n"); BIO_printf(bio_err," -i indent entries\n"); + BIO_printf(bio_err," -dump dump unknown data in hex form\n"); + BIO_printf(bio_err," -dlimit arg dump the first arg bytes of unknown data in hex form\n"); BIO_printf(bio_err," -oid file file of extra oid definitions\n"); BIO_printf(bio_err," -strparse offset\n"); BIO_printf(bio_err," a series of these can be used to 'dig' into multiple\n"); @@ -293,7 +305,8 @@ bad: } } if (!noout && - !ASN1_parse(out,(unsigned char *)&(str[offset]),length,indent)) + !ASN1_parse_dump(out,(unsigned char *)&(str[offset]),length, + indent,dump)) { ERR_print_errors(bio_err); goto end; |