|  | #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/dsa2ssh [-c comment] [file]\n"); | 
|  | exits("usage"); | 
|  | } | 
|  |  | 
|  | void | 
|  | main(int argc, char **argv) | 
|  | { | 
|  | DSApriv *k; | 
|  | char *comment; | 
|  | uchar buf[8192], *p; | 
|  |  | 
|  | fmtinstall('B', mpfmt); | 
|  | fmtinstall('[', encodefmt); | 
|  | comment = ""; | 
|  | ARGBEGIN{ | 
|  | case 'c': | 
|  | comment = EARGF(usage()); | 
|  | break; | 
|  | default: | 
|  | usage(); | 
|  | }ARGEND | 
|  |  | 
|  | if(argc > 1) | 
|  | usage(); | 
|  |  | 
|  | if((k = getdsakey(argc, argv, 0, nil)) == nil) | 
|  | sysfatal("%r"); | 
|  |  | 
|  | p = buf; | 
|  | p = put4(p, 7); | 
|  | p = putn(p, "ssh-dss", 7); | 
|  | p = putmp2(p, k->pub.p); | 
|  | p = putmp2(p, k->pub.q); | 
|  | p = putmp2(p, k->pub.alpha); | 
|  | p = putmp2(p, k->pub.key); | 
|  | print("ssh-dss %.*[ %s\n", p-buf, buf, comment); | 
|  | exits(nil); | 
|  | } |