/*-1* Copyright 2005 Colin Percival2* All rights reserved.3*4* Redistribution and use in source and binary forms, with or without5* modification, are permitted provided that the following conditions6* are met:7* 1. Redistributions of source code must retain the above copyright8* notice, this list of conditions and the following disclaimer.9* 2. Redistributions in binary form must reproduce the above copyright10* notice, this list of conditions and the following disclaimer in the11* documentation and/or other materials provided with the distribution.12*13* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND14* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE15* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE16* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE17* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL18* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS19* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)20* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT21* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY22* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF23* SUCH DAMAGE.24*/2526#ifndef _SHA224_H_27#define _SHA224_H_2829#ifndef _KERNEL30#include <sys/types.h>31#endif3233#define SHA224_BLOCK_LENGTH 6434#define SHA224_DIGEST_LENGTH 2835#define SHA224_DIGEST_STRING_LENGTH (SHA224_DIGEST_LENGTH * 2 + 1)3637typedef struct SHA224Context {38uint32_t state[8];39uint64_t count;40uint8_t buf[SHA224_BLOCK_LENGTH];41} SHA224_CTX;4243__BEGIN_DECLS4445/* Ensure libmd symbols do not clash with libcrypto */4647#ifndef SHA224_Init48#define SHA224_Init _libmd_SHA224_Init49#endif50#ifndef SHA224_Update51#define SHA224_Update _libmd_SHA224_Update52#endif53#ifndef SHA224_Final54#define SHA224_Final _libmd_SHA224_Final55#endif56#ifndef SHA224_End57#define SHA224_End _libmd_SHA224_End58#endif59#ifndef SHA224_Fd60#define SHA224_Fd _libmd_SHA224_Fd61#endif62#ifndef SHA224_FdChunk63#define SHA224_FdChunk _libmd_SHA224_FdChunk64#endif65#ifndef SHA224_File66#define SHA224_File _libmd_SHA224_File67#endif68#ifndef SHA224_FileChunk69#define SHA224_FileChunk _libmd_SHA224_FileChunk70#endif71#ifndef SHA224_Data72#define SHA224_Data _libmd_SHA224_Data73#endif7475void SHA224_Init(SHA224_CTX *);76void SHA224_Update(SHA224_CTX *, const void *, size_t);77void SHA224_Final(unsigned char [__min_size(SHA224_DIGEST_LENGTH)],78SHA224_CTX *);79#ifndef _KERNEL80char *SHA224_End(SHA224_CTX *, char *);81char *SHA224_Data(const void *, unsigned int, char *);82char *SHA224_Fd(int, char *);83char *SHA224_FdChunk(int, char *, off_t, off_t);84char *SHA224_File(const char *, char *);85char *SHA224_FileChunk(const char *, char *, off_t, off_t);86#endif87__END_DECLS8889#endif /* !_SHA224_H_ */909192