cardapi.c

来自「台灣自然人憑證登入系統java card login 走PKCS-15」· C语言 代码 · 共 93 行

C
93
字号

/*
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 + =
减小字号Ctrl + -
显示快捷键?