72 lines
1.4 KiB
C
72 lines
1.4 KiB
C
|
|
/*
|
||
|
|
* SHA1 internal definitions
|
||
|
|
* Copyright (c) 2003-2005, Jouni Malinen <j@w1.fi>
|
||
|
|
*
|
||
|
|
* This software may be distributed under the terms of the BSD license.
|
||
|
|
* See README for more details.
|
||
|
|
*/
|
||
|
|
|
||
|
|
/**
|
||
|
|
** \defgroup sha1 SHA1
|
||
|
|
** SHA1 API.
|
||
|
|
** Adapted from
|
||
|
|
** https://web.mit.edu/freebsd/head/contrib/wpa/src/crypto/sha1_i.h by Cory
|
||
|
|
** McWilliams 2025-09-28.
|
||
|
|
** @{
|
||
|
|
*/
|
||
|
|
|
||
|
|
#ifndef SHA1_I_H
|
||
|
|
#define SHA1_I_H
|
||
|
|
|
||
|
|
#include <inttypes.h>
|
||
|
|
|
||
|
|
/**
|
||
|
|
** SHA1 context struct.
|
||
|
|
*/
|
||
|
|
struct SHA1Context
|
||
|
|
{
|
||
|
|
/** SHA1 state. */
|
||
|
|
uint32_t state[5];
|
||
|
|
/** SHA1 count. */
|
||
|
|
uint32_t count[2];
|
||
|
|
/** SHA1 buffer. */
|
||
|
|
unsigned char buffer[64];
|
||
|
|
};
|
||
|
|
|
||
|
|
/**
|
||
|
|
** SHA1 context.
|
||
|
|
*/
|
||
|
|
typedef struct SHA1Context SHA1_CTX;
|
||
|
|
|
||
|
|
/**
|
||
|
|
** Initialize a SHA1 context.
|
||
|
|
** @param context The context.
|
||
|
|
*/
|
||
|
|
void SHA1Init(struct SHA1Context* context);
|
||
|
|
|
||
|
|
/**
|
||
|
|
** Calculate an ongoing hash for a block of data.
|
||
|
|
** @param context The SHA1 context.
|
||
|
|
** @param data The data to hash.
|
||
|
|
** @param len The length of data.
|
||
|
|
*/
|
||
|
|
void SHA1Update(struct SHA1Context* context, const void* data, uint32_t len);
|
||
|
|
|
||
|
|
/**
|
||
|
|
** Calculate the final hash digest.
|
||
|
|
** @param digest Populated with the digest.
|
||
|
|
** @param context The SHA1 context.
|
||
|
|
*/
|
||
|
|
void SHA1Final(unsigned char digest[20], struct SHA1Context* context);
|
||
|
|
|
||
|
|
/**
|
||
|
|
** Perform a SHA1 transformation.
|
||
|
|
** @param state The SHA1 state.
|
||
|
|
** @param buffer The data.
|
||
|
|
*/
|
||
|
|
void SHA1Transform(uint32_t state[5], const unsigned char buffer[64]);
|
||
|
|
|
||
|
|
#endif /* SHA1_I_H */
|
||
|
|
|
||
|
|
/** @} */
|