📄 arithmetic.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 + -