You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.6 KiB
52 lines
1.6 KiB
/********************************************************************** |
|
* gosthash.h * |
|
* Copyright (c) 2005-2006 Cryptocom LTD * |
|
* This file is distributed under the same license as OpenSSL * |
|
* * |
|
* Declaration of GOST R 34.11-94 hash functions * |
|
* uses and gost89.h Doesn't need OpenSSL * |
|
**********************************************************************/ |
|
#ifndef GOSTHASH_H |
|
# define GOSTHASH_H |
|
# include "gost89.h" |
|
# include <stdlib.h> |
|
|
|
# if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__) |
|
typedef __int64 ghosthash_len; |
|
# elif defined(__arch64__) |
|
typedef long ghosthash_len; |
|
# else |
|
typedef long long ghosthash_len; |
|
# endif |
|
|
|
typedef struct gost_hash_ctx { |
|
ghosthash_len len; |
|
gost_ctx *cipher_ctx; |
|
int left; |
|
byte H[32]; |
|
byte S[32]; |
|
byte remainder[32]; |
|
} gost_hash_ctx; |
|
|
|
/* Initalizes gost hash ctx, including creation of gost cipher ctx */ |
|
|
|
int init_gost_hash_ctx(gost_hash_ctx * ctx, |
|
const gost_subst_block * subst_block); |
|
void done_gost_hash_ctx(gost_hash_ctx * ctx); |
|
|
|
/* |
|
* Cleans up all fields, except cipher ctx preparing ctx for computing of new |
|
* hash value |
|
*/ |
|
int start_hash(gost_hash_ctx * ctx); |
|
|
|
/* Hashes block of data */ |
|
int hash_block(gost_hash_ctx * ctx, const byte * block, size_t length); |
|
|
|
/* |
|
* Finalizes computation of hash and fills buffer (which should be at least |
|
* 32 bytes long) with value of computed hash. |
|
*/ |
|
int finish_hash(gost_hash_ctx * ctx, byte * hashval); |
|
|
|
#endif
|
|
|