📄 evalos.c
字号:
#include <string.h>
#include <stdio.h>
#include <m500a.h>
extern unsigned char FWI;
extern unsigned char BLK;
char EvalOS_GetRomInfo(unsigned char CID, unsigned char *Buf)
{
unsigned char len;
Buf[0]=0x0A|BLK;// I-block PCB with CID
BLK ^= 1; // Toggle block number
Buf[1]=CID; // CID
Buf[2]=0xb8; // INF:CLA
Buf[3]=0x00; // INF:INS
Buf[4]=0x03; // INF:P1
Buf[5]=0x00; // INF:P2
Buf[6]=0x00; // INF:Le
if((M500PiccExchangeBlock(Buf,9,Buf,&len,1,FWI))!=MI_OK) return(!MI_OK);
if(Buf[len-4]==0x90) return(MI_OK);
else return(!MI_OK);
}
char EvalOS_GetUID(unsigned char CID, unsigned char *Buf)
{
unsigned char len;
Buf[0]=0x0A|BLK;// I-block PCB with CID
BLK ^= 1; // Toggle block number
Buf[1]=CID; // CID
Buf[2]=0xb8; // INF:CLA
Buf[3]=0x00; // INF:INS
Buf[4]=0x01; // INF:P1
Buf[5]=0x00; // INF:P2
Buf[6]=0x00; // INF:Le
if(M500PiccExchangeBlock(Buf,9,Buf,&len,1,FWI)!=MI_OK) return(!MI_OK);
if(Buf[len-4]==0x90) return(MI_OK);
else return(!MI_OK);
}
char EvalOS_GetChipInfo(unsigned char CID, unsigned char *Buf)
{
unsigned char len;
Buf[0]=0x0A|BLK;// I-block PCB with CID
BLK ^= 1; // Toggle block number
Buf[1]=CID; // CID
Buf[2]=0xb8; // INF:CLA
Buf[3]=0x00; // INF:INS
Buf[4]=0x02; // INF:P1
Buf[5]=0x00; // INF:P2
Buf[6]=0x00; // INF:Le
if(M500PiccExchangeBlock(Buf,9,Buf,&len,1,FWI)!=MI_OK) return(!MI_OK);
if(Buf[len-4]==0x90) return(MI_OK);
else return(!MI_OK);
}
char EvalOS_RSAEncpDecp(unsigned char CID,
unsigned char *Buf,
unsigned char Encrypt,
unsigned char datalen)
{
unsigned char len,mm,nn;
static unsigned char regvalue5;
for(len=(datalen-1); len>0; len--)
{
Buf[len+7]=Buf[len];
}
Buf[7]=Buf[0];
Buf[0]=0x0A|BLK;// I-block PCB with CID
BLK ^= 1; // Toggle block number
Buf[1]=CID; // CID
Buf[2]=0xb8; // INF:CLA
Buf[3]=0xb0; // INF:INS
if(Encrypt)
Buf[4]=0x78; // INF:P1
else
Buf[4]=0x68; // INF:P1
if(datalen == 64) Buf[5]=0x02;
else if(datalen == 96) Buf[5]=0x05;
else if(datalen == 128) Buf[5]=0x08;
else if(datalen == 192) Buf[5]=0x0b;
Buf[6]=datalen; // INF:Lc
Buf[datalen+7]=datalen; // INF:Le
if(M500PiccExchangeBlock(Buf,datalen+10,Buf,&len,1,FWI) != MI_OK) return(!MI_OK);
if(Buf[len-4]==0x90) return(MI_OK);
else if((Buf[0]&0xf0) == 0xf0)
{
M500PcdWriteRegister(0x1b,regvalue5); // For testing purpose
if(nn=M500PiccExchangeBlock(Buf,5,Buf,&len,1,Buf[2]&0x0f) != MI_OK) return(!MI_OK);
mm=len;
if(Buf[len-4]==0x90) return(MI_OK);
}
else return(!MI_OK);
}
char EvalOS_EnableTestQ(unsigned char CID, unsigned char *Buf)
{
unsigned char len;
Buf[0]=0x0A|BLK;// I-block PCB with CID
BLK ^= 1; // Toggle block number
Buf[1]=CID; // CID
Buf[2]=0xb8; // INF:CLA
Buf[3]=0x24; // INF:INS
Buf[4]=0x03; // INF:P1
Buf[5]=0x00; // INF:P2
Buf[6]=0x00; // INF:Le
if(M500PiccExchangeBlock(Buf,9,Buf,&len,1,FWI)!=MI_OK) return(!MI_OK);
if(Buf[len-4]==0x90) return(MI_OK);
else return(!MI_OK);
}
char ISO14443_4_ExchangeData(unsigned char *send_data,
unsigned char send_bytelen,
unsigned char *rec_data,
unsigned char *rec_bytelen,
unsigned char append_crc,
unsigned char timeout )
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -