@@ -66,11 +66,10 @@ int rand_prime(void *N, long len, prng_state *prng, int wprng);
6666typedef struct ltc_rsa_parameters {
6767 /** saltLength for PSS */
6868 unsigned long saltlen ;
69- /** lparam hash for OAEP
70- * resp.
71- * signature hash for PSS
72- * and MGF hash algorithms */
73- const char * hash_alg , * mgf1_hash_alg ;
69+ /** Hash algorithm index for OAEP/PSS, -1 if unset */
70+ int hash_idx ;
71+ /** MGF1 hash algorithm index, -1 if unset */
72+ int mgf1_hash_idx ;
7473} ltc_rsa_parameters ;
7574
7675/** RSA key */
@@ -152,44 +151,44 @@ int rsa_verify_hash_v2(const unsigned char *sig, unsigned long siglen,
152151 const rsa_key * key );
153152
154153/* These use PKCS #1 v2.0 padding */
155- #define ltc_rsa_encrypt_key (in , inlen , out , outlen , lp , lplen , prng_ , prng_idx , hash_idx , key ) \
154+ #define ltc_rsa_encrypt_key (in , inlen , out , outlen , lp , lplen , prng_ , prng_idx , hash_idx_ , key ) \
156155 rsa_encrypt_key_v2(in, inlen, out, outlen, \
157156 &(ltc_rsa_op_parameters){ \
158157 .u.crypt.lparam = lp, \
159158 .u.crypt.lparamlen = lplen,\
160159 .prng = prng_, \
161160 .wprng = prng_idx, \
162- .params.mgf1_hash_alg = hash_is_valid(hash_idx) == CRYPT_OK ? hash_descriptor[hash_idx].name : NULL , \
163- .params.hash_alg = hash_is_valid( hash_idx) == CRYPT_OK ? hash_descriptor[hash_idx].name : NULL , \
161+ .params.mgf1_hash_idx = hash_idx_ , \
162+ .params.hash_idx = hash_idx_ , \
164163 .padding = LTC_PKCS_1_OAEP, \
165164 }, key)
166165
167- #define ltc_rsa_decrypt_key (in , inlen , out , outlen , lp , lplen , hash_idx , stat , key ) \
166+ #define ltc_rsa_decrypt_key (in , inlen , out , outlen , lp , lplen , hash_idx_ , stat , key ) \
168167 rsa_decrypt_key_v2(in, inlen, out, outlen, \
169168 &(ltc_rsa_op_parameters){ \
170169 .u.crypt.lparam = lp, \
171170 .u.crypt.lparamlen = lplen,\
172- .params.mgf1_hash_alg = hash_is_valid(hash_idx) == CRYPT_OK ? hash_descriptor[hash_idx].name : NULL , \
173- .params.hash_alg = hash_is_valid( hash_idx) == CRYPT_OK ? hash_descriptor[hash_idx].name : NULL , \
171+ .params.mgf1_hash_idx = hash_idx_ , \
172+ .params.hash_idx = hash_idx_ , \
174173 .padding = LTC_PKCS_1_OAEP, \
175174 }, stat, key)
176175
177- #define ltc_rsa_sign_hash (hash , hashlen , sig , siglen , prng_ , prng_idx , hash_idx , saltlen_ , key ) \
176+ #define ltc_rsa_sign_hash (hash , hashlen , sig , siglen , prng_ , prng_idx , hash_idx_ , saltlen_ , key ) \
178177 rsa_sign_hash_v2(hash, hashlen, sig, siglen, \
179178 &(ltc_rsa_op_parameters){ \
180179 .prng = prng_, \
181180 .wprng = prng_idx, \
182- .params.mgf1_hash_alg = hash_is_valid(hash_idx) == CRYPT_OK ? hash_descriptor[hash_idx].name : NULL , \
183- .params.hash_alg = hash_is_valid( hash_idx) == CRYPT_OK ? hash_descriptor[hash_idx].name : NULL , \
181+ .params.mgf1_hash_idx = hash_idx_ , \
182+ .params.hash_idx = hash_idx_ , \
184183 .params.saltlen = saltlen_, \
185184 .padding = LTC_PKCS_1_PSS, \
186185 }, key)
187186
188- #define ltc_rsa_verify_hash (sig , siglen , hash , hashlen , hash_idx , saltlen_ , stat , key ) \
187+ #define ltc_rsa_verify_hash (sig , siglen , hash , hashlen , hash_idx_ , saltlen_ , stat , key ) \
189188 rsa_verify_hash_v2(sig, siglen, hash, hashlen, \
190189 &(ltc_rsa_op_parameters){ \
191- .params.mgf1_hash_alg = hash_is_valid(hash_idx) == CRYPT_OK ? hash_descriptor[hash_idx].name : NULL , \
192- .params.hash_alg = hash_is_valid( hash_idx) == CRYPT_OK ? hash_descriptor[hash_idx].name : NULL , \
190+ .params.mgf1_hash_idx = hash_idx_ , \
191+ .params.hash_idx = hash_idx_ , \
193192 .params.saltlen = saltlen_, \
194193 .padding = LTC_PKCS_1_PSS, \
195194 }, stat, key)
0 commit comments