⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cardapi.c

📁 台灣自然人憑證登入系統java card login 走PKCS-15
💻 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 + -