Digest-SHA3
view release on metacpan or search on metacpan
RETVAL
void
add(self, ...)
SV * self
PREINIT:
int i;
UCHR *data;
STRLEN len;
SHA3 *state;
PPCODE:
if ((state = getSHA3(aTHX_ self)) == NULL)
XSRETURN_UNDEF;
for (i = 1; i < items; i++) {
data = (UCHR *) (SvPVbyte(ST(i), len));
while (len > MAX_WRITE_SIZE) {
shawrite(data, MAX_WRITE_SIZE << 3, state);
data += MAX_WRITE_SIZE;
len -= MAX_WRITE_SIZE;
}
shawrite(data, (ULNG) len << 3, state);
RETVAL
void
_addfilebin(self, f)
SV * self
PerlIO * f
PREINIT:
SHA3 *state;
int n;
UCHR in[IO_BUFFER_SIZE];
PPCODE:
if (!f || (state = getSHA3(aTHX_ self)) == NULL)
XSRETURN_UNDEF;
while ((n = (int) PerlIO_read(f, in, sizeof(in))) > 0)
shawrite(in, (ULNG) n << 3, state);
XSRETURN(1);
void
_addfileuniv(self, f)
SV * self
PerlIO * f
PREINIT:
UCHR c;
int n;
int cr = 0;
UCHR *src, *dst;
UCHR in[IO_BUFFER_SIZE+1];
SHA3 *state;
PPCODE:
if (!f || (state = getSHA3(aTHX_ self)) == NULL)
XSRETURN_UNDEF;
while ((n = (int) PerlIO_read(f, in+1, IO_BUFFER_SIZE)) > 0) {
for (dst = in, src = in + 1; n; n--) {
c = *src++;
if (!cr) {
if (c == '\015')
cr = 1;
else
*dst++ = c;
( run in 1.626 second using v1.01-cache-2.11-cpan-71847e10f99 )