CPU卡程序设计实例(二十二)CPU卡内部认证

来源:互联网 发布:淘宝网食品类 编辑:程序博客网 时间:2024/06/01 20:29

/*******************************************

函数名称:CardInsideVerify

函数功能:卡内部认证

输入参数:pcReCardRand-卡产生的随机数, KEYID--认证密钥标识符

输出参数:pcReceDataBuff,加密后的数据

描述:发命令头-发命令数据-发“取响应数据”-判断是否正确

*******************************************/

unsigned char *CardInsideVerify(unsigned char pcReCardRand[8],unsigned char KEYID)

{

unsigned char cReceCardDatdBuff2[8]={0};

unsigned char *pcReceDataBuff;

unsigned int itemp;

cCommandLen=0x05;

TxAndRxBuff[0]=0x00;

TxAndRxBuff[1]=0x88;

TxAndRxBuff[2]=0x00;

TxAndRxBuff[3]=KEYID;

TxAndRxBuff[4]=0x08;

SendCommandHead_Pro();

if(ErrorRWBIT&CardError) goto CardInsideValiEnd;

memcpy(&TxAndRxBuff[0],&pcReCardRand[0],8);

Delay1XETU(4);

cCommandLen=8;

SendCommand(cCommandLen);//

TxAndRxBuff[0]=CardReceChar();

TxAndRxBuff[1]=CardReceChar();

SendC0Comm();

if(ErrorRWBIT&CardError) goto CardInsideValiEnd;

for(itemp=0;itemp<8;itemp++)

{

cReceCardDatdBuff2[itemp]=CardReceChar(); //接受cpu卡返回信息

if(ErrorRWBIT&CardError) break;

}

TxAndRxBuff[0]=CardReceChar();

TxAndRxBuff[1]=CardReceChar();

if((TxAndRxBuff[0]!=0x90)&&(TxAndRxBuff[1]!=0x00))

{

CardError=ErrorRWBIT|CardError;

goto CardInsideValiEnd;

}

CardInsideValiEnd:

pcReceDataBuff=&cReceCardDatdBuff2[0];

delay_ms2M(5);

return pcReceDataBuff;

}

0 0
原创粉丝点击