Codebase list libcryptx-perl / 0d41604
xs tuning Karel Miko 6 years ago
2 changed file(s) with 26 addition(s) and 20 deletion(s). Raw diff Collapse all Expand all
580580 mp_int mpi;
581581
582582 if (in == NULL || strlen(in) == 0) XSRETURN_UNDEF;
583
584583 if (mp_init(&mpi) != CRYPT_OK) XSRETURN_UNDEF;
585584
586585 if (mp_read_radix(&mpi, in, radix) == CRYPT_OK) {
623622 }
624623 mp_clear(&tmp);
625624
626 RETVAL = NEWSV(0, digits + 1);
627 SvPOK_only(RETVAL);
628 out_data = SvPVX(RETVAL);
629 mp_toradix(&mpi, out_data, radix);
630 SvCUR_set(RETVAL, digits);
625 if (digits == 0) {
626 RETVAL = newSVpvn("", 0);
627 mp_clear(&mpi);
628 }
629 else {
630 RETVAL = NEWSV(0, digits + 2); /* +2 for sign and NUL byte */
631 SvPOK_only(RETVAL);
632 out_data = SvPVX(RETVAL);
633 mp_toradix(&mpi, out_data, radix);
634 SvCUR_set(RETVAL, strlen(out_data));
635 mp_clear(&mpi);
636 }
637 }
638 else {
631639 mp_clear(&mpi);
632 }
633 else {
634640 XSRETURN_UNDEF;
635641 }
636642 }
6767 {
6868 STRLEN in_len=0;
6969 unsigned char *in_buffer=NULL;
70 unsigned char entropy_buf[32];
70 unsigned char entropy_buf[40];
7171 int rv;
7272 if (SvOK(entropy)) {
7373 in_buffer = (unsigned char *) SvPVbyte(entropy, in_len);
7575 if (rv != CRYPT_OK) croak("FATAL: PRNG_add_entropy failed: %s", error_to_string(rv));
7676 }
7777 else {
78 if (rng_get_bytes(entropy_buf, 32, NULL) != 32) croak("FATAL: rng_get_bytes failed");
79 rv = self->desc->add_entropy(entropy_buf, 32, &self->state);
78 if (rng_get_bytes(entropy_buf, 40, NULL) != 40) croak("FATAL: rng_get_bytes failed");
79 rv = self->desc->add_entropy(entropy_buf, 40, &self->state);
8080 if (rv != CRYPT_OK) croak("FATAL: PRNG_add_entropy failed: %s", error_to_string(rv));
8181 }
8282 rv = self->desc->ready(&self->state);
8989 {
9090 int rv_len;
9191 unsigned char *rdata;
92 unsigned char entropy_buf[32];
92 unsigned char entropy_buf[40];
9393
9494 if (self->last_pid != curpid) {
95 rng_get_bytes(entropy_buf, 32, NULL);
96 self->desc->add_entropy(entropy_buf, 32, &self->state);
95 if (rng_get_bytes(entropy_buf, 40, NULL) != 40) croak("FATAL: rng_get_bytes failed");
96 self->desc->add_entropy(entropy_buf, 40, &self->state);
9797 self->desc->ready(&self->state);
9898 self->last_pid = curpid;
9999 }
117117 {
118118 int i;
119119 unsigned char rdata[4];
120 unsigned char entropy_buf[32];
120 unsigned char entropy_buf[40];
121121
122122 if (self->last_pid != curpid) {
123 rng_get_bytes(entropy_buf, 32, NULL);
124 self->desc->add_entropy(entropy_buf, 32, &self->state);
123 if (rng_get_bytes(entropy_buf, 40, NULL) != 40) croak("FATAL: rng_get_bytes failed");
124 self->desc->add_entropy(entropy_buf, 40, &self->state);
125125 self->desc->ready(&self->state);
126126 self->last_pid = curpid;
127127 }
140140 int i;
141141 unsigned long a, b; /* 32bit is enough */
142142 unsigned char rdata[7]; /* for double we need 53 bits */
143 unsigned char entropy_buf[32];
143 unsigned char entropy_buf[40];
144144 NV limit;
145145
146146 if (self->last_pid != curpid) {
147 rng_get_bytes(entropy_buf, 32, NULL);
148 self->desc->add_entropy(entropy_buf, 32, &self->state);
147 if (rng_get_bytes(entropy_buf, 40, NULL) != 40) croak("FATAL: rng_get_bytes failed");
148 self->desc->add_entropy(entropy_buf, 40, &self->state);
149149 self->desc->ready(&self->state);
150150 self->last_pid = curpid;
151151 }