aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/auth/rsa2x509.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/auth/rsa2x509.c')
-rw-r--r--src/cmd/auth/rsa2x509.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/cmd/auth/rsa2x509.c b/src/cmd/auth/rsa2x509.c
new file mode 100644
index 00000000..cf4f7a6d
--- /dev/null
+++ b/src/cmd/auth/rsa2x509.c
@@ -0,0 +1,50 @@
+#include <u.h>
+#include <libc.h>
+#include <bio.h>
+#include <auth.h>
+#include <mp.h>
+#include <libsec.h>
+#include "rsa2any.h"
+
+void
+usage(void)
+{
+ fprint(2, "usage: aux/rsa2x509 [-e expireseconds] 'C=US ...CN=xxx' [key]");
+ exits("usage");
+}
+
+void
+main(int argc, char **argv)
+{
+ int len;
+ uchar *cert;
+ ulong valid[2];
+ RSApriv *key;
+
+ fmtinstall('B', mpfmt);
+ fmtinstall('H', encodefmt);
+
+ valid[0] = time(0);
+ valid[1] = valid[0] + 3*366*24*60*60;
+
+ ARGBEGIN{
+ default:
+ usage();
+ case 'e':
+ valid[1] = valid[0] + strtoul(ARGF(), 0, 10);
+ break;
+ }ARGEND
+
+ if(argc != 1 && argc != 2)
+ usage();
+
+ if((key = getkey(argc-1, argv+1, 1, nil)) == nil)
+ sysfatal("%r");
+
+ cert = X509gen(key, argv[0], valid, &len);
+ if(cert == nil)
+ sysfatal("X509gen: %r");
+
+ write(1, cert, len);
+ exits(0);
+}