Mercurial > dropbear
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); |