diff options
author | rsc <devnull@localhost> | 2005-02-13 18:04:20 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2005-02-13 18:04:20 +0000 |
commit | 57fcfc2a0b8ecd266ce130dab9a29b7ceb558d64 (patch) | |
tree | 2d7dc505e9bda2e49efdc13ed459d7e2fad5f579 /src/cmd/auth/pemencode.c | |
parent | ce94dbe662155bd60d6839b5e8c82ad708667bcd (diff) | |
download | plan9port-57fcfc2a0b8ecd266ce130dab9a29b7ceb558d64.tar.gz plan9port-57fcfc2a0b8ecd266ce130dab9a29b7ceb558d64.tar.bz2 plan9port-57fcfc2a0b8ecd266ce130dab9a29b7ceb558d64.zip |
add others
Diffstat (limited to 'src/cmd/auth/pemencode.c')
-rw-r--r-- | src/cmd/auth/pemencode.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/cmd/auth/pemencode.c b/src/cmd/auth/pemencode.c new file mode 100644 index 00000000..3b0bc469 --- /dev/null +++ b/src/cmd/auth/pemencode.c @@ -0,0 +1,64 @@ +#include <u.h> +#include <libc.h> +#include <bio.h> +#include <mp.h> +#include <libsec.h> + +void +usage(void) +{ + fprint(2, "auth/pemdecode section [file]\n"); + exits("usage"); +} + +void +main(int argc, char **argv) +{ + char *buf, *cbuf; + int fd; + long n, tot; + int len; + char *tag, *file; + + ARGBEGIN{ + default: + usage(); + }ARGEND + + if(argc != 1 && argc != 2) + usage(); + + tag = argv[0]; + if(argc == 2) + file = argv[1]; + else + file = "/dev/stdin"; + + 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; + } + buf[tot] = 0; + cbuf = malloc(2*tot); + if(cbuf == nil) + sysfatal("malloc: %r"); + len = enc64(cbuf, 2*tot, (uchar*)buf, tot); + print("-----BEGIN %s-----\n", tag); + while(len > 0){ + print("%.64s\n", cbuf); + cbuf += 64; + len -= 64; + } + print("-----END %s-----\n", tag); + exits(0); +} |