Codebase list libcryptx-perl / 419d3a8
xs cosmetics Karel Miko 4 years ago
1 changed file(s) with 18 addition(s) and 12 deletion(s). Raw diff Collapse all Expand all
400400 STRLEN len;
401401 unsigned char *out_data;
402402 mp_int mpi;
403 mp_err merr;
404
405 LTC_UNUSED_PARAM(merr);
406403
407404 if (in == NULL) XSRETURN_UNDEF;
408 if (mp_init(&mpi) != CRYPT_OK) XSRETURN_UNDEF;
405 if (mp_init(&mpi) != MP_OKAY) XSRETURN_UNDEF;
409406 if (strlen(in) == 0) {
410407 RETVAL = newSVpvn("", 0);
411408 }
419416 SvPOK_only(RETVAL);
420417 SvCUR_set(RETVAL, len);
421418 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 }
423423 }
424424 }
425425 else {
442442 mp_err merr;
443443 int digits = 0;
444444
445 LTC_UNUSED_PARAM(merr);
446
447445 if (!SvPOK(in) || radix < 2 || radix > 64) XSRETURN_UNDEF;
448446 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;
450448 if (len == 0) {
451449 RETVAL = newSVpvn("", 0);
452450 }
453451 else {
454452 if (mp_read_unsigned_bin(&mpi, in_data, (unsigned long)len) == CRYPT_OK) {
455453 merr = mp_copy(&mpi, &tmp);
456 while (mp_iszero(&tmp) == MP_NO) {
454 while (merr == MP_OKAY && mp_iszero(&tmp) == MP_NO) {
457455 merr = mp_div_d(&tmp, (mp_digit)radix, &tmp, &d);
458456 digits++;
459457 }
460 if (digits == 0) {
458 if (merr != MP_OKAY) {
459 RETVAL = newSVpvn(NULL, 0); /* undef */
460 }
461 else if (digits == 0) {
461462 RETVAL = newSVpvn("", 0);
462463 }
463464 else {
464465 RETVAL = NEWSV(0, digits + 2); /* +2 for sign and NUL byte */
465466 SvPOK_only(RETVAL);
466467 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 }
469475 }
470476 }
471477 else {