📄 cardapi.c
字号:
/*
This Smart Card API is sample for MOICA card.
*/
#include <stdio.h>
#include <winscard.h>
#include <tchar.h>
#include "SCcommand.h"
LONG Getcardserialnumber( SCARDHANDLE hCardHandle,
unsigned char *serialNumber,
int *serialNumberLen)
{
LONG lReturn;
DumpBuf ( " **Select Card SN EF(0xFE14):", 0 , 0 , 0 );
lReturn = SelEF ( hCardHandle, 0xFE14 );
if ( SCARD_S_SUCCESS != lReturn )
{
printf("Failed Select EF!\n");
*serialNumberLen = 0;
return lReturn;
}
lReturn = ReadBinary ( hCardHandle, 0x00, 16, serialNumber );
if ( SCARD_S_SUCCESS != lReturn )
{
printf("Failed Read binary!\n");
*serialNumberLen = 0;
return lReturn;
}
*serialNumberLen = 16;
return lReturn;
}
BYTE G_D_DF_AID[12] = { 0xA0, 0x00, 0x00, 0x00,
'c', 'P', 'K', 'C', 'S', '-', '1', '5'};
LONG Readcertificate( SCARDHANDLE hCardHandle,
unsigned char *certificate)
{
WORD wOffset;
int i;
LONG lReturn;
DumpBuf ( " **Select DF:", 0 , 0 , 0 );
lReturn = SelDF ( hCardHandle, G_D_DF_AID );
if ( SCARD_S_SUCCESS != lReturn )
{
printf("Failed Select DF!\n");
return lReturn;
}
DumpBuf ( " **Select Signature(0x4604) Cert EF:", 0 , 0 , 0 );
lReturn = SelEF ( hCardHandle, 0x4604 );
if ( SCARD_S_SUCCESS != lReturn )
{
printf("Failed Select EF!\n");
return lReturn;
}
wOffset = 0;
DumpBuf ( " **Read Certificate Data(1500 Bytes):", 0 , 0 , 0 );
for( i=0; i<6; i++ )
{
lReturn = ReadBinary ( hCardHandle, wOffset, 250, &certificate[wOffset]);
if ( SCARD_S_SUCCESS != lReturn )
{
printf("Failed Read binary!\n");
return lReturn;
}
wOffset += 250;
}
return lReturn;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -