diff --git a/.gitignore b/.gitignore index 6ec7c82fbd..d334546546 100644 --- a/.gitignore +++ b/.gitignore @@ -141,3 +141,4 @@ dist/windows/Output # Core files generated by OpenBSD *.core .venv +venv/ diff --git a/librz/hash/meson.build b/librz/hash/meson.build index d422d8fd19..e1ea7fbf48 100644 --- a/librz/hash/meson.build +++ b/librz/hash/meson.build @@ -81,6 +81,7 @@ hash_plugins_list = [ 'crca_crc64we', 'crca_crc64xz', 'crca_crc64iso', + 'jenkins', 'xor8', 'xor16', 'xxhash32', @@ -130,6 +131,7 @@ rz_hash_sources = [ 'p/algo_murmur3_x64_128.c', 'p/algo_murmur3_x86_32.c', 'p/algo_murmur3_x86_128.c', + 'p/algo_jenkins.c', 'p/algo_xor8.c', 'p/algo_xor16.c', 'p/algo_xxhash32.c', diff --git a/librz/hash/p/algo_jenkins.c b/librz/hash/p/algo_jenkins.c new file mode 100644 index 0000000000..a1108e91ee --- /dev/null +++ b/librz/hash/p/algo_jenkins.c @@ -0,0 +1,115 @@ +// SPDX-FileCopyrightText: 2026 shessaanand +// SPDX-License-Identifier: LGPL-3.0-only + +#include +#include + +#include + +typedef ut32 RzJenkins; + +#define RZ_HASH_JENKINS_DIGEST_SIZE 4 +#define RZ_HASH_JENKINS_BLOCK_LENGTH 0 + +static void *plugin_jenkins_context_new() { + return RZ_NEW0(RzJenkins); +} + +static void plugin_jenkins_context_free(void *context) { + free(context); +} + +static RzHashSize plugin_jenkins_digest_size(void *context) { + return RZ_HASH_JENKINS_DIGEST_SIZE; +} + +static RzHashSize plugin_jenkins_block_size(void *context) { + return RZ_HASH_JENKINS_BLOCK_LENGTH; +} + +static bool plugin_jenkins_init(void *context) { + rz_return_val_if_fail(context, false); + + RzJenkins *ctx = (RzJenkins *)context; + *ctx = 0; + + return true; +} + +static bool plugin_jenkins_update(void *context, const ut8 *data, ut64 size) { + rz_return_val_if_fail(context, false); + if (size > 0) { + rz_return_val_if_fail(data, false); + } + RzJenkins *ctx = (RzJenkins *)context; + ut32 hash = *ctx; + + for (ut64 i = 0; i < size; ++i) { + hash += data[i]; + hash += (hash << 10); + hash ^= (hash >> 6); + } + + *ctx = hash; + return true; +} + +static bool plugin_jenkins_final(void *context, ut8 *digest) { + rz_return_val_if_fail(context && digest, false); + + RzJenkins *ctx = (RzJenkins *)context; + ut32 hash = *ctx; + + hash += (hash << 3); + hash ^= (hash >> 11); + hash += (hash << 15); + + rz_write_be32(digest, hash); + return true; +} + +static bool plugin_jenkins_small_block(const ut8 *data, ut64 size, ut8 **digest, RzHashSize *digest_size) { + rz_return_val_if_fail(digest, false); + if (size > 0) { + rz_return_val_if_fail(data, false); + } + ut8 *dgst = malloc(RZ_HASH_JENKINS_DIGEST_SIZE); + if (!dgst) { + return false; + } + + RzJenkins ctx = { 0 }; + plugin_jenkins_init(&ctx); + plugin_jenkins_update(&ctx, data, size); + plugin_jenkins_final(&ctx, dgst); + + *digest = dgst; + if (digest_size) { + *digest_size = RZ_HASH_JENKINS_DIGEST_SIZE; + } + return true; +} + +RzHashPlugin rz_hash_plugin_jenkins = { + .name = "jenkins", + .license = "LGPL3", + .author = "shessaanand", + .description = "Jenkins non-cryptographic hash", + .support_hmac = false, + .context_new = plugin_jenkins_context_new, + .context_free = plugin_jenkins_context_free, + .digest_size = plugin_jenkins_digest_size, + .block_size = plugin_jenkins_block_size, + .init = plugin_jenkins_init, + .update = plugin_jenkins_update, + .final = plugin_jenkins_final, + .small_block = plugin_jenkins_small_block, +}; + +#ifndef RZ_PLUGIN_INCORE +RZ_API RzLibStruct rizin_plugin = { + .type = RZ_LIB_TYPE_HASH, + .data = &rz_hash_plugin_jenkins, + .version = RZ_VERSION +}; +#endif diff --git a/test/db/cmd/cmd_list b/test/db/cmd/cmd_list index 2fcd9b25fd..21e68c7b34 100644 --- a/test/db/cmd/cmd_list +++ b/test/db/cmd/cmd_list @@ -440,6 +440,7 @@ fletcher16 LGPL3 deroad Fletcher16 checksum fletcher32 LGPL3 deroad Fletcher32 checksum fletcher64 LGPL3 deroad Fletcher64 checksum fletcher8 LGPL3 deroad Fletcher8 checksum +jenkins LGPL3 shessaanand Jenkins non-cryptographic hash keccak-256 BSD-3 Andrey Jivsov KECCAK-256 cryptographic hash keccak-384 BSD-3 Andrey Jivsov KECCAK-384 cryptographic hash keccak-512 BSD-3 Andrey Jivsov KECCAK-512 cryptographic hash @@ -466,7 +467,7 @@ xor16 LGPL3 deroad XOR-16 checksum xor8 LGPL3 deroad XOR-8 checksum xxhash32 LGPL3 deroad xxHash32 non-cryptographic hash xxhash64 LGPL3 cheese-cakee xxHash64 non-cryptographic hash -[{"name":"adler32","license":"LGPL3","author":"deroad","description":"Adler-32 checksum"},{"name":"blake2b","license":"LGPL3","author":"Farhan-25","description":"BLAKE2b cryptographic hash"},{"name":"blake2bp","license":"LGPL3","author":"Farhan-25","description":"BLAKE2bp cryptographic hash"},{"name":"blake2s","license":"LGPL3","author":"Farhan-25","description":"BLAKE2s cryptographic hash"},{"name":"blake2sp","license":"LGPL3","author":"Farhan-25","description":"BLAKE2sp cryptographic hash"},{"name":"blake2xb","license":"LGPL3","author":"Farhan-25","description":"BLAKE2xb cryptographic hash"},{"name":"blake2xs","license":"LGPL3","author":"Farhan-25","description":"BLAKE2xs cryptographic hash"},{"name":"blake3","license":"CC0","author":"Samuel Neves,Jack O'Connor","description":"BLAKE3 cryptographic hash"},{"name":"crc15can","license":"LGPL3","author":"deroad","description":"CRC-15 CAN checksum"},{"name":"crc16","license":"LGPL3","author":"deroad","description":"CRC-16 IBM/ARC checksum"},{"name":"crc16augccitt","license":"LGPL3","author":"deroad","description":"CRC-16 AUG-CCITT checksum"},{"name":"crc16buypass","license":"LGPL3","author":"deroad","description":"CRC-16 BUYPASS checksum"},{"name":"crc16cdma2000","license":"LGPL3","author":"deroad","description":"CRC-16 CDMA-2000 checksum"},{"name":"crc16citt","license":"LGPL3","author":"deroad","description":"CRC-16 CITT checksum"},{"name":"crc16dds110","license":"LGPL3","author":"deroad","description":"CRC-16 DDS110 checksum"},{"name":"crc16dectr","license":"LGPL3","author":"deroad","description":"CRC-16 DECT-R checksum"},{"name":"crc16dectx","license":"LGPL3","author":"deroad","description":"CRC-16 DECT-X checksum"},{"name":"crc16dnp","license":"LGPL3","author":"deroad","description":"CRC-16 DNP checksum"},{"name":"crc16en13757","license":"LGPL3","author":"deroad","description":"CRC-16 EN-13757 checksum"},{"name":"crc16genibus","license":"LGPL3","author":"deroad","description":"CRC-16 GENIBUS checksum"},{"name":"crc16hdlc","license":"LGPL3","author":"deroad","description":"CRC-16 HDLC checksum"},{"name":"crc16kermit","license":"LGPL3","author":"deroad","description":"CRC-16 KERMIT checksum"},{"name":"crc16maxim","license":"LGPL3","author":"deroad","description":"CRC-16 MAXIM checksum"},{"name":"crc16mcrf4xx","license":"LGPL3","author":"deroad","description":"CRC-16 MCRF4XX checksum"},{"name":"crc16modbus","license":"LGPL3","author":"deroad","description":"CRC-16 MODBUS checksum"},{"name":"crc16riello","license":"LGPL3","author":"deroad","description":"CRC-16 RIELLO checksum"},{"name":"crc16t10dif","license":"LGPL3","author":"deroad","description":"CRC-16 T10-DIF checksum"},{"name":"crc16teledisk","license":"LGPL3","author":"deroad","description":"CRC-16 TELEDISK checksum"},{"name":"crc16tms37157","license":"LGPL3","author":"deroad","description":"CRC-16 TMS37157 checksum"},{"name":"crc16usb","license":"LGPL3","author":"deroad","description":"CRC-16 USB checksum"},{"name":"crc16x25","license":"LGPL3","author":"deroad","description":"CRC-16 X25 checksum"},{"name":"crc16xmodem","license":"LGPL3","author":"deroad","description":"CRC-16 XMODEM checksum"},{"name":"crc24","license":"LGPL3","author":"deroad","description":"CRC-24 checksum"},{"name":"crc32","license":"LGPL3","author":"deroad","description":"CRC-32 checksum"},{"name":"crc32bzip2","license":"LGPL3","author":"deroad","description":"CRC-32 BZIP2 checksum"},{"name":"crc32c","license":"LGPL3","author":"deroad","description":"CRC-32C checksum"},{"name":"crc32d","license":"LGPL3","author":"deroad","description":"CRC-32D checksum"},{"name":"crc32ecma267","license":"LGPL3","author":"deroad","description":"CRC-32 ECMA-267 checksum (EDC for DVD sectors)"},{"name":"crc32jamcrc","license":"LGPL3","author":"deroad","description":"CRC-32 JAMCRC checksum"},{"name":"crc32mpeg2","license":"LGPL3","author":"deroad","description":"CRC-32 MPEG2 checksum"},{"name":"crc32posix","license":"LGPL3","author":"deroad","description":"CRC-32 POSIX checksum"},{"name":"crc32q","license":"LGPL3","author":"deroad","description":"CRC-32Q checksum"},{"name":"crc32xfer","license":"LGPL3","author":"deroad","description":"CRC-32 XFER checksum"},{"name":"crc64","license":"LGPL3","author":"deroad","description":"CRC-64 checksum"},{"name":"crc64ecma182","license":"LGPL3","author":"deroad","description":"CRC-64 ECMA-182 checksum"},{"name":"crc64iso","license":"LGPL3","author":"deroad","description":"CRC-64 ISO checksum"},{"name":"crc64we","license":"LGPL3","author":"deroad","description":"CRC-64 WE checksum"},{"name":"crc64xz","license":"LGPL3","author":"deroad","description":"CRC-64 XZ checksum"},{"name":"crc8cdma2000","license":"LGPL3","author":"deroad","description":"CRC-8 CDMA-2000 checksum"},{"name":"crc8darc","license":"LGPL3","author":"deroad","description":"CRC-8 DARC checksum"},{"name":"crc8dvbs2","license":"LGPL3","author":"deroad","description":"CRC-8 DVB-S2 checksum"},{"name":"crc8ebu","license":"LGPL3","author":"deroad","description":"CRC-8 EBU checksum"},{"name":"crc8icode","license":"LGPL3","author":"deroad","description":"CRC-8 I-CODE checksum"},{"name":"crc8itu","license":"LGPL3","author":"deroad","description":"CRC-8 ITU checksum"},{"name":"crc8maxim","license":"LGPL3","author":"deroad","description":"CRC-8 MAXIM checksum"},{"name":"crc8rohc","license":"LGPL3","author":"deroad","description":"CRC-8 ROHC checksum"},{"name":"crc8smbus","license":"LGPL3","author":"deroad","description":"CRC-8 SMBUS checksum"},{"name":"crc8wcdma","license":"LGPL3","author":"deroad","description":"CRC-8 WCDMA checksum"},{"name":"crca","license":"LGPL3","author":"deroad","description":"CRC-16/CRCA checksum"},{"name":"entropy","license":"LGPL3","author":"deroad","description":"Entropy [0.0-8.0] range"},{"name":"entropy_fract","license":"LGPL3","author":"deroad","description":"Fractional entropy [0.0-1.0] range"},{"name":"fletcher16","license":"LGPL3","author":"deroad","description":"Fletcher16 checksum"},{"name":"fletcher32","license":"LGPL3","author":"deroad","description":"Fletcher32 checksum"},{"name":"fletcher64","license":"LGPL3","author":"deroad","description":"Fletcher64 checksum"},{"name":"fletcher8","license":"LGPL3","author":"deroad","description":"Fletcher8 checksum"},{"name":"keccak-256","license":"BSD-3","author":"Andrey Jivsov","description":"KECCAK-256 cryptographic hash"},{"name":"keccak-384","license":"BSD-3","author":"Andrey Jivsov","description":"KECCAK-384 cryptographic hash"},{"name":"keccak-512","license":"BSD-3","author":"Andrey Jivsov","description":"KECCAK-512 cryptographic hash"},{"name":"md2","license":"LGPL3","author":"swedenspy","description":"MD2 cryptographic hash"},{"name":"md4","license":"LGPL3","author":"deroad","description":"MD4 cryptographic hash"},{"name":"md5","license":"LGPL2","author":"Alan DeKok","description":"MD5 cryptographic hash"},{"name":"mod255","license":"LGPL3","author":"deroad","description":"Modulo 255 checksum"},{"name":"murmur3-x64-128","license":"MIT","author":"Austin Appleby","description":"MurmurHash3 x64 128-bit non-cryptographic hash"},{"name":"murmur3-x86-128","license":"MIT","author":"Austin Appleby","description":"MurmurHash3 x86 128-bit non-cryptographic hash"},{"name":"murmur3-x86-32","license":"MIT","author":"Austin Appleby","description":"MurmurHash3 x86 32-bit non-cryptographic hash"},{"name":"parity","license":"LGPL3","author":"deroad","description":"Parity checksum"},{"name":"sha1","license":"LGPL3","author":"deroad","description":"SHA-1 cryptographic hash"},{"name":"sha256","license":"BSD-3","author":"Aaron D. Gifford","description":"SHA-256 cryptographic hash"},{"name":"sha3-224","license":"BSD-3","author":"Andrey Jivsov","description":"SHA3-224 cryptographic hash"},{"name":"sha3-256","license":"BSD-3","author":"Andrey Jivsov","description":"SHA3-256 cryptographic hash"},{"name":"sha3-384","license":"BSD-3","author":"Andrey Jivsov","description":"SHA3-384 cryptographic hash"},{"name":"sha3-512","license":"BSD-3","author":"Andrey Jivsov","description":"SHA3-512 cryptographic hash"},{"name":"sha384","license":"BSD-3","author":"Aaron D. Gifford","description":"SHA-384 cryptographic hash"},{"name":"sha512","license":"BSD-3","author":"Aaron D. Gifford","description":"SHA-512 cryptographic hash"},{"name":"sm3","license":"LGPL2","author":"FSF/deroad","description":"ShangMi 3 (SM3) cryptographic hash"},{"name":"ssdeep","license":"LGPL3","author":"deroad","description":"SSDeep Context Triggered Piecewise Hash (CTPH, fuzzy hash)"},{"name":"temperature","license":"LGPL3","author":"Seva","description":"Binary temperature [0.0-1.0] range"},{"name":"xor16","license":"LGPL3","author":"deroad","description":"XOR-16 checksum"},{"name":"xor8","license":"LGPL3","author":"deroad","description":"XOR-8 checksum"},{"name":"xxhash32","license":"LGPL3","author":"deroad","description":"xxHash32 non-cryptographic hash"},{"name":"xxhash64","license":"LGPL3","author":"cheese-cakee","description":"xxHash64 non-cryptographic hash"}] +[{"name":"adler32","license":"LGPL3","author":"deroad","description":"Adler-32 checksum"},{"name":"blake2b","license":"LGPL3","author":"Farhan-25","description":"BLAKE2b cryptographic hash"},{"name":"blake2bp","license":"LGPL3","author":"Farhan-25","description":"BLAKE2bp cryptographic hash"},{"name":"blake2s","license":"LGPL3","author":"Farhan-25","description":"BLAKE2s cryptographic hash"},{"name":"blake2sp","license":"LGPL3","author":"Farhan-25","description":"BLAKE2sp cryptographic hash"},{"name":"blake2xb","license":"LGPL3","author":"Farhan-25","description":"BLAKE2xb cryptographic hash"},{"name":"blake2xs","license":"LGPL3","author":"Farhan-25","description":"BLAKE2xs cryptographic hash"},{"name":"blake3","license":"CC0","author":"Samuel Neves,Jack O'Connor","description":"BLAKE3 cryptographic hash"},{"name":"crc15can","license":"LGPL3","author":"deroad","description":"CRC-15 CAN checksum"},{"name":"crc16","license":"LGPL3","author":"deroad","description":"CRC-16 IBM/ARC checksum"},{"name":"crc16augccitt","license":"LGPL3","author":"deroad","description":"CRC-16 AUG-CCITT checksum"},{"name":"crc16buypass","license":"LGPL3","author":"deroad","description":"CRC-16 BUYPASS checksum"},{"name":"crc16cdma2000","license":"LGPL3","author":"deroad","description":"CRC-16 CDMA-2000 checksum"},{"name":"crc16citt","license":"LGPL3","author":"deroad","description":"CRC-16 CITT checksum"},{"name":"crc16dds110","license":"LGPL3","author":"deroad","description":"CRC-16 DDS110 checksum"},{"name":"crc16dectr","license":"LGPL3","author":"deroad","description":"CRC-16 DECT-R checksum"},{"name":"crc16dectx","license":"LGPL3","author":"deroad","description":"CRC-16 DECT-X checksum"},{"name":"crc16dnp","license":"LGPL3","author":"deroad","description":"CRC-16 DNP checksum"},{"name":"crc16en13757","license":"LGPL3","author":"deroad","description":"CRC-16 EN-13757 checksum"},{"name":"crc16genibus","license":"LGPL3","author":"deroad","description":"CRC-16 GENIBUS checksum"},{"name":"crc16hdlc","license":"LGPL3","author":"deroad","description":"CRC-16 HDLC checksum"},{"name":"crc16kermit","license":"LGPL3","author":"deroad","description":"CRC-16 KERMIT checksum"},{"name":"crc16maxim","license":"LGPL3","author":"deroad","description":"CRC-16 MAXIM checksum"},{"name":"crc16mcrf4xx","license":"LGPL3","author":"deroad","description":"CRC-16 MCRF4XX checksum"},{"name":"crc16modbus","license":"LGPL3","author":"deroad","description":"CRC-16 MODBUS checksum"},{"name":"crc16riello","license":"LGPL3","author":"deroad","description":"CRC-16 RIELLO checksum"},{"name":"crc16t10dif","license":"LGPL3","author":"deroad","description":"CRC-16 T10-DIF checksum"},{"name":"crc16teledisk","license":"LGPL3","author":"deroad","description":"CRC-16 TELEDISK checksum"},{"name":"crc16tms37157","license":"LGPL3","author":"deroad","description":"CRC-16 TMS37157 checksum"},{"name":"crc16usb","license":"LGPL3","author":"deroad","description":"CRC-16 USB checksum"},{"name":"crc16x25","license":"LGPL3","author":"deroad","description":"CRC-16 X25 checksum"},{"name":"crc16xmodem","license":"LGPL3","author":"deroad","description":"CRC-16 XMODEM checksum"},{"name":"crc24","license":"LGPL3","author":"deroad","description":"CRC-24 checksum"},{"name":"crc32","license":"LGPL3","author":"deroad","description":"CRC-32 checksum"},{"name":"crc32bzip2","license":"LGPL3","author":"deroad","description":"CRC-32 BZIP2 checksum"},{"name":"crc32c","license":"LGPL3","author":"deroad","description":"CRC-32C checksum"},{"name":"crc32d","license":"LGPL3","author":"deroad","description":"CRC-32D checksum"},{"name":"crc32ecma267","license":"LGPL3","author":"deroad","description":"CRC-32 ECMA-267 checksum (EDC for DVD sectors)"},{"name":"crc32jamcrc","license":"LGPL3","author":"deroad","description":"CRC-32 JAMCRC checksum"},{"name":"crc32mpeg2","license":"LGPL3","author":"deroad","description":"CRC-32 MPEG2 checksum"},{"name":"crc32posix","license":"LGPL3","author":"deroad","description":"CRC-32 POSIX checksum"},{"name":"crc32q","license":"LGPL3","author":"deroad","description":"CRC-32Q checksum"},{"name":"crc32xfer","license":"LGPL3","author":"deroad","description":"CRC-32 XFER checksum"},{"name":"crc64","license":"LGPL3","author":"deroad","description":"CRC-64 checksum"},{"name":"crc64ecma182","license":"LGPL3","author":"deroad","description":"CRC-64 ECMA-182 checksum"},{"name":"crc64iso","license":"LGPL3","author":"deroad","description":"CRC-64 ISO checksum"},{"name":"crc64we","license":"LGPL3","author":"deroad","description":"CRC-64 WE checksum"},{"name":"crc64xz","license":"LGPL3","author":"deroad","description":"CRC-64 XZ checksum"},{"name":"crc8cdma2000","license":"LGPL3","author":"deroad","description":"CRC-8 CDMA-2000 checksum"},{"name":"crc8darc","license":"LGPL3","author":"deroad","description":"CRC-8 DARC checksum"},{"name":"crc8dvbs2","license":"LGPL3","author":"deroad","description":"CRC-8 DVB-S2 checksum"},{"name":"crc8ebu","license":"LGPL3","author":"deroad","description":"CRC-8 EBU checksum"},{"name":"crc8icode","license":"LGPL3","author":"deroad","description":"CRC-8 I-CODE checksum"},{"name":"crc8itu","license":"LGPL3","author":"deroad","description":"CRC-8 ITU checksum"},{"name":"crc8maxim","license":"LGPL3","author":"deroad","description":"CRC-8 MAXIM checksum"},{"name":"crc8rohc","license":"LGPL3","author":"deroad","description":"CRC-8 ROHC checksum"},{"name":"crc8smbus","license":"LGPL3","author":"deroad","description":"CRC-8 SMBUS checksum"},{"name":"crc8wcdma","license":"LGPL3","author":"deroad","description":"CRC-8 WCDMA checksum"},{"name":"crca","license":"LGPL3","author":"deroad","description":"CRC-16/CRCA checksum"},{"name":"entropy","license":"LGPL3","author":"deroad","description":"Entropy [0.0-8.0] range"},{"name":"entropy_fract","license":"LGPL3","author":"deroad","description":"Fractional entropy [0.0-1.0] range"},{"name":"fletcher16","license":"LGPL3","author":"deroad","description":"Fletcher16 checksum"},{"name":"fletcher32","license":"LGPL3","author":"deroad","description":"Fletcher32 checksum"},{"name":"fletcher64","license":"LGPL3","author":"deroad","description":"Fletcher64 checksum"},{"name":"fletcher8","license":"LGPL3","author":"deroad","description":"Fletcher8 checksum"},{"name":"jenkins","license":"LGPL3","author":"shessaanand","description":"Jenkins non-cryptographic hash"},{"name":"keccak-256","license":"BSD-3","author":"Andrey Jivsov","description":"KECCAK-256 cryptographic hash"},{"name":"keccak-384","license":"BSD-3","author":"Andrey Jivsov","description":"KECCAK-384 cryptographic hash"},{"name":"keccak-512","license":"BSD-3","author":"Andrey Jivsov","description":"KECCAK-512 cryptographic hash"},{"name":"md2","license":"LGPL3","author":"swedenspy","description":"MD2 cryptographic hash"},{"name":"md4","license":"LGPL3","author":"deroad","description":"MD4 cryptographic hash"},{"name":"md5","license":"LGPL2","author":"Alan DeKok","description":"MD5 cryptographic hash"},{"name":"mod255","license":"LGPL3","author":"deroad","description":"Modulo 255 checksum"},{"name":"murmur3-x64-128","license":"MIT","author":"Austin Appleby","description":"MurmurHash3 x64 128-bit non-cryptographic hash"},{"name":"murmur3-x86-128","license":"MIT","author":"Austin Appleby","description":"MurmurHash3 x86 128-bit non-cryptographic hash"},{"name":"murmur3-x86-32","license":"MIT","author":"Austin Appleby","description":"MurmurHash3 x86 32-bit non-cryptographic hash"},{"name":"parity","license":"LGPL3","author":"deroad","description":"Parity checksum"},{"name":"sha1","license":"LGPL3","author":"deroad","description":"SHA-1 cryptographic hash"},{"name":"sha256","license":"BSD-3","author":"Aaron D. Gifford","description":"SHA-256 cryptographic hash"},{"name":"sha3-224","license":"BSD-3","author":"Andrey Jivsov","description":"SHA3-224 cryptographic hash"},{"name":"sha3-256","license":"BSD-3","author":"Andrey Jivsov","description":"SHA3-256 cryptographic hash"},{"name":"sha3-384","license":"BSD-3","author":"Andrey Jivsov","description":"SHA3-384 cryptographic hash"},{"name":"sha3-512","license":"BSD-3","author":"Andrey Jivsov","description":"SHA3-512 cryptographic hash"},{"name":"sha384","license":"BSD-3","author":"Aaron D. Gifford","description":"SHA-384 cryptographic hash"},{"name":"sha512","license":"BSD-3","author":"Aaron D. Gifford","description":"SHA-512 cryptographic hash"},{"name":"sm3","license":"LGPL2","author":"FSF/deroad","description":"ShangMi 3 (SM3) cryptographic hash"},{"name":"ssdeep","license":"LGPL3","author":"deroad","description":"SSDeep Context Triggered Piecewise Hash (CTPH, fuzzy hash)"},{"name":"temperature","license":"LGPL3","author":"Seva","description":"Binary temperature [0.0-1.0] range"},{"name":"xor16","license":"LGPL3","author":"deroad","description":"XOR-16 checksum"},{"name":"xor8","license":"LGPL3","author":"deroad","description":"XOR-8 checksum"},{"name":"xxhash32","license":"LGPL3","author":"deroad","description":"xxHash32 non-cryptographic hash"},{"name":"xxhash64","license":"LGPL3","author":"cheese-cakee","description":"xxHash64 non-cryptographic hash"}] algorithm license author description -------------------------------------------------------------------------------------------------------------- adler32 LGPL3 deroad Adler-32 checksum @@ -534,6 +535,7 @@ fletcher16 LGPL3 deroad Fletcher16 checksum fletcher32 LGPL3 deroad Fletcher32 checksum fletcher64 LGPL3 deroad Fletcher64 checksum fletcher8 LGPL3 deroad Fletcher8 checksum +jenkins LGPL3 shessaanand Jenkins non-cryptographic hash keccak-256 BSD-3 Andrey Jivsov KECCAK-256 cryptographic hash keccak-384 BSD-3 Andrey Jivsov KECCAK-384 cryptographic hash keccak-512 BSD-3 Andrey Jivsov KECCAK-512 cryptographic hash @@ -625,6 +627,7 @@ fletcher16 fletcher32 fletcher64 fletcher8 +jenkins keccak-256 keccak-384 keccak-512 diff --git a/test/db/tools/rz_hash b/test/db/tools/rz_hash index 116406997f..95004cd08f 100644 --- a/test/db/tools/rz_hash +++ b/test/db/tools/rz_hash @@ -203,6 +203,14 @@ ERROR: rz-hash: error, input string is not a number EOF RUN +NAME=rz-hash -a jenkins -s jenkinshash +TOOL=rz-hash +ARGS=-a jenkins -s jenkinshash +EXPECT=<