diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2025-03-21 21:48:53 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2025-03-21 21:48:53 -0400 |
| commit | 5ee185a4896e43c67b6d299becfa616da78fb9f4 (patch) | |
| tree | 183ceef2fd21230c89334d7d039255d1c86c5dca /stdlib/siphash.c | |
| parent | f4aaf7b73481248f6768302be688700a364a1af8 (diff) | |
Move stdlib into src/
Diffstat (limited to 'stdlib/siphash.c')
| -rw-r--r-- | stdlib/siphash.c | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/stdlib/siphash.c b/stdlib/siphash.c deleted file mode 100644 index 44e8b6eb..00000000 --- a/stdlib/siphash.c +++ /dev/null @@ -1,79 +0,0 @@ -#include <stddef.h> -#include <stdint.h> -#include <string.h> - -#include "siphash.h" -#include "util.h" - -public uint64_t TOMO_HASH_KEY[2] = {23, 42}; // Randomized in tomo_init() - -/* <MIT License> - Copyright (c) 2013 Marek Majkowski <marek@popcount.org> - Copyright (c) 2018 Samantha McVey <samantham@posteo.net> - Copyright (c) 2024 Bruce Hill <bruce@bruce-hill.com> - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - </MIT License> - - Original location: - https://github.com/majek/csiphash/ - - Original solution inspired by code from: - Samuel Neves (supercop/crypto_auth/siphash24/little) - djb (supercop/crypto_auth/siphash24/little2) - Jean-Philippe Aumasson (https://131002.net/siphash/siphash24.c) - - Extensive modifications for MoarVM by Samantha McVey - - Further modifications for Tomo by Bruce Hill -*/ - -#include "siphash-internals.h" - -PUREFUNC public uint64_t siphash24(const uint8_t *src, size_t src_sz) { - siphash sh; - if ((uint64_t)src % __alignof__(uint64_t) == 0) { -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wcast-align" - const uint64_t *in = (uint64_t*)src; - /* Find largest src_sz evenly divisible by 8 bytes. */ - const ptrdiff_t src_sz_nearest_8bits = ((ptrdiff_t)src_sz >> 3) << 3; - const uint64_t *goal = (uint64_t*)(src + src_sz_nearest_8bits); -#pragma GCC diagnostic pop - siphashinit(&sh, src_sz); - src_sz -= (size_t)src_sz_nearest_8bits; - while (in < goal) { - siphashadd64bits(&sh, *in); - in++; - } - return siphashfinish(&sh, (uint8_t *)in, src_sz); - } else { - const uint8_t *in = src; - siphashinit(&sh, src_sz); - while (src_sz >= 8) { - uint64_t in_64; - memcpy(&in_64, in, sizeof(uint64_t)); - siphashadd64bits(&sh, in_64); - in += 8; src_sz -= 8; - } - return siphashfinish(&sh, (uint8_t *)in, src_sz); - } -} - -// vim: ts=4 sw=0 et cino=L2,l1,(0,W4,m1,\:0 |
