123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #include "ssh.h"
- char *base = "/sys/lib/ssh/hostkey";
- RSApriv *key;
- void
- usage(void)
- {
- fprint(2, "usage: aux/ssh_genkey [basename]\n");
- fprint(2, "\tdefault basename is /sys/lib/ssh/hostkey\n");
- exits("usage");
- }
- void
- printsecret(int fd)
- {
- fprint(fd, "%d %B %B %B %B %B %B %B %B",
- mpsignif(key->pub.n), key->pub.ek,
- key->dk, key->pub.n, key->p, key->q,
- key->kp, key->kq, key->c2);
- }
- void
- printsecretfactotum(int fd)
- {
- fprint(fd, "key proto=sshrsa size=%d ek=%B !dk=%B n=%B !p=%B !q=%B !kp=%B !kq=%B !c2=%B",
- mpsignif(key->pub.n), key->pub.ek,
- key->dk, key->pub.n, key->p, key->q,
- key->kp, key->kq, key->c2);
- }
- /*
- void
- printpublic(int fd)
- {
- fprint(fd, "%d %B %B\n", mpsignif(key->pub.n), key->pub.ek, key->pub.n);
- }
- */
- void
- printpublic(int fd)
- {
- fprint(fd, "%d %.10B %.10B\n", mpsignif(key->pub.n), key->pub.ek, key->pub.n);
- }
- void
- writefile(char *fmt, int perm, void (*fn)(int))
- {
- int fd;
- char *s;
- s = smprint(fmt, base);
- if(s == nil)
- sysfatal("smprint: %r");
- if((fd = create(s, OWRITE, perm)) < 0)
- sysfatal("create %s: %r", s);
- (*fn)(fd);
- close(fd);
- free(s);
- }
- void
- main(int argc, char **argv)
- {
- fmtinstall('B', mpfmt);
- ARGBEGIN{
- default:
- usage();
- }ARGEND
- switch(argc){
- default:
- usage();
- case 1:
- base = argv[0];
- case 0:
- break;
- }
- do
- key = rsagen(1024, 6, 0);
- while(mpsignif(key->pub.n) != 1024);
- writefile("%s.secret", 0600, printsecret);
- writefile("%s.secret.factotum", 0600, printsecretfactotum);
- writefile("%s.public", 0666, printpublic);
- // writefile("%s.public10", 0666, printpublic10);
- }
|