📄 sha256.h
字号:
/******************************************************************************/
/* */
/* Functions for arithmetic and number theory with large integers in C */
/* Software supplement to the book "Cryptography in C and C++" */
/* by Michael Welschenbach */
/* */
/* Module sha256.h Revision: 03.06.2004 */
/* */
/* Copyright (C) 1998-2005 by Michael Welschenbach */
/* Copyright (C) 1998-2005 by Springer-Verlag Berlin, Heidelberg */
/* Copyright (C) 2001-2005 by Apress L.P., Berkeley, CA */
/* Copyright (C) 2002-2005 by Wydawnictwa MIKOM, Poland */
/* Copyright (C) 2002-2005 by PHEI, P.R.China */
/* Copyright (C) 2002-2005 by InfoBook, Korea */
/* Copyright (C) 2002-2005 by Triumph Publishing, Russia */
/* */
/* All Rights Reserved */
/* */
/* The software may be used for noncommercial purposes and may be altered, */
/* as long as the following conditions are accepted without any */
/* qualification: */
/* */
/* (1) All changes to the sources must be identified in such a way that the */
/* changed software cannot be misinterpreted as the original software. */
/* */
/* (2) The statements of copyright may not be removed or altered. */
/* */
/* (3) The following DISCLAIMER is accepted: */
/* */
/* DISCLAIMER: */
/* */
/* There is no warranty for the software contained in this distribution, to */
/* the extent permitted by applicable law. The copyright holders provide the */
/* software `as is' without warranty of any kind, either expressed or */
/* implied, including, but not limited to, the implied warranty of fitness */
/* for a particular purpose. The entire risk as to the quality and */
/* performance of the program is with you. */
/* */
/* In no event unless required by applicable law or agreed to in writing */
/* will the copyright holders, or any of the individual authors named in */
/* the source files, be liable to you for damages, including any general, */
/* special, incidental or consequential damages arising out of any use of */
/* the software or out of inability to use the software (including but not */
/* limited to any financial losses, loss of data or data being rendered */
/* inaccurate or losses sustained by you or by third parties as a result of */
/* a failure of the software to operate with any other programs), even if */
/* such holder or other party has been advised of the possibility of such */
/* damages. */
/* */
/******************************************************************************/
#ifndef __SHA256H__
#define __SHA256H__
#ifdef __cplusplus
extern "C" {
#endif
#define SHALEN 160
#define SHALEN256 256
#define E_CLINT_SHA -20
/* Macros maintaining FLINT/C namespace */
#define sha1init sha1init_l
#define sha1hash sha1hash_l
#define sha1finish sha1finish_l
#define sha1 sha1_l
#define sha256init sha256init_l
#define sha256hash sha256hash_l
#define sha256finish sha256finish_l
#define sha256 sha256_l
struct sha1_stat
{
unsigned long stomach[5];
unsigned long total[2];
};
typedef struct sha1_stat SHASTAT;
struct sha256_stat
{
unsigned long stomach[8];
unsigned long total[2];
};
typedef struct sha256_stat SHA256STAT;
/***********************************************************/
/* Function prototypes */
/***********************************************************/
#ifndef __FLINT_API
#ifdef FLINT_USEDLL
#define __FLINT_API __cdecl
#else
#define __FLINT_API /**/
#endif /* FLINT_USEDLL */
#endif /* !defined __FLINT_API */
#if !defined __FLINT_API_A
#if defined __GNUC__ && !defined __cdecl
#define __FLINT_API_A /**/
#else
#define __FLINT_API_A __cdecl
#endif /* !defined __GNUC__ */
#endif /* !defined __FLINT_API_A */
/* If the FLINT/C-Package is used under MS Visual C/C++ as DLL, */
/* all modules accessing data nul_l, one_l, two_l or smallprimes from outside */
/* the DLL must be compiled with -D__FLINT_API_DATA=__declspec(dllimport) */
#ifndef __FLINT_API_DATA
#if (defined _MSC_VER && _MSC_VER >= 11) && defined FLINT_USEDLL
#define __FLINT_API_DATA __declspec(dllimport)
#else
#define __FLINT_API_DATA /**/
#endif /* MSC_VER && FLINT_USEDLL */
#endif /* !defined __FLINT_API_DATA */
/***********************************************************/
/* Function prototypes of SHA1 - API */
/***********************************************************/
extern void __FLINT_API
sha1init_l (SHASTAT *);
extern int __FLINT_API
sha1hash_l (SHASTAT *, unsigned char *, unsigned long);
extern void __FLINT_API
sha1finish_l (unsigned char *, SHASTAT *, unsigned char *, unsigned long);
extern void __FLINT_API
sha1_l (unsigned char *, unsigned char *, unsigned long);
/***********************************************************/
/* Function prototypes of SHA256 - API */
/***********************************************************/
extern void __FLINT_API
sha256init_l (SHA256STAT *);
extern int __FLINT_API
sha256hash_l (SHA256STAT *, unsigned char *, unsigned long);
extern void __FLINT_API
sha256finish_l (unsigned char *, SHA256STAT *, unsigned char *, unsigned long);
extern void __FLINT_API
sha256_l (unsigned char *, unsigned char *, unsigned long);
#ifdef __cplusplus
}
#endif
#endif /* __SHA256H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -