diff options
Diffstat (limited to 'appl/cmd/auth/rsagen.b')
| -rw-r--r-- | appl/cmd/auth/rsagen.b | 44 |
1 files changed, 21 insertions, 23 deletions
diff --git a/appl/cmd/auth/rsagen.b b/appl/cmd/auth/rsagen.b index 48fcba6d..a1a4477c 100644 --- a/appl/cmd/auth/rsagen.b +++ b/appl/cmd/auth/rsagen.b @@ -5,12 +5,8 @@ include "sys.m"; include "draw.m"; -include "ipints.m"; - ipints: IPints; - IPint: import ipints; - -include "crypt.m"; - crypt: Crypt; +include "keyring.m"; + kr: Keyring; include "arg.m"; @@ -22,8 +18,7 @@ Rsagen: module init(nil: ref Draw->Context, args: list of string) { sys = load Sys Sys->PATH; - ipints = load IPints IPints->PATH; - crypt = load Crypt Crypt->PATH; + kr = load Keyring Keyring->PATH; arg := load Arg Arg->PATH; arg->init(args); @@ -48,31 +43,34 @@ init(nil: ref Draw->Context, args: list of string) arg->usage(); arg = nil; - sk := crypt->rsagen(nbits, 6, 0); + sk := kr->genSK("rsa", "", nbits); if(sk == nil) error("unable to generate key"); + s := kr->sktoattr(sk); + # need to fix the attr interface so the following isn't needed: + s = skip(s, "alg"); + s = skip(s, "owner"); if(tag != nil) tag = " "+tag; - s := add("ek", sk.pk.ek); - s += add("n", sk.pk.n); - s += add("!dk", sk.dk); - s += add("!p", sk.p); - s += add("!q", sk.q); - s += add("!kp", sk.kp); - s += add("!kq", sk.kq); - s += add("!c2", sk.c2); - a := sys->aprint("key proto=rsa%s size=%d%s\n", tag, sk.pk.n.bits(), s); + a := sys->aprint("key proto=rsa%s size=%d %s\n", tag, nbits, s); if(sys->write(sys->fildes(1), a, len a) != len a) error(sys->sprint("error writing key: %r")); } -error(s: string) +skip(s: string, attr: string): string { - sys->fprint(sys->fildes(2), "rsagen: %s\n", s); - raise "fail:error"; + for(i := 0; i < len s && s[i] != ' '; i++) + {} + if(i >= len s) + return s; + (nf, fld) := sys->tokenize(s[0:i], "="); + if(nf == 2 && hd fld == attr) + s = s[i+1:]; + return s; } -add(name: string, b: ref IPint): string +error(s: string) { - return " "+name+"="+b.iptostr(16); + sys->fprint(sys->fildes(2), "rsagen: %s\n", s); + raise "fail:error"; } |
