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

📄 arithmetic.h

📁 M20xx-FNU20编程工程模板
💻 H
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: 			ARITHMETIC.h
** Last modified Date:  2007-05-30
** Last Version: 		1.0
** Descriptions: 		header file of the specific codes for LPC2200 target boards
**				Every project should include a copy of this file, user may modify it as needed
**------------------------------------------------------------------------------------------------------
** Modified by: 
** Modified date:
** Version:	
** Descriptions: 
**
********************************************************************************************************/
#ifndef __ARITHMETIC_H 
#define __ARITHMETIC_H


    #ifdef __cplusplus
    extern "C" {
    #endif

/* MD5算法寄存器. */
typedef struct
{
    uint32 state[4];
    uint32 count[2];
    uint8  buffer[64];
} MD5_CTX;

#ifndef _SHA_enum_
#define _SHA_enum_
enum
{
    shaSuccess = 0,
    shaNull,            /* Null pointer parameter */
    shaInputTooLong,    /* input data too long */
    shaStateError       /* called Input after Result */
};
#endif
#define SHA1HashSize 20

/* SHA-1算法寄存器. */
typedef struct SHA1Context
{
    uint32 Intermediate_Hash[SHA1HashSize / 4]; /* Message Digest                 */
    uint32 Length_Low;                          /* Message length in bits         */
    uint32 Length_High;                         /* Message length in bits         */

                                                /* Index into message block array */
    int16 Message_Block_Index;
    uint8 Message_Block[64];                    /* 512-bit message blocks         */
    int Computed;                               /* Is the digest computed?        */
    int Corrupted;                              /* Is the message digest corrupted? */
} SHA1Context;

/*********************************************************************************************************
** Function name:			crc8
** Descriptions:			计算crc8,表达式为x^8 + X^5 + X^4 + x^0
** input parameters:        Fcs : 初始crcr值,一般为0x0。
**                          cp  : 数据
**                          n   : 数据长度
** Returned value:			crc值
********************************************************************************************************/
extern uint8 crc8(uint8 Fcs, uint8 *p, unsigned int n);

/*********************************************************************************************************
** Function name:           crc16
** Descriptions:            计算crc16,表达式为x^16 + x^12 + x^5 + x^0
** input parameters:        Fcs    : 初始crcr值,反码表示,一般为0xffff。
**                          cp     : 数据
**                          Length : 数据长度
** Returned value:          crc结果,反码表示
********************************************************************************************************/
extern uint16 crc16(uint16 Fcs, uint8 *cp, int16 Length);

/*********************************************************************************************************
** Function name:			CalculateEcc
** Descriptions:			计算ecc校验,最大512字节
** input parameters:		Ecc    : 保存计算结果(4字节)
**                          Buf    : 数据Buf
**                          len    : 数据长度    
** Returned value:			none
********************************************************************************************************/
extern void CalculateEcc(const uint8 *Buf, unsigned int len, uint8 *Ecc);

/*********************************************************************************************************
** Function name:			CorrectData
** Descriptions:			通过ecc校验校正数据
** input parameters:		Ecc    : 保存计算结果(4字节)
**                          Buf    : 数据Buf
**                          EccRead: 含读到的ecc
** Returned value:			0      : 数据正确
**                          1      : 纠正数据
**                          2      : 纠正ecc
**                          -1     : 错误数据超过1位
********************************************************************************************************/
extern int CorrectData(uint8 *Buf, uint8 *EccRead , const uint8 *Ecc);

/*********************************************************************************************************
** Function name:			MD5Init
** Descriptions:			初始化MD5算法寄存器
** input parameters:		context   : MD5算法寄存器
** Returned value:			无
********************************************************************************************************/
extern void MD5Init(MD5_CTX *context);

/*********************************************************************************************************
** Function name:			MD5Update
** Descriptions:			MD5 分组更新操作. 继续一个MD5操作,处理另一个消息
**                          分组并更新MD5算法寄存器.
** input parameters:		context   : MD5算法寄存器
**                          input     : 输入分组
**                          inputLen  : 输入的分组的长度
** Returned value:			无
********************************************************************************************************/
extern void MD5Update(MD5_CTX *context, const uint8 *input, unsigned int inputLen);

/*********************************************************************************************************
** Function name:			MD5Final
** Descriptions:			MD5 最终结果. 以一个 MD5 报文摘要操作结束, 写下
**                          报文摘要值
** input parameters:		digest    : 报文摘要
**                          context   : MD5算法寄存器
** Returned value:			无
********************************************************************************************************/
extern void MD5Final(uint8 digest[16], MD5_CTX *context);

/*********************************************************************************************************
** Function name:           SHA1Init
** Descriptions:            初始化SHA-1算法寄存器
** input parameters:        context   : SHA-1算法寄存器
** Returned value:          shaSuccess : 成功
**                          shaNull    : context为空
********************************************************************************************************/
extern int SHA1Init(SHA1Context *context);

/*********************************************************************************************************
** Function name:           SHA1Update
** Descriptions:            执行一次SHA-1算法
** input parameters:        context    : SHA-1算法寄存器
**                          input      : 输入分组
**                          inputLen   : 输入的分组的长度
** Returned value:          shaSuccess      : 成功
**                          shaNull         : context为空
**                          shaInputTooLong : 输入数据超长
**                          shaStateError   : 获得结果后调用了函数SHA1Update()
********************************************************************************************************/
extern int SHA1Update(SHA1Context *context, const uint8 *input, unsigned int inputLen);

/*********************************************************************************************************
** Function name:           SHA1Final
** Descriptions:            SHA-1最终结果. 以一个SHA-1报文摘要操作结束, 写下
**                          报文摘要值
** input parameters:        digest    : 报文摘要
**                          context   : SHA-1算法寄存器
** Returned value:          shaSuccess      : 成功
**                          shaNull         : context为空
**                          shaInputTooLong : 输入数据超长
**                          shaStateError   : 获得结果后调用了函数SHA1Update()
********************************************************************************************************/
extern int SHA1Final(uint8 digest[SHA1HashSize], SHA1Context *context);

    #ifdef __cplusplus
    }
    #endif
 
#endif
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -