📄 esam_function.h
字号:
/****************************************************************/
/* 文件名: Esam_Function.h */
/* 功能: 申明ESAM卡的操作函数 */
/****************************************************************/
#ifndef Esam_Function_h
#define Esam_Function_h
#define DES8 0
#define DES16 1
#define DATALENGTH 20 // 定义存储接收应答信号缓冲区的长度
extern Uint16 CommandLength; // 定义命令报文的实际长度变量
extern Uint16 Command[20]; // 定义存放命令报文的缓冲区
extern Uint16 ReplyData[DATALENGTH]; // 定义存储接收应答信号的缓冲区
/****************************************************************/
/* 函数名: Reset_Esam() */
/* 功能: 对ESAM卡复位,并取得返回的复位应答信息 */
/* 参数: */
/* DataPtr----指向存放序列号的数组的指针 */
/* 返回值: */
/* 返回unsigned short int型的16bits整数 */
/* 如果正确,返回值等于9000 */
/****************************************************************/
Uint16 Reset_Esam(Uint16 *DataPtr);
/****************************************************************/
/* 函数名: Get_Response() */
/* 功能: 取回ESAM反馈的数据和MAC码 */
/* 参数: */
/* DataPtr-----指向存放返回数据指针数组的指针 */
/* DataLen-----欲取回的数据和MAC码总长度(以16进制 */
/* 表示,单字节长度) */
/* 返回值: */
/* 返回unsigned short int型的16bits整数 */
/* 如果正确,返回值等于9000 */
/****************************************************************/
Uint16 Get_Response(Uint16* DataPtr, Uint16 DataLen);
/****************************************************************/
/* 函数名: Get_Random() */
/* 功能: 向ESAM发取随机数命令,并取得8字节或4字节随机数 */
/* 参数: */
/* OutputPtr--指向存放返回随机数的数组的指针 */
/* Length-----随机数长度,16进制表示(0x08,或0x04) */
/* 返回值: */
/* 返回unsigned short int型的16bits整数 */
/* 如果正确,返回值等于9000 */
/****************************************************************/
Uint16 Get_Random(Uint16 *OutputPtr, Uint16 Length);
/****************************************************************/
/* 函数名: Extern_Authen() */
/* 功能: 发送外部认证命令,进行外部认证 */
/* 参数: */
/* Input----指向存放随机数数组的指针 */
/* KeyID----外部认证密钥标识号 */
/* Key------指向存放外部认证密钥数组的指针 */
/* Mode-------加解密方式(如果是8字节密钥选DES8=0; */
/* 否则为16字节密钥选DES16=1) */
/* 返回值: */
/* 返回unsigned short int型的16bits整数 */
/* 如果正确,返回值等于9000 */
/****************************************************************/
Uint16 Extern_Authen(Uint16 *Input, Uint16 KeyID, Uint16 *Key, Uint16 Mode);
/****************************************************************/
/* 函数名: Set_Protocol() */
/* 功能: 更改ESAM和DSP的通信协议,注意一般情况下只支持协议*/
/* 从T=1改为T=0 */
/* 参数: */
/* Mode-----协议方式(0x01:T=0-->T=1;0x10:T=1-->T=0)*/
/* 返回值: */
/* 返回unsigned short int型的16bits整数 */
/* 如果正确,返回值等于9000 */
/****************************************************************/
Uint16 Set_Protocol(Uint16 Mode);
/****************************************************************/
/* 函数名: Del_Direct() */
/* 功能: 删除以前建立的目录文件(不包括MF文件) */
/* 参数: */
/* 无 */
/* 返回值: */
/* 返回unsigned short int型的16bits整数 */
/* 如果正确,返回值等于9000 */
/****************************************************************/
Uint16 Del_Direct(void);
/****************************************************************/
/* 函数名: Create_Keyfile() */
/* 功能: 建立密钥文件 */
/* 参数: */
/* FileID-----2字节长度的文件标识符 */
/* FileLen----2字节长度的文件空间大小 */
/* IncRight---增加密钥权限 */
/* 返回值: */
/* 返回unsigned short int型的16bits整数 */
/* 如果正确,返回值等于9000 */
/****************************************************************/
Uint16 Create_Keyfile(Uint16 FileID, Uint16 FileLen, Uint16 IncRight);
/****************************************************************/
/* 函数名: Increase_Key() */
/* 功能: 建立(39-外部认证/主控或36-线路保护)密钥 */
/* 参数: */
/* KeyID----- 密钥标识符 */
/* KeyType----密钥类型(0x39或0x36) */
/* UseRight---密钥使用权 */
/* AltRight---密钥更改权限 */
/* NextState--后续状态(如果密钥类型0x36保留为0xFF) */
/* ErrCount---错误计数器 */
/* Keys-------指向存放欲建立密钥的数组的指针 */
/* Mode-------加解密密钥方式(如果是8字节密钥选 */
/* DES8=0;否则为16字节密钥选DES16=1) */
/* 返回值: */
/* 返回unsigned short int型的16bits整数 */
/* 如果正确,返回值等于9000 */
/****************************************************************/
Uint16 Increase_Key(Uint16 KeyID, Uint16 KeyType, Uint16 UseRight, Uint16 AltRight, Uint16 NextState, Uint16 ErrCount, Uint16 *Keys,Uint16 Mode);
/****************************************************************/
/* 函数名: Create_Binaryfile() */
/* 功能: 建立带线路加密和MAC保护的二进制文件 */
/* 参数: */
/* FileID-----2字节长度的文件标识符 */
/* FileLen----2字节长度的文件空间大小 */
/* RrRight----读权限 */
/* WrRight----写权限 */
/* SafeKeyID--线路保护密钥标识(0x00,0x01,0x02,0x03)*/
/* 返回值: */
/* 返回unsigned short int型的16bits整数 */
/* 如果正确,返回值等于9000 */
/****************************************************************/
Uint16 Create_Binaryfile(Uint16 FileID, Uint16 FileLen, Uint16 RrRight, Uint16 WrRight, Uint16 SafeKeyID);
/****************************************************************/
/* 函数名: Selete_File() */
/* 功能: 选择文件 */
/* 参数: */
/* FileID-----2字节长度的文件标识符 */
/* 返回值: */
/* 返回unsigned short int型的16bits整数 */
/* 如果正确,返回值等于9000 */
/****************************************************************/
Uint16 Select_File(Uint16 FileID);
/****************************************************************/
/* 函数名: Write_Binaryfile() */
/* 功能: 将数据加密并写入带线路加密和MAC保护的二进制文件 */
/* 参数: */
/* InputPtr---指向存放欲写入数据数组的指针(注意:该 */
/* 数组的第一个字节存放写入的数据长度, */
/* 每次写入7个字节,加上长度字节共8字节) */
/* DataLen----欲写入数据的实际长度(不大于MAXDATA) */
/* Offset-----写入数据相对文件的2字节偏移量 */
/* Keys-------指向存放线路保护密钥数组的指针 */
/* Mode-------加解密方式(如果是8字节密钥选DES8=0; */
/* 否则为16字节密钥选DES16=1) */
/* 返回值: */
/* 返回unsigned short int型的16bits整数 */
/* 如果正确,返回值等于9000 */
/****************************************************************/
Uint16 Write_Binaryfile(Uint16 *InputPtr,Uint16 DataLen, Uint16 Offset, Uint16 *Keys, Uint16 Mode);
/****************************************************************/
/* 函数名: Read_Binaryfile() */
/* 功能: 从带线路加密和MAC保护的二进制文件读出密文数据 */
/* 参数: */
/* Offset-----读出数据相对文件的2字节偏移量 */
/* DataLen----欲读出的数据长度(16进制表示) */
/* Keys-------指向存放线路保护密钥数组的指针 */
/* OutputPtr--指向存放解密后数据数组的指针 */
/* Mode-------加解密方式(如果是8字节密钥选DES8=0; */
/* 否则为16字节密钥选DES16=1) */
/* 返回值: */
/* 返回unsigned short int型的16bits整数 */
/* 如果正确,返回值等于9000 */
/****************************************************************/
Uint16 Read_Binaryfile(Uint16 Offset, Uint16 DataLen, Uint16 *Keys, Uint16 *OutputPtr, Uint16 Mode);
#endif
/******************************************************************************/
/* No more */
/******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -