/** @file sha1.h
|
*
|
* @brief This file contains the sha1 functions
|
*
|
* Copyright (C) 2014-2017, Marvell International Ltd.
|
*
|
* This software file (the "File") is distributed by Marvell International
|
* Ltd. under the terms of the GNU General Public License Version 2, June 1991
|
* (the "License"). You may use, redistribute and/or modify this File in
|
* accordance with the terms and conditions of the License, a copy of which
|
* is available by writing to the Free Software Foundation, Inc.,
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
|
* worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
*
|
* THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
|
* IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
|
* ARE EXPRESSLY DISCLAIMED. The License provides additional details about
|
* this warranty disclaimer.
|
*/
|
|
/******************************************************
|
Change log:
|
03/07/2014: Initial version
|
******************************************************/
|
#ifndef _SHA1_H_
|
#define _SHA1_H_
|
|
#include "wltypes.h"
|
|
enum {
|
shaSuccess = 0,
|
shaNull, /* Null pointer parameter */
|
shaInputTooLong, /* input data too long */
|
shaStateError /* called Input after Result */
|
};
|
|
#define A_SHA_DIGEST_LEN 20
|
|
/*
|
* This structure will hold context information for the SHA-1
|
* hashing operation
|
*/
|
typedef struct {
|
UINT32 Intermediate_Hash[A_SHA_DIGEST_LEN / 4]; /* Message Digest */
|
|
UINT32 Length_Low; /* Message length in bits */
|
UINT32 Length_High; /* Message length in bits */
|
|
UINT32 Scratch[16]; /* This is used to reduce the memory
|
** requirements of the transform
|
**function
|
*/
|
UINT8 Message_Block[64]; /* 512-bit message blocks */
|
/* Index into message block array */
|
SINT16 Message_Block_Index;
|
UINT8 Computed; /* Is the digest computed? */
|
UINT8 Corrupted; /* Is the message digest corrupted? */
|
} Mrvl_SHA1_CTX;
|
|
/*
|
* Function Prototypes
|
*/
|
|
extern int Mrvl_SHA1Init(Mrvl_SHA1_CTX *);
|
extern int Mrvl_SHA1Update(Mrvl_SHA1_CTX *, const UINT8 *, unsigned int);
|
extern int Mrvl_SHA1Final(void *priv, Mrvl_SHA1_CTX *,
|
UINT8 Message_Digest[A_SHA_DIGEST_LEN]);
|
|
extern void Mrvl_PRF(void *priv, unsigned char *key,
|
int key_len,
|
unsigned char *prefix,
|
int prefix_len,
|
unsigned char *data,
|
int data_len, unsigned char *output, int len);
|
|
extern void Mrvl_hmac_sha1(void *priv, unsigned char **ppText,
|
int *pTextLen,
|
int textNum,
|
unsigned char *key,
|
int key_len, unsigned char *output, int outputLen);
|
|
#endif
|