/*******************************************
函数名称:Get_RandNum
函数功能:从卡或者ESAM取8字节随机数
输入参数:无
输出参数:*pcRandBuff
描述:发命令头-接收到的数据等于命令头中的第二字节后,接下来的8个字节是随机数
*******************************************/
unsigned char *Get_RandNum(void)
{
unsigned char cRandBuff[10]={0};
unsigned char *pcRandBuff;
unsigned int itemp;
cCommandLen=0x05;
TxAndRxBuff[0]=0x00;
TxAndRxBuff[1]=0x84;
TxAndRxBuff[2]=0x00;
TxAndRxBuff[3]=0x00;
TxAndRxBuff[4]=0x08;
SendCommandHead_Pro();
if(ICSAM&icflag1)
{
for(itemp=0;itemp<10;itemp++)
{
cRandBuff[itemp]=CardReceChar();
if(ErrorReadWriteBIT&iErrorRWrCard) goto GetRandNumEnd;
}
}
else
{
for(itemp=0;itemp<10;itemp++)
{
cRandBuff[itemp]=EsamReceChar();
if(ErrorReadWriteBIT&iErrorRWrCard) goto GetRandNumEnd;
}
}
if((cRandBuff[8]!=0x90)&&(cRandBuff[9]!=0x00))
{
iErrorRWrCard=ErrorRandBIT|iErrorRWrCard;
}
GetRandNumEnd:
delay_ms2M(5);
pcRandBuff=&cRandBuff[0];
return pcRandBuff;
}
/*******************************************
函数名称:Get_RandNum4Byte
函数功能:从卡或者ESAM取4字节随机数
输入参数:无
输出参数:*pcRandBuff
描述:发命令头-接收到的数据等于命令头中的第二字节后,接下来的4个字节是随机数
*******************************************/
unsigned char *Get_RandNum4Byte(void)
{
unsigned char cRandBuff[6]={0};
unsigned char *pcRandBuff;
unsigned int itemp;
cCommandLen=0x05;
TxAndRxBuff[0]=0x00;
TxAndRxBuff[1]=0x84;
TxAndRxBuff[2]=0x00;
TxAndRxBuff[3]=0x00;
TxAndRxBuff[4]=0x04;
SendCommandHead_Pro();
if(ICSAM&icflag1)
{
for(itemp=0;itemp<6;itemp++)
{
cRandBuff[itemp]=CardReceChar();
if(ErrorReadWriteBIT&iErrorRWrCard) goto GetRandNum4ByteEnd;
}
}
else
{
for(itemp=0;itemp<6;itemp++)
{
cRandBuff[itemp]=EsamReceChar();
if(ErrorReadWriteBIT&iErrorRWrCard) goto GetRandNum4ByteEnd;
}
}
if((cRandBuff[4]!=0x90)&&(cRandBuff[5]!=0x00))
{
iErrorRWrCard=ErrorRandBIT|iErrorRWrCard;
}
GetRandNum4ByteEnd:
delay_ms2M(5);
pcRandBuff=&cRandBuff[0];
return pcRandBuff;
}