diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-01-07 05:17:34 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-01-07 05:17:34 +0100 |
commit | 069230cd621ae5b3b9ab6e1a31eb6250fc86e30b (patch) | |
tree | 88845aa701a4892ec876b275be6faa39aa43563c /sys/src/cmd/auth | |
parent | 05f721e9987791aae8e07dd4435f04df6ce33c77 (diff) |
forgot to commit asn1dump.c...
Diffstat (limited to 'sys/src/cmd/auth')
-rw-r--r-- | sys/src/cmd/auth/asn1dump.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/sys/src/cmd/auth/asn1dump.c b/sys/src/cmd/auth/asn1dump.c new file mode 100644 index 000000000..620a1500d --- /dev/null +++ b/sys/src/cmd/auth/asn1dump.c @@ -0,0 +1,58 @@ +#include <u.h> +#include <libc.h> +#include <mp.h> +#include <libsec.h> + +void +usage(void) +{ + fprint(2, "auth/asn1dump [file]\n"); + exits("usage"); +} + +void +main(int argc, char *argv[]) +{ + int fd, n, tot; + uchar *buf; + char *file; + + fmtinstall('B', mpfmt); + fmtinstall('H', encodefmt); + fmtinstall('[', encodefmt); + + ARGBEGIN{ + default: + usage(); + }ARGEND + + if(argc != 0 && argc != 1) + usage(); + + if(argc == 1) + file = argv[0]; + else + file = "#d/0"; + + if((fd = open(file, OREAD)) < 0) + sysfatal("open %s: %r", file); + + buf = nil; + tot = 0; + for(;;){ + buf = realloc(buf, tot+8192); + if(buf == nil) + sysfatal("realloc: %r"); + if((n = read(fd, buf+tot, 8192)) < 0) + sysfatal("read: %r"); + if(n == 0) + break; + tot += n; + } + + asn1dump(buf, tot); + + X509dump(buf, tot); + + exits(nil); +} |