#include "highwayhash.c"
-/*
-
-uint64_t HighwayHash64(const uint8_t* data, size_t size, const uint64_t key[4]);
-
-void HighwayHash128(const uint8_t* data, size_t size,
- const uint64_t key[4], uint64_t hash[2]);
-
-void HighwayHash256(const uint8_t* data, size_t size,
-const uint64_t key[4], uint64_t hash[4]);
- */
-
void process_key(pTHX_ AV *key_av, uint64_t *key) {
int i;
SV *elt;
if(av_len(key_av) + 1 != 4)
croak("Key for highway_hash must be a 4-element array");
for(i = 0 ; i < 4 ; i++) {
- elt = *av_fetch(key_av, i, false);
+ elt = *av_fetch(key_av, i, 0);
if(SvU64OK(elt))
key[i] = SvU64(elt);
else
}
}
-uint64_t highway_hash64(AV *key_av, char *bytes, uint64_t size) {
+uint64_t highway_hash64(AV *key_av, unsigned char *bytes, uint64_t size) {
dTHX;
uint64_t key[4];
process_key(aTHX_ key_av, key);
return HighwayHash64(bytes, size, key);
}
-AV* highway_hash128(AV *key_av, char *bytes, uint64_t size) {
+AV* highway_hash128(AV *key_av, unsigned char *bytes, uint64_t size) {
dTHX;
AV* result;
uint64_t key[4];
return result;
}
-AV* highway_hash256(AV *key_av, char *bytes, uint64_t size) {
+AV* highway_hash256(AV *key_av, unsigned char *bytes, uint64_t size) {
dTHX;
AV* result;
uint64_t key[4];
- uint64_t hash[2];
+ uint64_t hash[4];
process_key(aTHX_ key_av, key);
HighwayHash256(bytes, size, key, hash);
result = newAV();
}
MODULE = Digest::HighwayHash PACKAGE = Digest::HighwayHash
+PROTOTYPES: DISABLE
BOOT:
PERL_MATH_INT64_LOAD_OR_CROAK;
-uint64_t highway_hash64(AV *key_av, char *bytes, uint64_t length(bytes))
+uint64_t highway_hash64(AV *key_av, unsigned char *bytes, uint64_t length(bytes))
-AV* highway_hash128(AV *key_av, char *bytes, uint64_t length(bytes))
+AV* highway_hash128(AV *key_av, unsigned char *bytes, uint64_t length(bytes))
-AV* highway_hash256(AV *key_av, char *bytes, uint64_t length(bytes))
+AV* highway_hash256(AV *key_av, unsigned char *bytes, uint64_t length(bytes))