Skip to content

Commit aca515c

Browse files
committed
ecc_get_set_by_name
1 parent 0005566 commit aca515c

File tree

2 files changed

+22
-10
lines changed

2 files changed

+22
-10
lines changed

src/headers/tomcrypt_pk.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ int ecc_test(void);
339339
void ecc_sizes(int *low, int *high);
340340
int ecc_get_size(ecc_key *key);
341341

342-
const ltc_ecc_set_type *ecc_get_set(const char *curve_name);
342+
int ecc_get_set_by_name(const char* name, const ltc_ecc_set_type** dp);
343343
int ecc_set_dp(const ltc_ecc_set_type *set, ecc_key *key);
344344
int ecc_generate_key(prng_state *prng, int wprng, ecc_key *key);
345345
int ecc_set_key(const unsigned char *in, unsigned long inlen, int type, ecc_key *key);

src/pk/ecc/ecc_set_dp.c

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,32 +51,44 @@ int ecc_set_dp(const ltc_ecc_set_type *set, ecc_key *key)
5151

5252
int ecc_set_dp_size(int size, ecc_key *key)
5353
{
54+
const ltc_ecc_set_type *dp = NULL;
55+
int err;
56+
5457
/* for compatibility with libtomcrypt-1.17 the sizes below must match the specific curves */
5558
if (size <= 14) {
56-
return ecc_set_dp(ecc_get_set("SECP112R1"), key);
59+
if ((err = ecc_get_set_by_name("SECP112R1", &dp)) != CRYPT_OK) return err;
60+
return ecc_set_dp(dp, key);
5761
}
5862
else if (size <= 16) {
59-
return ecc_set_dp(ecc_get_set("SECP128R1"), key);
63+
if ((err = ecc_get_set_by_name("SECP128R1", &dp)) != CRYPT_OK) return err;
64+
return ecc_set_dp(dp, key);
6065
}
6166
else if (size <= 20) {
62-
return ecc_set_dp(ecc_get_set("SECP160R1"), key);
67+
if ((err = ecc_get_set_by_name("SECP160R1", &dp)) != CRYPT_OK) return err;
68+
return ecc_set_dp(dp, key);
6369
}
6470
else if (size <= 24) {
65-
return ecc_set_dp(ecc_get_set("SECP192R1"), key);
71+
if ((err = ecc_get_set_by_name("SECP192R1", &dp)) != CRYPT_OK) return err;
72+
return ecc_set_dp(dp, key);
6673
}
6774
else if (size <= 28) {
68-
return ecc_set_dp(ecc_get_set("SECP224R1"), key);
75+
if ((err = ecc_get_set_by_name("SECP224R1", &dp)) != CRYPT_OK) return err;
76+
return ecc_set_dp(dp, key);
6977
}
7078
else if (size <= 32) {
71-
return ecc_set_dp(ecc_get_set("SECP256R1"), key);
79+
if ((err = ecc_get_set_by_name("SECP256R1", &dp)) != CRYPT_OK) return err;
80+
return ecc_set_dp(dp, key);
7281
}
7382
else if (size <= 48) {
74-
return ecc_set_dp(ecc_get_set("SECP384R1"), key);
83+
if ((err = ecc_get_set_by_name("SECP384R1", &dp)) != CRYPT_OK) return err;
84+
return ecc_set_dp(dp, key);
7585
}
7686
else if (size <= 66) {
77-
return ecc_set_dp(ecc_get_set("SECP521R1"), key);
87+
if ((err = ecc_get_set_by_name("SECP521R1", &dp)) != CRYPT_OK) return err;
88+
return ecc_set_dp(dp, key);
7889
}
79-
return CRYPT_INVALID_KEYSIZE;
90+
91+
return CRYPT_INVALID_ARG;
8092
}
8193

8294
#endif

0 commit comments

Comments
 (0)