summaryrefslogtreecommitdiff
path: root/sys/src/cmd/auth
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2017-10-06 20:55:57 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2017-10-06 20:55:57 +0200
commit0a3695ba844972e332dc28efa1ecb232a8eff9ba (patch)
treeac607a411d232179f077fabae3065f74f27e7903 /sys/src/cmd/auth
parent8a67560183b3b726c827bcac02632b2b8e3ba59d (diff)
rsa: add auth/rsa2asn1, check write error in auth/rsa2x509 and auth/rsa2pub, document in rsa(8)
Diffstat (limited to 'sys/src/cmd/auth')
-rw-r--r--sys/src/cmd/auth/mkfile5
-rw-r--r--sys/src/cmd/auth/rsa2asn1.c37
-rw-r--r--sys/src/cmd/auth/rsa2pub.c11
-rw-r--r--sys/src/cmd/auth/rsa2x509.c6
4 files changed, 50 insertions, 9 deletions
diff --git a/sys/src/cmd/auth/mkfile b/sys/src/cmd/auth/mkfile
index c9c8a1c4b..fac3f714c 100644
--- a/sys/src/cmd/auth/mkfile
+++ b/sys/src/cmd/auth/mkfile
@@ -27,6 +27,7 @@ TARG=\
pemencode\
printnetkey\
readnvram\
+ rsa2asn1\
rsa2csr\
rsa2pub\
rsa2ssh\
@@ -108,10 +109,10 @@ nuke:V:
$O.%: $LIB
$O.dsa2ssh $O.dsafill $O.dsa2x509 $O.dsa2pub $O.dsa2csr: rsa2any.$O
-$O.rsa2ssh $O.rsafill $O.rsa2x509 $O.rsa2pub $O.rsa2csr: rsa2any.$O
+$O.rsa2asn1 $O.rsa2ssh $O.rsafill $O.rsa2x509 $O.rsa2pub $O.rsa2csr: rsa2any.$O
$O.authsrv $O.guard.srv: secureidcheck.$O
-rsa2ssh.$O rsafill.$O rsa2x509.$O rsa2pub.$O rsa2csr.$O: rsa2any.h
+rsa2asn1.$O rsa2ssh.$O rsafill.$O rsa2x509.$O rsa2pub.$O rsa2csr.$O: rsa2any.h
$BIN/netkey:V: $O.netkey
cp $O.netkey /$objtype/bin/netkey
diff --git a/sys/src/cmd/auth/rsa2asn1.c b/sys/src/cmd/auth/rsa2asn1.c
new file mode 100644
index 000000000..51f82282e
--- /dev/null
+++ b/sys/src/cmd/auth/rsa2asn1.c
@@ -0,0 +1,37 @@
+#include <u.h>
+#include <libc.h>
+#include <auth.h>
+#include <mp.h>
+#include <libsec.h>
+#include "rsa2any.h"
+
+void
+usage(void)
+{
+ fprint(2, "usage: auth/rsa2asn1 [file]\n");
+ exits("usage");
+}
+
+void
+main(int argc, char **argv)
+{
+ uchar buf[16*1024];
+ RSApriv *k;
+ int n;
+
+ ARGBEGIN{
+ default:
+ usage();
+ }ARGEND
+
+ if(argc > 1)
+ usage();
+
+ if((k = getrsakey(argc, argv, 0, nil)) == nil)
+ sysfatal("%r");
+ if((n = asn1encodeRSApub(&k->pub, buf, sizeof(buf))) < 0)
+ sysfatal("asn1encodeRSApub: %r");
+ if(write(1, buf, n) != n)
+ sysfatal("write: %r");
+ exits(nil);
+}
diff --git a/sys/src/cmd/auth/rsa2pub.c b/sys/src/cmd/auth/rsa2pub.c
index df3ac9ac6..79c9bc609 100644
--- a/sys/src/cmd/auth/rsa2pub.c
+++ b/sys/src/cmd/auth/rsa2pub.c
@@ -18,6 +18,7 @@ main(int argc, char **argv)
RSApriv *key;
Attr *a;
char *s;
+ int n;
fmtinstall('A', _attrfmt);
fmtinstall('B', mpfmt);
@@ -34,11 +35,11 @@ main(int argc, char **argv)
if((key = getrsakey(argc, argv, 0, &a)) == nil)
sysfatal("%r");
- s = smprint("key %A size=%d ek=%B n=%B\n",
- a,
- mpsignif(key->pub.n), key->pub.ek, key->pub.n);
- if(s == nil)
+ if((s = smprint("key %A size=%d ek=%B n=%B\n", a,
+ mpsignif(key->pub.n), key->pub.ek, key->pub.n)) == nil)
sysfatal("smprint: %r");
- write(1, s, strlen(s));
+ n = strlen(s);
+ if(write(1, s, n) != n)
+ sysfatal("write: %r");
exits(nil);
}
diff --git a/sys/src/cmd/auth/rsa2x509.c b/sys/src/cmd/auth/rsa2x509.c
index e433fc9d8..4e87556af 100644
--- a/sys/src/cmd/auth/rsa2x509.c
+++ b/sys/src/cmd/auth/rsa2x509.c
@@ -45,6 +45,8 @@ main(int argc, char **argv)
if(cert == nil)
sysfatal("X509rsagen: %r");
- write(1, cert, len);
- exits(0);
+ if(write(1, cert, len) != len)
+ sysfatal("write: %r");
+
+ exits(nil);
}