xs cosmetics
Karel Miko
4 years ago
400 | 400 | STRLEN len; |
401 | 401 | unsigned char *out_data; |
402 | 402 | mp_int mpi; |
403 | mp_err merr; | |
404 | ||
405 | LTC_UNUSED_PARAM(merr); | |
406 | 403 | |
407 | 404 | if (in == NULL) XSRETURN_UNDEF; |
408 | if (mp_init(&mpi) != CRYPT_OK) XSRETURN_UNDEF; | |
405 | if (mp_init(&mpi) != MP_OKAY) XSRETURN_UNDEF; | |
409 | 406 | if (strlen(in) == 0) { |
410 | 407 | RETVAL = newSVpvn("", 0); |
411 | 408 | } |
419 | 416 | SvPOK_only(RETVAL); |
420 | 417 | SvCUR_set(RETVAL, len); |
421 | 418 | out_data = (unsigned char *)SvPVX(RETVAL); |
422 | merr = mp_to_unsigned_bin(&mpi, out_data); | |
419 | if (mp_to_unsigned_bin(&mpi, out_data) != MP_OKAY) { | |
420 | SvREFCNT_dec(RETVAL); | |
421 | RETVAL = newSVpvn(NULL, 0); /* undef */ | |
422 | } | |
423 | 423 | } |
424 | 424 | } |
425 | 425 | else { |
442 | 442 | mp_err merr; |
443 | 443 | int digits = 0; |
444 | 444 | |
445 | LTC_UNUSED_PARAM(merr); | |
446 | ||
447 | 445 | if (!SvPOK(in) || radix < 2 || radix > 64) XSRETURN_UNDEF; |
448 | 446 | in_data = (unsigned char *) SvPVbyte(in, len); |
449 | merr = mp_init_multi(&mpi, &tmp, NULL); | |
447 | if (mp_init_multi(&mpi, &tmp, NULL) != MP_OKAY) XSRETURN_UNDEF; | |
450 | 448 | if (len == 0) { |
451 | 449 | RETVAL = newSVpvn("", 0); |
452 | 450 | } |
453 | 451 | else { |
454 | 452 | if (mp_read_unsigned_bin(&mpi, in_data, (unsigned long)len) == CRYPT_OK) { |
455 | 453 | merr = mp_copy(&mpi, &tmp); |
456 | while (mp_iszero(&tmp) == MP_NO) { | |
454 | while (merr == MP_OKAY && mp_iszero(&tmp) == MP_NO) { | |
457 | 455 | merr = mp_div_d(&tmp, (mp_digit)radix, &tmp, &d); |
458 | 456 | digits++; |
459 | 457 | } |
460 | if (digits == 0) { | |
458 | if (merr != MP_OKAY) { | |
459 | RETVAL = newSVpvn(NULL, 0); /* undef */ | |
460 | } | |
461 | else if (digits == 0) { | |
461 | 462 | RETVAL = newSVpvn("", 0); |
462 | 463 | } |
463 | 464 | else { |
464 | 465 | RETVAL = NEWSV(0, digits + 2); /* +2 for sign and NUL byte */ |
465 | 466 | SvPOK_only(RETVAL); |
466 | 467 | out_data = SvPVX(RETVAL); |
467 | merr = mp_toradix(&mpi, out_data, radix); | |
468 | SvCUR_set(RETVAL, strlen(out_data)); | |
468 | if (mp_toradix(&mpi, out_data, radix) == MP_OKAY) { | |
469 | SvCUR_set(RETVAL, strlen(out_data)); | |
470 | } | |
471 | else { | |
472 | SvREFCNT_dec(RETVAL); | |
473 | RETVAL = newSVpvn(NULL, 0); /* undef */ | |
474 | } | |
469 | 475 | } |
470 | 476 | } |
471 | 477 | else { |