// Copyright (c) 2012-2013 The Cryptonote developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #pragma once #if !defined(__cplusplus) #include #include #include #include #include "int-util.h" #if 0 static inline void *padd(void *p, size_t i) { return (char *) p + i; } static inline const void *cpadd(const void *p, size_t i) { return (const char *) p + i; } static inline void place_length(uint8_t *buffer, size_t bufsize, size_t length) { if (sizeof(size_t) == 4) { *(uint32_t*) padd(buffer, bufsize - 4) = swap32be(length); } else { *(uint64_t*) padd(buffer, bufsize - 8) = swap64be(length); } } #endif #pragma pack(push, 1) union hash_state { uint8_t b[200]; uint64_t w[25]; }; #pragma pack(pop) void hash_permutation(union hash_state *state); void hash_process(union hash_state *state, const uint8_t *buf, int count); #endif enum { HASH_SIZE = 32, HASH_DATA_AREA = 136 }; void cn_fast_hash(const void *data, int len, char *hash); void cn_slow_hash(const void *data, size_t length, char *hash); void hash_extra_blake(const void *data, size_t length, char *hash); void hash_extra_groestl(const void *data, size_t length, char *hash); void hash_extra_jh(const void *data, size_t length, char *hash); void hash_extra_skein(const void *data, size_t length, char *hash); void tree_hash(const char (*hashes)[HASH_SIZE], size_t count, char *root_hash);