blob: 031897112fab56fc8c25df0cfe3cfde42bf911ee [file] [log] [blame]
/** @file sha1.h
*
* @brief This file contains the sha1 functions
*
* Copyright (C) 2014, 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