comparison rsa.c @ 1692:1051e4eea25a

Update LibTomMath to 1.2.0 (#84) * update C files * update other files * update headers * update makefiles * remove mp_set/get_double() * use ltm 1.2.0 API * update ltm_desc * use bundled tommath if system-tommath is too old * XMALLOC etc. were changed to MP_MALLOC etc.
author Steffen Jaeckel <s@jaeckel.eu>
date Tue, 26 May 2020 17:36:47 +0200
parents ae41624c2198
children
comparison
equal deleted inserted replaced
1691:2d3745d58843 1692:1051e4eea25a
209 dropbear_assert(key != NULL); 209 dropbear_assert(key != NULL);
210 210
211 m_mp_init_multi(&rsa_mdash, &rsa_s, &rsa_em, NULL); 211 m_mp_init_multi(&rsa_mdash, &rsa_s, &rsa_em, NULL);
212 212
213 slen = buf_getint(buf); 213 slen = buf_getint(buf);
214 if (slen != (unsigned int)mp_unsigned_bin_size(key->n)) { 214 if (slen != (unsigned int)mp_ubin_size(key->n)) {
215 TRACE(("bad size")) 215 TRACE(("bad size"))
216 goto out; 216 goto out;
217 } 217 }
218 218
219 if (mp_read_unsigned_bin(&rsa_s, buf_getptr(buf, buf->len - buf->pos), 219 if (mp_from_ubin(&rsa_s, buf_getptr(buf, buf->len - buf->pos),
220 buf->len - buf->pos) != MP_OKAY) { 220 buf->len - buf->pos) != MP_OKAY) {
221 TRACE(("failed reading rsa_s")) 221 TRACE(("failed reading rsa_s"))
222 goto out; 222 goto out;
223 } 223 }
224 224
255 void buf_put_rsa_sign(buffer* buf, const dropbear_rsa_key *key, 255 void buf_put_rsa_sign(buffer* buf, const dropbear_rsa_key *key,
256 enum signature_type sigtype, const buffer *data_buf) { 256 enum signature_type sigtype, const buffer *data_buf) {
257 const char *name = NULL; 257 const char *name = NULL;
258 unsigned int nsize, ssize, namelen = 0; 258 unsigned int nsize, ssize, namelen = 0;
259 unsigned int i; 259 unsigned int i;
260 size_t written;
260 DEF_MP_INT(rsa_s); 261 DEF_MP_INT(rsa_s);
261 DEF_MP_INT(rsa_tmp1); 262 DEF_MP_INT(rsa_tmp1);
262 DEF_MP_INT(rsa_tmp2); 263 DEF_MP_INT(rsa_tmp2);
263 DEF_MP_INT(rsa_tmp3); 264 DEF_MP_INT(rsa_tmp3);
264 265
320 321
321 /* create the signature to return */ 322 /* create the signature to return */
322 name = signature_name_from_type(sigtype, &namelen); 323 name = signature_name_from_type(sigtype, &namelen);
323 buf_putstring(buf, name, namelen); 324 buf_putstring(buf, name, namelen);
324 325
325 nsize = mp_unsigned_bin_size(key->n); 326 nsize = mp_ubin_size(key->n);
326 327
327 /* string rsa_signature_blob length */ 328 /* string rsa_signature_blob length */
328 buf_putint(buf, nsize); 329 buf_putint(buf, nsize);
329 /* pad out s to same length as n */ 330 /* pad out s to same length as n */
330 ssize = mp_unsigned_bin_size(&rsa_s); 331 ssize = mp_ubin_size(&rsa_s);
331 dropbear_assert(ssize <= nsize); 332 dropbear_assert(ssize <= nsize);
332 for (i = 0; i < nsize-ssize; i++) { 333 for (i = 0; i < nsize-ssize; i++) {
333 buf_putbyte(buf, 0x00); 334 buf_putbyte(buf, 0x00);
334 } 335 }
335 336
336 if (mp_to_unsigned_bin(&rsa_s, buf_getwriteptr(buf, ssize)) != MP_OKAY) { 337 if (mp_to_ubin(&rsa_s, buf_getwriteptr(buf, ssize), ssize, &written) != MP_OKAY) {
337 dropbear_exit("RSA error"); 338 dropbear_exit("RSA error");
338 } 339 }
339 buf_incrwritepos(buf, ssize); 340 buf_incrwritepos(buf, written);
340 mp_clear(&rsa_s); 341 mp_clear(&rsa_s);
341 342
342 #if defined(DEBUG_RSA) && DEBUG_TRACE 343 #if defined(DEBUG_RSA) && DEBUG_TRACE
343 if (!debug_trace) { 344 if (!debug_trace) {
344 printhex("RSA sig", buf->data, buf->len); 345 printhex("RSA sig", buf->data, buf->len);
395 #endif 396 #endif
396 default: 397 default:
397 assert(0); 398 assert(0);
398 } 399 }
399 400
400 nsize = mp_unsigned_bin_size(key->n); 401
402 nsize = mp_ubin_size(key->n);
401 403
402 rsa_EM = buf_new(nsize); 404 rsa_EM = buf_new(nsize);
403 /* type byte */ 405 /* type byte */
404 buf_putbyte(rsa_EM, 0x00); 406 buf_putbyte(rsa_EM, 0x00);
405 buf_putbyte(rsa_EM, 0x01); 407 buf_putbyte(rsa_EM, 0x01);