Digest-Tiger

 view release on metacpan or  search on metacpan

Tiger.xs  view on Meta::CPAN


MODULE = Digest::Tiger		PACKAGE = Digest::Tiger
PROTOTYPES: DISABLE

void
hash(...)
  PREINIT:
    unsigned char *data;
    STRLEN len;
    word64 res[3];
  PPCODE:
    data = (unsigned char *)(SvPV(ST(0), len));
    tiger(data, len,  res);

    endian_swap(res);

    ST(0) = sv_2mortal(newSVpv( (char *) res, 24));
    XSRETURN(1);

void
hexhash(...)
  PREINIT:
    unsigned char *data;
    STRLEN len;
    word64 res[3];
    char hexhash_string[49];
  PPCODE:
    data = (unsigned char *)(SvPV(ST(0), len));
    tiger(data, len,  res);

    /* we don't need an endian swap */

    sprintf(hexhash_string, "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
            (byte)(res[0]),  (byte)(res[0]>>8),       (byte)(res[0]>>16),
            (byte)(res[0]>>24),  (byte)(res[0]>>32),  (byte)(res[0]>>40), 
            (byte)(res[0]>>48),  (byte)(res[0]>>56),  (byte)(res[1]), 
            (byte)(res[1]>>8),   (byte)(res[1]>>16),  (byte)(res[1]>>24), 



( run in 0.310 second using v1.01-cache-2.11-cpan-5511b514fd6 )