📄 idea.h
字号:
/**********************************************************************
* idea.h
*
* Author : Sunflower
* CopyRight 2001 DATech
*
* 得安公司第二代加密卡idea运算程序。包括密钥生成、加解密
**********************************************************************/
#ifndef _IDEA_H_
#define _IDEA_H_
#define MUL(x,y) \
((t16 = (y))? \
(x = low16(x))? \
t32 = (ARM_UINT32)x*t16, \
x = low16(t32), \
t16 = (unsigned short)(t32 >> 16), \
x = (unsigned short)((x-t16)+(x<t16)) \
: \
(x = (unsigned short)(1-t16)) \
: \
(x = (unsigned short)(1-x)))
#define low16(x) (unsigned short)(x)
//typedef unsigned short ARM_UINT16;
void idea_enc(ARM_IDEA_CTX *c,unsigned char *data,int blocks);
void idea_dec(ARM_IDEA_CTX *c,unsigned char *data,int blocks);
void ideaCipher(ARM_UINT8 *inbuf, ARM_UINT8 *outbuf, ARM_UINT16 *key);
ARM_UINT16 mulInv(ARM_UINT16 x);
ARM_RV ideaExpandKey(ARM_UINT8 const *userkey, ARM_UINT32 userkeyLen,
ARM_UINT16 *EK, ARM_UINT32 *EKbytes);
ARM_RV ideaInvertKey(ARM_UINT16 const *EK, ARM_UINT32 ekBytes,
ARM_UINT16 DK[IDEAKEYLEN], ARM_UINT32 *dkBytes);
ARM_RV Arm_IdeaExpandEncKey(
ARM_UINT8 *pbIdeaKey,
ARM_UINT32 ulIdeaKeyLen,
ARM_UINT8 *pbIdeaEncKey,
ARM_UINT32 *ulIdeaEncKeyLen);
ARM_RV Arm_IdeaExpandDecKey(
ARM_UINT8 *pbIdeaKey,
ARM_UINT32 ulIdeaKeyLen,
ARM_UINT8 *pbIdeaDecKey,
ARM_UINT32 *ulIdeaDecKeyLen);
ARM_RV Arm_IdeaEncRaw(
ARM_UINT8 *pbIdeaEncKey,
ARM_UINT32 ulIdeaEncKeyLen,
ARM_UINT8 *pbInData,
ARM_UINT32 ulInDataLen,
ARM_UINT8 *pbOutData,
ARM_UINT32 *ulOutDataLen);
ARM_RV Arm_IdeaDecRaw(
ARM_UINT8 *pbIdeaDecKey,
ARM_UINT32 ulIdeaDecKeyLen,
ARM_UINT8 *pbInData,
ARM_UINT32 ulInDataLen,
ARM_UINT8 *pbOutData,
ARM_UINT32 *ulOutDataLen);
ARM_RV Arm_IdeaEncEcbInitialize(
ARM_IDEA_CTX *ideaCtx,
ARM_UINT8 *pbIdeaKey,
ARM_UINT32 ulIdeaKeyLen);
ARM_RV Arm_IdeaEncEcbUpdate(
ARM_IDEA_CTX *ideaCtx,
ARM_UINT8 *pbInData,
ARM_UINT32 ulInDataLen,
ARM_UINT8 *pbOutData,
ARM_UINT32 *ulOutDataLen);
ARM_RV Arm_IdeaEncEcbFinalize(
ARM_IDEA_CTX *ideaCtx,
ARM_UINT8 *pbInData,
ARM_UINT32 ulInDataLen,
ARM_UINT8 *pbOutData,
ARM_UINT32 *ulOutDataLen);
ARM_RV Arm_IdeaDecEcbInitialize(
ARM_IDEA_CTX *ideaCtx,
ARM_UINT8 *pbIdeaKey,
ARM_UINT32 ulIdeaKeyLen);
ARM_RV Arm_IdeaDecEcbUpdate(
ARM_IDEA_CTX *ideaCtx,
ARM_UINT8 *pbInData,
ARM_UINT32 ulInDataLen,
ARM_UINT8 *pbOutData,
ARM_UINT32 *ulOutDataLen);
ARM_RV Arm_IdeaDecEcbFinalize(
ARM_IDEA_CTX *ideaCtx,
ARM_UINT8 *pbInData,
ARM_UINT32 ulInDataLen,
ARM_UINT8 *pbOutData,
ARM_UINT32 *ulOutDataLen);
ARM_RV Arm_IdeaEncCbcInitialize(
ARM_IDEA_CTX *ideaCtx,
ARM_UINT8 *pbIdeaKey,
ARM_UINT32 ulIdeaKeyLen);
// ARM_UINT8 *pbIv);
ARM_RV Arm_IdeaEncCbcUpdate(
ARM_IDEA_CTX *ideaCtx,
ARM_UINT8 *pbInData,
ARM_UINT32 ulInDataLen,
ARM_UINT8 *pbOutData,
ARM_UINT32 *ulOutDataLen);
ARM_RV Arm_IdeaEncCbcFinalize(
ARM_IDEA_CTX *ideaCtx,
ARM_UINT8 *pbInData,
ARM_UINT32 ulInDataLen,
ARM_UINT8 *pbOutData,
ARM_UINT32 *ulOutDataLen);
ARM_RV Arm_IdeaDecCbcInitialize(
ARM_IDEA_CTX *ideaCtx,
ARM_UINT8 *pbIdeaKey,
ARM_UINT32 ulIdeaKeyLen);
ARM_RV Arm_IdeaDecCbcUpdate(
ARM_IDEA_CTX *ideaCtx,
ARM_UINT8 *pbInData,
ARM_UINT32 ulInDataLen,
ARM_UINT8 *pbOutData,
ARM_UINT32 *ulOutDataLen);
ARM_RV Arm_IdeaDecCbcFinalize(
ARM_IDEA_CTX *ideaCtx,
ARM_UINT8 *pbInData,
ARM_UINT32 ulInDataLen,
ARM_UINT8 *pbOutData,
ARM_UINT32 *ulOutDataLen);
/*****************************************************************
Arm_Idea_Block : Idea Operation
Return value:
ARMERR_SUCCESS : Success
other : failed
Parameters:
Command : command data buffer
: nLength for keyLen
: nInstruction for DES_ENCKEY
: pParameter for key be expanded
Result : Result data buffer
*****************************************************************/
ARM_RV Arm_Idea_Block(CardCommand *Command, CardResult *Result);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -