plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

rsa2x509.c (794B)


      1 #include <u.h>
      2 #include <libc.h>
      3 #include <bio.h>
      4 #include <auth.h>
      5 #include <mp.h>
      6 #include <libsec.h>
      7 #include "rsa2any.h"
      8 
      9 void
     10 usage(void)
     11 {
     12 	fprint(2, "usage: aux/rsa2x509 [-e expireseconds] 'C=US ...CN=xxx' [key]");
     13 	exits("usage");
     14 }
     15 
     16 void
     17 main(int argc, char **argv)
     18 {
     19 	int len;
     20 	uchar *cert;
     21 	ulong valid[2];
     22 	RSApriv *key;
     23 
     24 	fmtinstall('B', mpfmt);
     25 	fmtinstall('H', encodefmt);
     26 
     27 	valid[0] = time(0);
     28 	valid[1] = valid[0] + 3*366*24*60*60;
     29 
     30 	ARGBEGIN{
     31 	default:
     32 		usage();
     33 	case 'e':
     34 		valid[1] = valid[0] + strtoul(ARGF(), 0, 10);
     35 		break;
     36 	}ARGEND
     37 
     38 	if(argc != 1 && argc != 2)
     39 		usage();
     40 
     41 	if((key = getkey(argc-1, argv+1, 1, nil)) == nil)
     42 		sysfatal("%r");
     43 
     44 	cert = X509gen(key, argv[0], valid, &len);
     45 	if(cert == nil)
     46 		sysfatal("X509gen: %r");
     47 
     48 	write(1, cert, len);
     49 	exits(0);
     50 }