⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sha256.h

📁 flint库 RSA算法
💻 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 + -