diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-02-06 04:25:38 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-02-06 04:25:38 +0100 |
commit | bbce9c0566da28911f0ce444d0fdca0fe4eb77b9 (patch) | |
tree | 159b5fd063d16539ea661052f8a48e6387b8295d | |
parent | 5256f4063e381bb7a6f175ea397202e93f8be4b1 (diff) |
rsagen: prefer 65537 as the default exponent when elen == 0, otherwise pick randomly
-rw-r--r-- | sys/src/cmd/auth/rsagen.c | 2 | ||||
-rw-r--r-- | sys/src/libsec/port/rsagen.c | 10 |
2 files changed, 8 insertions, 4 deletions
diff --git a/sys/src/cmd/auth/rsagen.c b/sys/src/cmd/auth/rsagen.c index ec6bbb0c7..7fd5e9078 100644 --- a/sys/src/cmd/auth/rsagen.c +++ b/sys/src/cmd/auth/rsagen.c @@ -42,7 +42,7 @@ main(int argc, char **argv) do{ if(key) rsaprivfree(key); - key = rsagen(bits, 6, 0); + key = rsagen(bits, 0, 0); }while(mpsignif(key->pub.n) != bits); s = smprint("key proto=rsa %s%ssize=%d ek=%B !dk=%B n=%B !p=%B !q=%B !kp=%B !kq=%B !c2=%B\n", diff --git a/sys/src/libsec/port/rsagen.c b/sys/src/libsec/port/rsagen.c index 31c06241c..01d242681 100644 --- a/sys/src/libsec/port/rsagen.c +++ b/sys/src/libsec/port/rsagen.c @@ -26,9 +26,13 @@ rsagen(int nlen, int elen, int rounds) // find an e relatively prime to phi t1 = mpnew(0); t2 = mpnew(0); - mprand(elen, genrandom, e); - if(mpcmp(e,mptwo) <= 0) - itomp(3, e); + if(elen == 0) + itomp(65537, e); + else { + mprand(elen, genrandom, e); + if(mpcmp(e,mptwo) <= 0) + itomp(3, e); + } // See Menezes et al. p.291 "8.8 Note (selecting primes)" for discussion // of the merits of various choices of primes and exponents. e=3 is a // common and recommended exponent, but doesn't necessarily work here |