TIGER(3) BSD Programmer's Manual TIGER(3)
TIGERInit, TIGERUpdate, TIGERPad, TIGERFinal, TIGERTransform, TIGEREnd, TIGERFile, TIGERFileChunk, TIGERData - calculate the TIGER message digest
#include <sys/types.h> #include <tiger.h> void TIGERInit(TIGER_CTX *ctx); void TIGERUpdate(TIGER_CTX *ctx, const uint8_t *data, size_t noctets); void TIGERPad(TIGER_CTX *ctx); void TIGERFinal(uint8_t digest[TIGER_DIGEST_LENGTH], TIGER_CTX *ctx); void TIGERTransform(uint64_t state[3], const uint8_t block[TIGER_BLOCK_LENGTH]); char * TIGEREnd(TIGER_CTX *ctx, char *digest); char * TIGERFile(const char *filename, char *digest); char * TIGERFileChunk(const char *filename, char *digest, off_t offset, off_t length); char * TIGERData(const uint8_t *data, size_t len, char *digest);
The TIGER functions implement the 192-bit TIGER message digest hash algo- rithm. The TIGER functions are of a different family than the md4(3), md5(3), rmd160(3), sha1(3), and sha2(3) functions, as well of a different family from the whirlpool(3) functions and, despite not having been cryp- tanalysed that much, are considered pretty secure. All share a similar interface, though. The TIGERInit() function initialises a TIGER_CTX context for use with TIGERUpdate() and TIGERFinal(). The TIGERUpdate() function adds (con- denses) data of length noctets to the context. TIGERFinal() is called after processing and stores a message digest in the digest parameter. For a description of the other functions, please refer e.g. the rmd160(3) manual page.
The follow code fragment will calculate the digest for the string "abc", which is "2aab1484e8c158f2bfb8c5ff41b57a525129131c957b5f93". TIGER_CTX context; uint8_t result[TIGER_DIGEST_LENGTH]; const char buf[] = "abc"; size_t n = strlen(buf); TIGERInit(&context); TIGERUpdate(&context, buf, n); TIGERFinal(result, &context); /* print the digest as one long sedecimal value */ printf("0x"); for (n = 0; n < TIGER_DIGEST_LENGTH; n++) printf("%02x", result[n]); putchar('\n'); Alternately, the helper functions could be used in the following way: TIGER_CTX context; uint8_t output[TIGER_DIGEST_STRING_LENGTH]; const char buf[] = "abc"; printf("0x%s\n", TIGERData(buf, strlen(buf), output));
cksum(1), adler32(3), md4(3), md5(3), rmd160(3), sfv(3), sha1(3), sha2(3), suma(3), whirlpool(3) http://www.cs.technion.ac.il/~biham/Reports/Tiger/
The TIGER functions appeared in MirBSD #10.
This implementation of TIGER was written by Thorsten Glaser <tg@mirbsd.de> modelled after the RIPEMD-160 implementation already in libc and the TIGER reference implementation. The TIGEREnd(), TIGERFile(), TIGERFileChunk(), and TIGERData() helper functions are derived from code written by Poul-Henning Kamp. MirBSD #10-current September 4, 2020 1