X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=sshecdsag.c;h=83eeeb0339f2770793eb82ccdc89404b3ec227f9;hb=19aefec3e8b33f12e6edbead1028c07b5f486ce0;hp=61376d886047fc13fe878f4a9881355db6b2561b;hpb=76a4b576e58fa3b245b02f9fbb052e4651acbfa9;p=PuTTY.git diff --git a/sshecdsag.c b/sshecdsag.c index 61376d88..83eeeb03 100644 --- a/sshecdsag.c +++ b/sshecdsag.c @@ -12,15 +12,9 @@ int ec_generate(struct ec_key *key, int bits, progfn_t pfn, { struct ec_point *publicKey; - if (bits == 256) { - key->publicKey.curve = ec_p256(); - } else if (bits == 384) { - key->publicKey.curve = ec_p384(); - } else if (bits == 521) { - key->publicKey.curve = ec_p521(); - } else { + if (!ec_nist_alg_and_curve_by_bits(bits, &key->publicKey.curve, + &key->signalg)) return 0; - } key->privateKey = bignum_random_in_range(One, key->publicKey.curve->w.n); if (!key->privateKey) return 0; @@ -45,11 +39,9 @@ int ec_edgenerate(struct ec_key *key, int bits, progfn_t pfn, { struct ec_point *publicKey; - if (bits == 256) { - key->publicKey.curve = ec_ed25519(); - } else { + if (!ec_ed_alg_and_curve_by_bits(bits, &key->publicKey.curve, + &key->signalg)) return 0; - } { /* EdDSA secret keys are just 32 bytes of hash preimage; the