Skip to content

Commit b9a7582

Browse files
committed
add rsa_init()
1 parent 50584ac commit b9a7582

File tree

7 files changed

+29
-14
lines changed

7 files changed

+29
-14
lines changed

src/headers/tomcrypt_private.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,11 @@ int pk_get_oid(enum ltc_oid_id id, const char **st);
225225
int pk_oid_str_to_num(const char *OID, unsigned long *oid, unsigned long *oidlen);
226226
int pk_oid_num_to_str(const unsigned long *oid, unsigned long oidlen, char *OID, unsigned long *outlen);
227227

228+
/* ---- DH Routines ---- */
229+
#ifdef LTC_MRSA
230+
int rsa_init(rsa_key *key);
231+
#endif /* LTC_MRSA */
232+
228233
/* ---- DH Routines ---- */
229234
#ifdef LTC_MDH
230235
extern const ltc_dh_set_type ltc_dh_sets[];

src/pk/rsa/rsa_import.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ int rsa_import(const unsigned char *in, unsigned long inlen, rsa_key *key)
3434
LTC_ARGCHK(ltc_mp.name != NULL);
3535

3636
/* init key */
37-
if ((err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ,
38-
&key->dP, &key->qP, &key->p, &key->q, NULL)) != CRYPT_OK) {
37+
if ((err = rsa_init(key)) != CRYPT_OK) {
3938
return err;
4039
}
4140

@@ -113,7 +112,7 @@ int rsa_import(const unsigned char *in, unsigned long inlen, rsa_key *key)
113112
goto LBL_FREE;
114113

115114
LBL_ERR:
116-
mp_clear_multi(key->d, key->e, key->N, key->dQ, key->dP, key->qP, key->p, key->q, NULL);
115+
rsa_free(key);
117116

118117
LBL_FREE:
119118
if (tmpbuf != NULL) {

src/pk/rsa/rsa_import_pkcs8.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,9 @@ int rsa_import_pkcs8(const unsigned char *in, unsigned long inlen,
7878
buf2 = XMALLOC(buf2len);
7979
if (buf2 == NULL) { err = CRYPT_MEM; goto LBL_FREE1; }
8080

81+
if ((err = mp_init_multi(&zero, &iter, NULL)) != CRYPT_OK) { goto LBL_FREE2; }
8182
/* init key */
82-
err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, &key->dP, &key->qP, &key->p, &key->q, &zero, &iter, NULL);
83-
if (err != CRYPT_OK) { goto LBL_FREE2; }
83+
if ((err = rsa_init(key)) != CRYPT_OK) { goto LBL_FREE3; }
8484

8585
/* try to decode encrypted priv key */
8686
if ((err = pkcs8_decode_flexi(in, inlen, passwd, passwdlen, &l)) != CRYPT_OK) {
@@ -117,13 +117,14 @@ int rsa_import_pkcs8(const unsigned char *in, unsigned long inlen,
117117
if (err != CRYPT_OK) { goto LBL_ERR; }
118118
key->type = PK_PRIVATE;
119119
err = CRYPT_OK;
120-
goto LBL_FREE2;
120+
goto LBL_FREE3;
121121

122122
LBL_ERR:
123123
rsa_free(key);
124-
LBL_FREE2:
125-
if (l) der_free_sequence_flexi(l);
124+
LBL_FREE3:
126125
mp_clear_multi(iter, zero, NULL);
126+
if (l) der_free_sequence_flexi(l);
127+
LBL_FREE2:
127128
XFREE(buf2);
128129
LBL_FREE1:
129130
XFREE(buf1);

src/pk/rsa/rsa_import_x509.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@ int rsa_import_x509(const unsigned char *in, unsigned long inlen, rsa_key *key)
4040
LTC_ARGCHK(ltc_mp.name != NULL);
4141

4242
/* init key */
43-
if ((err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ,
44-
&key->dP, &key->qP, &key->p, &key->q, NULL)) != CRYPT_OK) {
43+
if ((err = rsa_init(key)) != CRYPT_OK) {
4544
return err;
4645
}
4746

src/pk/rsa/rsa_free.c renamed to src/pk/rsa/rsa_key.c

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,24 @@
99
#include "tomcrypt_private.h"
1010

1111
/**
12-
@file rsa_free.c
12+
@file rsa_key.c
1313
Free an RSA key, Tom St Denis
14+
Basic operations on an RSA key, Steffen Jaeckel
1415
*/
1516

1617
#ifdef LTC_MRSA
1718

19+
/**
20+
Init an RSA key
21+
@param key The RSA key to free
22+
@return CRYPT_OK if successful
23+
*/
24+
int rsa_init(rsa_key *key)
25+
{
26+
LTC_ARGCHK(key != NULL);
27+
return mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, &key->dP, &key->qP, &key->p, &key->q, NULL);
28+
}
29+
1830
/**
1931
Free an RSA key from memory
2032
@param key The RSA key to free

src/pk/rsa/rsa_make_key.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ int rsa_make_key(prng_state *prng, int wprng, int size, long e, rsa_key *key)
6868
if ((err = mp_lcm( tmp1, tmp2, tmp1)) != CRYPT_OK) { goto cleanup; } /* tmp1 = lcm(p-1, q-1) */
6969

7070
/* make key */
71-
if ((err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, &key->dP, &key->qP, &key->p, &key->q, NULL)) != CRYPT_OK) {
71+
if ((err = rsa_init(key)) != CRYPT_OK) {
7272
goto errkey;
7373
}
7474

src/pk/rsa/rsa_set.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ int rsa_set_key(const unsigned char *N, unsigned long Nlen,
3535
LTC_ARGCHK(e != NULL);
3636
LTC_ARGCHK(ltc_mp.name != NULL);
3737

38-
err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, &key->dP, &key->qP, &key->p, &key->q, NULL);
39-
if (err != CRYPT_OK) return err;
38+
if ((err = rsa_init(key)) != CRYPT_OK) return err;
4039

4140
if ((err = mp_read_unsigned_bin(key->N , (unsigned char *)N , Nlen)) != CRYPT_OK) { goto LBL_ERR; }
4241
if ((err = mp_read_unsigned_bin(key->e , (unsigned char *)e , elen)) != CRYPT_OK) { goto LBL_ERR; }

0 commit comments

Comments
 (0)