source: lib/sha1.h @ 12fe5ea

Last change on this file since 12fe5ea was e0a0a42, checked in by Wilmer van der Gaast <wilmer@…>, at 2012-02-10T13:37:08Z

Added sha1_random_uuid function, which I will use later to generate random
Jabber roomnames.

  • Property mode set to 100644
File size: 2.0 KB
Line 
1/*
2 * SHA1 hashing code copied from Lepton's crack <http://usuarios.lycos.es/reinob/>
3 *
4 * Adapted to be API-compatible with the previous (GPL-incompatible) code.
5 */
6
7/*
8 *  sha1.h
9 *
10 *  Description:
11 *      This is the header file for code which implements the Secure
12 *      Hashing Algorithm 1 as defined in FIPS PUB 180-1 published
13 *      April 17, 1995.
14 *
15 *      Many of the variable names in this code, especially the
16 *      single character names, were used because those were the names
17 *      used in the publication.
18 *
19 *      Please read the file sha1.c for more information.
20 *
21 */
22
23#ifndef _SHA1_H_
24#define _SHA1_H_
25
26#if(__sun)
27#include <inttypes.h>
28#else
29#include <stdint.h>
30#endif
31#include <gmodule.h>
32
33#ifndef _SHA_enum_
34#define _SHA_enum_
35enum {
36        shaSuccess = 0,
37        shaNull,                /* Null pointer parameter */
38        shaInputTooLong,        /* input data too long */
39        shaStateError           /* called Input after Result */
40};
41#endif
42#define sha1_hash_size 20
43
44/*
45 *  This structure will hold context information for the SHA-1
46 *  hashing operation
47 */
48typedef struct SHA1Context {
49        uint32_t Intermediate_Hash[sha1_hash_size/4];   /* Message Digest   */
50
51        uint32_t Length_Low;            /* Message length in bits           */
52        uint32_t Length_High;           /* Message length in bits           */
53
54        /* Index into message block array   */
55        int_least16_t Message_Block_Index;
56        uint8_t Message_Block[64];      /* 512-bit message blocks           */
57
58        int Computed;                   /* Is the digest computed?          */
59        int Corrupted;                  /* Is the message digest corrupted? */
60} sha1_state_t;
61
62/*
63 *  Function Prototypes
64 */
65
66G_MODULE_EXPORT int sha1_init(sha1_state_t *);
67G_MODULE_EXPORT int sha1_append(sha1_state_t *, const uint8_t *, unsigned int);
68G_MODULE_EXPORT int sha1_finish(sha1_state_t *, uint8_t Message_Digest[sha1_hash_size]);
69G_MODULE_EXPORT void sha1_hmac(const char *key_, size_t key_len, const char *payload, size_t payload_len, uint8_t Message_Digest[sha1_hash_size]);
70G_MODULE_EXPORT char *sha1_random_uuid( sha1_state_t * context );
71
72#endif
Note: See TracBrowser for help on using the repository browser.