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

📄 file.cpp

📁 台灣自然人憑證登入系統java card login 走PKCS-15
💻 CPP
字号:
#include "SCcommand.h"

/*
	SelEF
*/
LONG SelEF ( SCARDHANDLE hCard,WORD   wFID )
{
   	LONG _lResult;
	SCARD_IO_REQUEST  _ioSendPci;
	SCARD_IO_REQUEST  _ioRecvPci;
	BYTE              _CAPDU [300];
	DWORD             _dwCAPDULen;
	BYTE              _RAPDU [300];
	DWORD             _dwRAPDULen=0;

   _CAPDU [ CLA ] = 0x00;	//CLA_NORMAL;
   _CAPDU [ INS ] = 0xA4;	//DSA_SELECT_FILE;
   _CAPDU [ P1  ] = 0x02;
   _CAPDU [ P2  ] = 0x0C;
   _CAPDU [ LC  ] = 2;
   _CAPDU [ DATAC ]    = (BYTE)((wFID >> 8) & 0x00FF);
   _CAPDU [ DATAC + 1] = (BYTE)( wFID & 0x00FF);

   _dwCAPDULen = _CAPDU [ LC ] + 5;
   _dwRAPDULen = 300;
   _ioSendPci.dwProtocol  = SCARD_PROTOCOL_T1;
   _ioSendPci.cbPciLength = sizeof ( _ioSendPci );
   _ioRecvPci.dwProtocol  = SCARD_PROTOCOL_T1;
   _ioRecvPci.cbPciLength = sizeof ( _ioRecvPci );


   _lResult = SCardTransmit ( hCard, &_ioSendPci, _CAPDU, _dwCAPDULen, &_ioRecvPci, _RAPDU, &_dwRAPDULen );

 
	if ( _lResult == SCARD_S_SUCCESS )
   {

#ifdef _DEBUG
		DumpBuf ( "<SelEF> ", (char *) _CAPDU, (int) _dwCAPDULen, 0  );
		DumpBuf ( "R = ", (char *) _RAPDU, (int) _dwRAPDULen, 1 );
#endif
		if ( ProcessSW ( _RAPDU, _dwRAPDULen ) == FALSE )
			_lResult = ICC_ERR_SW1SW2;	  
	
   }
  
	return ( _lResult );
}


/*
	SelDF
*/
LONG SelDF ( SCARDHANDLE hCard, BYTE *DFAID )
{
   	LONG _lResult;
	SCARD_IO_REQUEST  _ioSendPci;
	SCARD_IO_REQUEST  _ioRecvPci;
	BYTE              _CAPDU [300];
	DWORD             _dwCAPDULen;	
	BYTE              _RAPDU [300];
	DWORD             _dwRAPDULen=0;

   _CAPDU [ CLA ] = 0x00;	//CLA_NORMAL;
   _CAPDU [ INS ] = 0xA4;	//DSA_SELECT_FILE;
   _CAPDU [ P1  ] = 0x04;
   _CAPDU [ P2  ] = 0x0C;
   _CAPDU [ LC  ] = 0x0C;

   for( BYTE i=0; i<_CAPDU [ LC  ]; i++ )
	_CAPDU [ DATAC + i]    = (BYTE)(DFAID[i]);

   _dwCAPDULen = _CAPDU [ LC ] + 5;
   _dwRAPDULen = 300;
   _ioSendPci.dwProtocol  = SCARD_PROTOCOL_T1;
   _ioSendPci.cbPciLength = sizeof ( _ioSendPci );
   _ioRecvPci.dwProtocol  = SCARD_PROTOCOL_T1;
   _ioRecvPci.cbPciLength = sizeof ( _ioRecvPci );


   _lResult = SCardTransmit ( hCard, &_ioSendPci, _CAPDU, _dwCAPDULen, &_ioRecvPci, _RAPDU, &_dwRAPDULen );

 
	if ( _lResult == SCARD_S_SUCCESS )
   {

#ifdef _DEBUG
		DumpBuf ( "<SelDF> ", (char *) _CAPDU, (int) _dwCAPDULen, 0  );
		DumpBuf ( "R = ", (char *) _RAPDU, (int) _dwRAPDULen, 1 );
#endif
		if ( ProcessSW ( _RAPDU, _dwRAPDULen ) == FALSE )
			_lResult = ICC_ERR_SW1SW2;	  
	
   }
  
	return ( _lResult );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -