Codebase list libcryptx-perl / 4d664c2
ECC key pair generation according to FIPS-186-4 (2) Karel Miko 10 years ago
1 changed file(s) with 4 addition(s) and 4 deletion(s). Raw diff Collapse all Expand all
5050 ecc_point *base;
5151 void *prime, *order, *a;
5252 unsigned char *buf;
53 int keysize;
53 int keysize, orderbits;
5454
5555 LTC_ARGCHK(key != NULL);
5656 LTC_ARGCHK(ltc_mp.name != NULL);
103103 * c/ if k not in [1, order-1] go to b/
104104 * e/ Q = k*G
105105 */
106 orderbits = mp_count_bits(order);
106107 do {
107 /* generate random k: 0 <= k < order */
108 if ((err = rand_bn_range(key->k, order, prng, wprng)) != CRYPT_OK) { goto errkey; }
109 } while (mp_iszero(key->k));
108 if ((err = rand_bn_bits(key->k, orderbits, prng, wprng)) != CRYPT_OK) { goto errkey; }
109 } while (mp_iszero(key->k) || mp_cmp(key->k, order) != LTC_MP_LT);
110110
111111 /* make the public key */
112112 if ((err = mp_read_radix(a, (char *)key->dp->A, 16)) != CRYPT_OK) { goto errkey; }