mirror of
https://github.com/pcsc-for-php/pcsc.git
synced 2026-08-08 21:09:26 +02:00
Replaced tabs with 2 whitespaces in pcsc.c
This commit is contained in:
parent
aac7782210
commit
1226d9ace8
1 changed files with 134 additions and 135 deletions
263
pcsc.c
263
pcsc.c
|
|
@ -28,7 +28,7 @@ ZEND_DECLARE_MODULE_GLOBALS(pcsc);
|
||||||
/* Compatibility shims */
|
/* Compatibility shims */
|
||||||
#ifndef ZEND_FETCH_RESOURCE
|
#ifndef ZEND_FETCH_RESOURCE
|
||||||
#define ZEND_FETCH_RESOURCE(res, stmt_type, stmt, stmt_id, resource_type_name, le_stmt) \
|
#define ZEND_FETCH_RESOURCE(res, stmt_type, stmt, stmt_id, resource_type_name, le_stmt) \
|
||||||
res = (stmt_type)zend_fetch_resource(Z_RES_P(*stmt),resource_type_name,le_stmt);
|
res = (stmt_type)zend_fetch_resource(Z_RES_P(*stmt),resource_type_name,le_stmt);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef FALSE
|
#ifndef FALSE
|
||||||
|
|
@ -71,44 +71,44 @@ ZEND_GET_MODULE(pcsc)
|
||||||
/* resource container: context */
|
/* resource container: context */
|
||||||
static int le_pcsc_ctx_res;
|
static int le_pcsc_ctx_res;
|
||||||
static void php_pcsc_ctx_res_dtor(zend_resource *rsrc) {
|
static void php_pcsc_ctx_res_dtor(zend_resource *rsrc) {
|
||||||
SCARDCONTEXT context;
|
SCARDCONTEXT context;
|
||||||
LONG rc=0;
|
LONG rc=0;
|
||||||
|
|
||||||
context=(SCARDCONTEXT)rsrc->ptr;
|
|
||||||
rc = SCardIsValidContext(context);
|
|
||||||
if (rc != SCARD_S_SUCCESS) {
|
|
||||||
php_error_docref(NULL, E_WARNING, "PC/SC context dtor: SCardIsValidContext returned %s (0x%lx)", php_pcsc_error_to_string(rc), rc);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
rc = SCardReleaseContext(context);
|
context=(SCARDCONTEXT)rsrc->ptr;
|
||||||
if (rc != SCARD_S_SUCCESS) {
|
rc = SCardIsValidContext(context);
|
||||||
php_error_docref(NULL, E_WARNING, "PC/SC context dtor: SCardReleaseContext returned %s (0x%lx)", php_pcsc_error_to_string(rc), rc);
|
if (rc != SCARD_S_SUCCESS) {
|
||||||
return;
|
php_error_docref(NULL, E_WARNING, "PC/SC context dtor: SCardIsValidContext returned %s (0x%lx)", php_pcsc_error_to_string(rc), rc);
|
||||||
}
|
return;
|
||||||
return;
|
}
|
||||||
|
|
||||||
|
rc = SCardReleaseContext(context);
|
||||||
|
if (rc != SCARD_S_SUCCESS) {
|
||||||
|
php_error_docref(NULL, E_WARNING, "PC/SC context dtor: SCardReleaseContext returned %s (0x%lx)", php_pcsc_error_to_string(rc), rc);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* resource container: connection */
|
/* resource container: connection */
|
||||||
static int le_pcsc_conn_res;
|
static int le_pcsc_conn_res;
|
||||||
static void php_pcsc_conn_res_dtor(zend_resource *rsrc) {
|
static void php_pcsc_conn_res_dtor(zend_resource *rsrc) {
|
||||||
SCARDHANDLE hCard;
|
SCARDHANDLE hCard;
|
||||||
LONG rc;
|
LONG rc;
|
||||||
|
|
||||||
//TODO: actually use this
|
//TODO: actually use this
|
||||||
return;
|
return;
|
||||||
php_printf("conn dtor\n");
|
php_printf("conn dtor\n");
|
||||||
hCard=(SCARDHANDLE)rsrc->ptr;
|
hCard=(SCARDHANDLE)rsrc->ptr;
|
||||||
|
|
||||||
rc = SCardDisconnect(hCard, SCARD_LEAVE_CARD);
|
rc = SCardDisconnect(hCard, SCARD_LEAVE_CARD);
|
||||||
if (rc != SCARD_S_SUCCESS) {
|
if (rc != SCARD_S_SUCCESS) {
|
||||||
php_error_docref(NULL, E_WARNING, "PC/SC connection dtor: SCardDisconnect returned %s (0x%lx)", php_pcsc_error_to_string(rc), rc);
|
php_error_docref(NULL, E_WARNING, "PC/SC connection dtor: SCardDisconnect returned %s (0x%lx)", php_pcsc_error_to_string(rc), rc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TLS */
|
/* TLS */
|
||||||
static void php_pcsc_globals_ctor(zend_pcsc_globals* pcsc_globals) {
|
static void php_pcsc_globals_ctor(zend_pcsc_globals* pcsc_globals) {
|
||||||
pcsc_globals->last_errno=SCARD_S_SUCCESS;
|
pcsc_globals->last_errno=SCARD_S_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* {{{ PHP_MINIT_FUNCTION
|
/* {{{ PHP_MINIT_FUNCTION
|
||||||
|
|
@ -194,18 +194,18 @@ PHP_MINIT_FUNCTION(pcsc)
|
||||||
#ifdef SCARD_E_WRITE_TOO_MANY
|
#ifdef SCARD_E_WRITE_TOO_MANY
|
||||||
REGISTER_PCSC_CONSTANT(SCARD_E_WRITE_TOO_MANY);
|
REGISTER_PCSC_CONSTANT(SCARD_E_WRITE_TOO_MANY);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
REGISTER_PCSC_CONSTANT(SCARD_F_COMM_ERROR);
|
REGISTER_PCSC_CONSTANT(SCARD_F_COMM_ERROR);
|
||||||
REGISTER_PCSC_CONSTANT(SCARD_F_INTERNAL_ERROR);
|
REGISTER_PCSC_CONSTANT(SCARD_F_INTERNAL_ERROR);
|
||||||
REGISTER_PCSC_CONSTANT(SCARD_F_UNKNOWN_ERROR);
|
REGISTER_PCSC_CONSTANT(SCARD_F_UNKNOWN_ERROR);
|
||||||
REGISTER_PCSC_CONSTANT(SCARD_F_WAITED_TOO_LONG);
|
REGISTER_PCSC_CONSTANT(SCARD_F_WAITED_TOO_LONG);
|
||||||
|
|
||||||
#ifdef SCARD_P_SHUTDOWN
|
#ifdef SCARD_P_SHUTDOWN
|
||||||
REGISTER_PCSC_CONSTANT(SCARD_P_SHUTDOWN);
|
REGISTER_PCSC_CONSTANT(SCARD_P_SHUTDOWN);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
REGISTER_PCSC_CONSTANT(SCARD_S_SUCCESS);
|
REGISTER_PCSC_CONSTANT(SCARD_S_SUCCESS);
|
||||||
|
|
||||||
#ifdef SCARD_W_CANCELLED_BY_USER
|
#ifdef SCARD_W_CANCELLED_BY_USER
|
||||||
REGISTER_PCSC_CONSTANT(SCARD_W_CANCELLED_BY_USER);
|
REGISTER_PCSC_CONSTANT(SCARD_W_CANCELLED_BY_USER);
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -284,82 +284,82 @@ PHP_MINFO_FUNCTION(pcsc)
|
||||||
|
|
||||||
/* map error codes to string */
|
/* map error codes to string */
|
||||||
static char* php_pcsc_error_to_string(DWORD dwRC) {
|
static char* php_pcsc_error_to_string(DWORD dwRC) {
|
||||||
switch(dwRC) {
|
switch(dwRC) {
|
||||||
#ifdef SCARD_E_BAD_SEEK
|
#ifdef SCARD_E_BAD_SEEK
|
||||||
case SCARD_E_BAD_SEEK: return "SCARD_E_BAD_SEEK";
|
case SCARD_E_BAD_SEEK: return "SCARD_E_BAD_SEEK";
|
||||||
#endif
|
#endif
|
||||||
case SCARD_E_CANCELLED: return "SCARD_E_CANCELLED";
|
case SCARD_E_CANCELLED: return "SCARD_E_CANCELLED";
|
||||||
case SCARD_E_CANT_DISPOSE: return "SCARD_E_CANT_DISPOSE";
|
case SCARD_E_CANT_DISPOSE: return "SCARD_E_CANT_DISPOSE";
|
||||||
case SCARD_E_CARD_UNSUPPORTED: return "SCARD_E_CARD_UNSUPPORTED";
|
case SCARD_E_CARD_UNSUPPORTED: return "SCARD_E_CARD_UNSUPPORTED";
|
||||||
#ifdef SCARD_E_CERTIFICATE_UNAVAILABLE
|
#ifdef SCARD_E_CERTIFICATE_UNAVAILABLE
|
||||||
case SCARD_E_CERTIFICATE_UNAVAILABLE: return "SCARD_E_CERTIFICATE_UNAVAILABLE";
|
case SCARD_E_CERTIFICATE_UNAVAILABLE: return "SCARD_E_CERTIFICATE_UNAVAILABLE";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARD_E_COMM_DATA_LOST
|
#ifdef SCARD_E_COMM_DATA_LOST
|
||||||
case SCARD_E_COMM_DATA_LOST: return "SCARD_E_COMM_DATA_LOST";
|
case SCARD_E_COMM_DATA_LOST: return "SCARD_E_COMM_DATA_LOST";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARD_E_DIR_NOT_FOUND
|
#ifdef SCARD_E_DIR_NOT_FOUND
|
||||||
case SCARD_E_DIR_NOT_FOUND: return "SCARD_E_DIR_NOT_FOUND";
|
case SCARD_E_DIR_NOT_FOUND: return "SCARD_E_DIR_NOT_FOUND";
|
||||||
#endif
|
#endif
|
||||||
case SCARD_E_DUPLICATE_READER: return "SCARD_E_DUPLICATE_READER";
|
case SCARD_E_DUPLICATE_READER: return "SCARD_E_DUPLICATE_READER";
|
||||||
#ifdef SCARD_E_FILE_NOT_FOUND
|
#ifdef SCARD_E_FILE_NOT_FOUND
|
||||||
case SCARD_E_FILE_NOT_FOUND: return "SCARD_E_FILE_NOT_FOUND";
|
case SCARD_E_FILE_NOT_FOUND: return "SCARD_E_FILE_NOT_FOUND";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARD_E_ICC_CREATEORDER
|
#ifdef SCARD_E_ICC_CREATEORDER
|
||||||
case SCARD_E_ICC_CREATEORDER: return "SCARD_E_ICC_CREATEORDER";
|
case SCARD_E_ICC_CREATEORDER: return "SCARD_E_ICC_CREATEORDER";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARD_E_ICC_INSTALLATION
|
#ifdef SCARD_E_ICC_INSTALLATION
|
||||||
case SCARD_E_ICC_INSTALLATION: return "SCARD_E_ICC_INSTALLATION";
|
case SCARD_E_ICC_INSTALLATION: return "SCARD_E_ICC_INSTALLATION";
|
||||||
#endif
|
#endif
|
||||||
case SCARD_E_INSUFFICIENT_BUFFER: return "SCARD_E_INSUFFICIENT_BUFFER";
|
case SCARD_E_INSUFFICIENT_BUFFER: return "SCARD_E_INSUFFICIENT_BUFFER";
|
||||||
case SCARD_E_INVALID_ATR: return "SCARD_E_INVALID_ATR";
|
case SCARD_E_INVALID_ATR: return "SCARD_E_INVALID_ATR";
|
||||||
#ifdef SCARD_E_INVALID_CHV
|
#ifdef SCARD_E_INVALID_CHV
|
||||||
case SCARD_E_INVALID_CHV: return "SCARD_E_INVALID_CHV";
|
case SCARD_E_INVALID_CHV: return "SCARD_E_INVALID_CHV";
|
||||||
#endif
|
#endif
|
||||||
case SCARD_E_INVALID_HANDLE: return "SCARD_E_INVALID_HANDLE";
|
case SCARD_E_INVALID_HANDLE: return "SCARD_E_INVALID_HANDLE";
|
||||||
case SCARD_E_INVALID_PARAMETER: return "SCARD_E_INVALID_PARAMETER";
|
case SCARD_E_INVALID_PARAMETER: return "SCARD_E_INVALID_PARAMETER";
|
||||||
case SCARD_E_INVALID_TARGET: return "SCARD_E_INVALID_TARGET";
|
case SCARD_E_INVALID_TARGET: return "SCARD_E_INVALID_TARGET";
|
||||||
case SCARD_E_INVALID_VALUE: return "SCARD_E_INVALID_VALUE";
|
case SCARD_E_INVALID_VALUE: return "SCARD_E_INVALID_VALUE";
|
||||||
#ifdef SCARD_E_NO_ACCESS
|
#ifdef SCARD_E_NO_ACCESS
|
||||||
case SCARD_E_NO_ACCESS: return "SCARD_E_NO_ACCESS";
|
case SCARD_E_NO_ACCESS: return "SCARD_E_NO_ACCESS";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARD_E_NO_DIR
|
#ifdef SCARD_E_NO_DIR
|
||||||
case SCARD_E_NO_DIR: return "SCARD_E_NO_DIR";
|
case SCARD_E_NO_DIR: return "SCARD_E_NO_DIR";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARD_E_NO_FILE
|
#ifdef SCARD_E_NO_FILE
|
||||||
case SCARD_E_NO_FILE: return "SCARD_E_NO_FILE";
|
case SCARD_E_NO_FILE: return "SCARD_E_NO_FILE";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARD_E_NO_KEY_CONTAINER
|
#ifdef SCARD_E_NO_KEY_CONTAINER
|
||||||
case SCARD_E_NO_KEY_CONTAINER: return "SCARD_E_NO_KEY_CONTAINER";
|
case SCARD_E_NO_KEY_CONTAINER: return "SCARD_E_NO_KEY_CONTAINER";
|
||||||
#endif
|
#endif
|
||||||
case SCARD_E_NO_MEMORY: return "SCARD_E_NO_MEMORY";
|
case SCARD_E_NO_MEMORY: return "SCARD_E_NO_MEMORY";
|
||||||
case SCARD_E_NO_READERS_AVAILABLE: return "SCARD_E_NO_READERS_AVAILABLE";
|
case SCARD_E_NO_READERS_AVAILABLE: return "SCARD_E_NO_READERS_AVAILABLE";
|
||||||
case SCARD_E_NO_SERVICE: return "SCARD_E_NO_SERVICE";
|
case SCARD_E_NO_SERVICE: return "SCARD_E_NO_SERVICE";
|
||||||
case SCARD_E_NO_SMARTCARD: return "SCARD_E_NO_SMARTCARD";
|
case SCARD_E_NO_SMARTCARD: return "SCARD_E_NO_SMARTCARD";
|
||||||
#ifdef SCARD_E_NO_ACCESS
|
#ifdef SCARD_E_NO_ACCESS
|
||||||
case SCARD_E_NO_SUCH_CERTIFICATE: return "SCARD_E_NO_SUCH_CERTIFICATE";
|
case SCARD_E_NO_SUCH_CERTIFICATE: return "SCARD_E_NO_SUCH_CERTIFICATE";
|
||||||
#endif
|
#endif
|
||||||
case SCARD_E_NOT_READY: return "SCARD_E_NOT_READY";
|
case SCARD_E_NOT_READY: return "SCARD_E_NOT_READY";
|
||||||
case SCARD_E_NOT_TRANSACTED: return "SCARD_E_NOT_TRANSACTED";
|
case SCARD_E_NOT_TRANSACTED: return "SCARD_E_NOT_TRANSACTED";
|
||||||
case SCARD_E_PCI_TOO_SMALL: return "SCARD_E_PCI_TOO_SMALL";
|
case SCARD_E_PCI_TOO_SMALL: return "SCARD_E_PCI_TOO_SMALL";
|
||||||
case SCARD_E_PROTO_MISMATCH: return "SCARD_E_PROTO_MISMATCH";
|
case SCARD_E_PROTO_MISMATCH: return "SCARD_E_PROTO_MISMATCH";
|
||||||
case SCARD_E_READER_UNAVAILABLE: return "SCARD_E_READER_UNAVAILABLE";
|
case SCARD_E_READER_UNAVAILABLE: return "SCARD_E_READER_UNAVAILABLE";
|
||||||
case SCARD_E_READER_UNSUPPORTED: return "SCARD_E_READER_UNSUPPORTED";
|
case SCARD_E_READER_UNSUPPORTED: return "SCARD_E_READER_UNSUPPORTED";
|
||||||
#ifdef SCARD_E_SERVER_TOO_BUSY
|
#ifdef SCARD_E_SERVER_TOO_BUSY
|
||||||
case SCARD_E_SERVER_TOO_BUSY: return "SCARD_E_SERVER_TOO_BUSY";
|
case SCARD_E_SERVER_TOO_BUSY: return "SCARD_E_SERVER_TOO_BUSY";
|
||||||
#endif
|
#endif
|
||||||
case SCARD_E_SERVICE_STOPPED: return "SCARD_E_SERVICE_STOPPED";
|
case SCARD_E_SERVICE_STOPPED: return "SCARD_E_SERVICE_STOPPED";
|
||||||
case SCARD_E_SHARING_VIOLATION: return "SCARD_E_SHARING_VIOLATION";
|
case SCARD_E_SHARING_VIOLATION: return "SCARD_E_SHARING_VIOLATION";
|
||||||
case SCARD_E_SYSTEM_CANCELLED: return "SCARD_E_SYSTEM_CANCELLED";
|
case SCARD_E_SYSTEM_CANCELLED: return "SCARD_E_SYSTEM_CANCELLED";
|
||||||
case SCARD_E_TIMEOUT: return "SCARD_E_TIMEOUT";
|
case SCARD_E_TIMEOUT: return "SCARD_E_TIMEOUT";
|
||||||
#ifdef SCARD_E_UNEXPECTED
|
#ifdef SCARD_E_UNEXPECTED
|
||||||
case SCARD_E_UNEXPECTED: return "SCARD_E_UNEXPECTED";
|
case SCARD_E_UNEXPECTED: return "SCARD_E_UNEXPECTED";
|
||||||
#endif
|
#endif
|
||||||
case SCARD_E_UNKNOWN_CARD: return "SCARD_E_UNKNOWN_CARD";
|
case SCARD_E_UNKNOWN_CARD: return "SCARD_E_UNKNOWN_CARD";
|
||||||
case SCARD_E_UNKNOWN_READER: return "SCARD_E_UNKNOWN_READER";
|
case SCARD_E_UNKNOWN_READER: return "SCARD_E_UNKNOWN_READER";
|
||||||
#ifdef SCARD_E_UNKNOWN_RES_MNG
|
#ifdef SCARD_E_UNKNOWN_RES_MNG
|
||||||
case SCARD_E_UNKNOWN_RES_MNG: return "SCARD_E_UNKNOWN_RES_MNG";
|
case SCARD_E_UNKNOWN_RES_MNG: return "SCARD_E_UNKNOWN_RES_MNG";
|
||||||
#endif
|
#endif
|
||||||
/* apparently E_UNEXPECTED and E_UNSUPPORTED are defined
|
/* apparently E_UNEXPECTED and E_UNSUPPORTED are defined
|
||||||
by a buggy header file on Linux, causing a "double used constant"
|
by a buggy header file on Linux, causing a "double used constant"
|
||||||
error. Just leave this out on Linux, then.
|
error. Just leave this out on Linux, then.
|
||||||
*/
|
*/
|
||||||
|
|
@ -367,50 +367,50 @@ static char* php_pcsc_error_to_string(DWORD dwRC) {
|
||||||
case SCARD_E_UNSUPPORTED_FEATURE: return "SCARD_E_UNSUPPORTED_FEATURE";
|
case SCARD_E_UNSUPPORTED_FEATURE: return "SCARD_E_UNSUPPORTED_FEATURE";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARD_E_WRITE_TOO_MANY
|
#ifdef SCARD_E_WRITE_TOO_MANY
|
||||||
case SCARD_E_WRITE_TOO_MANY: return "SCARD_E_WRITE_TOO_MANY";
|
case SCARD_E_WRITE_TOO_MANY: return "SCARD_E_WRITE_TOO_MANY";
|
||||||
#endif
|
#endif
|
||||||
case SCARD_F_COMM_ERROR: return "SCARD_E_WRITE_TOO_MANY";
|
case SCARD_F_COMM_ERROR: return "SCARD_E_WRITE_TOO_MANY";
|
||||||
case SCARD_F_INTERNAL_ERROR: return "SCARD_F_INTERNAL_ERROR";
|
case SCARD_F_INTERNAL_ERROR: return "SCARD_F_INTERNAL_ERROR";
|
||||||
case SCARD_F_UNKNOWN_ERROR: return "SCARD_F_UNKNOWN_ERROR";
|
case SCARD_F_UNKNOWN_ERROR: return "SCARD_F_UNKNOWN_ERROR";
|
||||||
case SCARD_F_WAITED_TOO_LONG: return "SCARD_F_WAITED_TOO_LONG";
|
case SCARD_F_WAITED_TOO_LONG: return "SCARD_F_WAITED_TOO_LONG";
|
||||||
#ifdef SCARD_P_SHUTDOWN
|
#ifdef SCARD_P_SHUTDOWN
|
||||||
case SCARD_P_SHUTDOWN: return "SCARD_P_SHUTDOWN";
|
case SCARD_P_SHUTDOWN: return "SCARD_P_SHUTDOWN";
|
||||||
#endif
|
#endif
|
||||||
case SCARD_S_SUCCESS: return "SCARD_S_SUCCESS";
|
case SCARD_S_SUCCESS: return "SCARD_S_SUCCESS";
|
||||||
#ifdef SCARD_W_CANCELLED_BY_USER
|
#ifdef SCARD_W_CANCELLED_BY_USER
|
||||||
case SCARD_W_CANCELLED_BY_USER: return "SCARD_W_CANCELLED_BY_USER";
|
case SCARD_W_CANCELLED_BY_USER: return "SCARD_W_CANCELLED_BY_USER";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARD_W_CACHE_ITEM_NOT_FOUND
|
#ifdef SCARD_W_CACHE_ITEM_NOT_FOUND
|
||||||
case SCARD_W_CACHE_ITEM_NOT_FOUND: return "SCARD_W_CACHE_ITEM_NOT_FOUND";
|
case SCARD_W_CACHE_ITEM_NOT_FOUND: return "SCARD_W_CACHE_ITEM_NOT_FOUND";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARD_W_CACHE_ITEM_STALE
|
#ifdef SCARD_W_CACHE_ITEM_STALE
|
||||||
case SCARD_W_CACHE_ITEM_STALE: return "SCARD_W_CACHE_ITEM_STALE";
|
case SCARD_W_CACHE_ITEM_STALE: return "SCARD_W_CACHE_ITEM_STALE";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARD_W_CACHE_ITEM_TOO_BIG
|
#ifdef SCARD_W_CACHE_ITEM_TOO_BIG
|
||||||
case SCARD_W_CACHE_ITEM_TOO_BIG: return "SCARD_W_CACHE_ITEM_TOO_BIG";
|
case SCARD_W_CACHE_ITEM_TOO_BIG: return "SCARD_W_CACHE_ITEM_TOO_BIG";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARD_W_CARD_NOT_AUTHENTICATED
|
#ifdef SCARD_W_CARD_NOT_AUTHENTICATED
|
||||||
case SCARD_W_CARD_NOT_AUTHENTICATED: return "SCARD_W_CARD_NOT_AUTHENTICATED";
|
case SCARD_W_CARD_NOT_AUTHENTICATED: return "SCARD_W_CARD_NOT_AUTHENTICATED";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARD_W_CHV_BLOCKED
|
#ifdef SCARD_W_CHV_BLOCKED
|
||||||
case SCARD_W_CHV_BLOCKED: return "SCARD_W_CHV_BLOCKED";
|
case SCARD_W_CHV_BLOCKED: return "SCARD_W_CHV_BLOCKED";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARD_W_EOF
|
#ifdef SCARD_W_EOF
|
||||||
case SCARD_W_EOF: return "SCARD_W_EOF";
|
case SCARD_W_EOF: return "SCARD_W_EOF";
|
||||||
#endif
|
#endif
|
||||||
case SCARD_W_REMOVED_CARD: return "SCARD_W_REMOVED_CARD";
|
case SCARD_W_REMOVED_CARD: return "SCARD_W_REMOVED_CARD";
|
||||||
case SCARD_W_RESET_CARD: return "SCARD_W_RESET_CARD";
|
case SCARD_W_RESET_CARD: return "SCARD_W_RESET_CARD";
|
||||||
#ifdef SCARD_W_SECURITY_VIOLATION
|
#ifdef SCARD_W_SECURITY_VIOLATION
|
||||||
case SCARD_W_SECURITY_VIOLATION: return "SCARD_W_SECURITY_VIOLATION";
|
case SCARD_W_SECURITY_VIOLATION: return "SCARD_W_SECURITY_VIOLATION";
|
||||||
#endif
|
#endif
|
||||||
case SCARD_W_UNPOWERED_CARD: return "SCARD_W_UNPOWERED_CARD";
|
case SCARD_W_UNPOWERED_CARD: return "SCARD_W_UNPOWERED_CARD";
|
||||||
case SCARD_W_UNRESPONSIVE_CARD: return "SCARD_W_UNRESPONSIVE_CARD";
|
case SCARD_W_UNRESPONSIVE_CARD: return "SCARD_W_UNRESPONSIVE_CARD";
|
||||||
case SCARD_W_UNSUPPORTED_CARD: return "SCARD_W_UNSUPPORTED_CARD";
|
case SCARD_W_UNSUPPORTED_CARD: return "SCARD_W_UNSUPPORTED_CARD";
|
||||||
#ifdef SCARD_W_WRONG_CHV
|
#ifdef SCARD_W_WRONG_CHV
|
||||||
case SCARD_W_WRONG_CHV: return "SCARD_W_WRONG_CHV";
|
case SCARD_W_WRONG_CHV: return "SCARD_W_WRONG_CHV";
|
||||||
#endif
|
#endif
|
||||||
default: return "Unknown";
|
default: return "Unknown";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *e_bytes_to_hex(BYTE *buffer, DWORD length)
|
static char *e_bytes_to_hex(BYTE *buffer, DWORD length)
|
||||||
|
|
@ -453,15 +453,15 @@ static BYTE *e_hex_to_bytes(char *str, DWORD *length)
|
||||||
DWORD i, l;
|
DWORD i, l;
|
||||||
BYTE *buf;
|
BYTE *buf;
|
||||||
|
|
||||||
if (str == NULL) {
|
if (str == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
l = strlen(str) / 2;
|
l = strlen(str) / 2;
|
||||||
if (length != NULL) {
|
if (length != NULL) {
|
||||||
*length = l;
|
*length = l;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf = emalloc(l);
|
buf = emalloc(l);
|
||||||
|
|
||||||
for (i = 0; i < l; i++) {
|
for (i = 0; i < l; i++) {
|
||||||
|
|
@ -484,10 +484,10 @@ PHP_FUNCTION(scard_establish_context)
|
||||||
rc = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &scard_context);
|
rc = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &scard_context);
|
||||||
if (rc != SCARD_S_SUCCESS)
|
if (rc != SCARD_S_SUCCESS)
|
||||||
{
|
{
|
||||||
PCSC_G(last_errno) = rc;
|
PCSC_G(last_errno) = rc;
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
RETURN_RES(zend_register_resource((void*)scard_context,le_pcsc_ctx_res));
|
RETURN_RES(zend_register_resource((void*)scard_context,le_pcsc_ctx_res));
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
@ -499,15 +499,15 @@ PHP_FUNCTION(scard_is_valid_context)
|
||||||
LONG rc = 0;
|
LONG rc = 0;
|
||||||
zval* ctx_res;
|
zval* ctx_res;
|
||||||
SCARDCONTEXT context;
|
SCARDCONTEXT context;
|
||||||
|
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &ctx_res) == FAILURE) {
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &ctx_res) == FAILURE) {
|
||||||
RETURN_NULL();
|
RETURN_NULL();
|
||||||
}
|
}
|
||||||
ZEND_FETCH_RESOURCE(context, SCARDCONTEXT, &ctx_res, -1, PHP_PCSC_CTX_RES_NAME, le_pcsc_ctx_res);
|
ZEND_FETCH_RESOURCE(context, SCARDCONTEXT, &ctx_res, -1, PHP_PCSC_CTX_RES_NAME, le_pcsc_ctx_res);
|
||||||
|
|
||||||
rc = SCardIsValidContext(context);
|
rc = SCardIsValidContext(context);
|
||||||
if (rc != SCARD_S_SUCCESS) {
|
if (rc != SCARD_S_SUCCESS) {
|
||||||
PCSC_G(last_errno) = rc;
|
PCSC_G(last_errno) = rc;
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
RETURN_TRUE;
|
RETURN_TRUE;
|
||||||
|
|
@ -520,7 +520,7 @@ PHP_FUNCTION(scard_release_context)
|
||||||
{
|
{
|
||||||
zval* ctx_res;
|
zval* ctx_res;
|
||||||
SCARDCONTEXT context;
|
SCARDCONTEXT context;
|
||||||
|
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &ctx_res) == FAILURE) {
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &ctx_res) == FAILURE) {
|
||||||
RETURN_NULL();
|
RETURN_NULL();
|
||||||
}
|
}
|
||||||
|
|
@ -542,22 +542,22 @@ PHP_FUNCTION(scard_list_readers)
|
||||||
LONG rc = 0;
|
LONG rc = 0;
|
||||||
zval* ctx_res;
|
zval* ctx_res;
|
||||||
SCARDCONTEXT context;
|
SCARDCONTEXT context;
|
||||||
|
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &ctx_res) == FAILURE) {
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &ctx_res) == FAILURE) {
|
||||||
RETURN_NULL();
|
RETURN_NULL();
|
||||||
}
|
}
|
||||||
ZEND_FETCH_RESOURCE(context, SCARDCONTEXT, &ctx_res, -1, PHP_PCSC_CTX_RES_NAME, le_pcsc_ctx_res);
|
ZEND_FETCH_RESOURCE(context, SCARDCONTEXT, &ctx_res, -1, PHP_PCSC_CTX_RES_NAME, le_pcsc_ctx_res);
|
||||||
|
|
||||||
rc = SCardListReaders(context, NULL, (char *) &strReaders, &dwLen);
|
rc = SCardListReaders(context, NULL, (char *) &strReaders, &dwLen);
|
||||||
if (rc != SCARD_S_SUCCESS) {
|
if (rc != SCARD_S_SUCCESS) {
|
||||||
PCSC_G(last_errno) = rc;
|
PCSC_G(last_errno) = rc;
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strReaders == NULL) {
|
if (strReaders == NULL) {
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
array_init(return_value);
|
array_init(return_value);
|
||||||
|
|
||||||
ptrReader = strReaders;
|
ptrReader = strReaders;
|
||||||
|
|
@ -566,7 +566,7 @@ PHP_FUNCTION(scard_list_readers)
|
||||||
ptrReader+= strlen(ptrReader);
|
ptrReader+= strlen(ptrReader);
|
||||||
ptrReader++;
|
ptrReader++;
|
||||||
} while (*ptrReader != '\0');
|
} while (*ptrReader != '\0');
|
||||||
|
|
||||||
SCardFreeMemory(context, strReaders);
|
SCardFreeMemory(context, strReaders);
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
@ -575,7 +575,7 @@ PHP_FUNCTION(scard_list_readers)
|
||||||
Return a handle to the card */
|
Return a handle to the card */
|
||||||
PHP_FUNCTION(scard_connect)
|
PHP_FUNCTION(scard_connect)
|
||||||
{
|
{
|
||||||
DWORD dwPreferredProtocol = SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1;
|
DWORD dwPreferredProtocol = SCARD_PROTOCOL_RAW | SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1;
|
||||||
DWORD dwCurrentProtocol;
|
DWORD dwCurrentProtocol;
|
||||||
SCARDHANDLE hCard = 0;
|
SCARDHANDLE hCard = 0;
|
||||||
LONG rc = 0;
|
LONG rc = 0;
|
||||||
|
|
@ -585,7 +585,7 @@ PHP_FUNCTION(scard_connect)
|
||||||
char *strReaderName;
|
char *strReaderName;
|
||||||
size_t strReaderNameLen;
|
size_t strReaderNameLen;
|
||||||
zend_long preferred_protocol;
|
zend_long preferred_protocol;
|
||||||
|
|
||||||
current_protocol = NULL;
|
current_protocol = NULL;
|
||||||
ctx_res = NULL;
|
ctx_res = NULL;
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs|lz", &ctx_res, &strReaderName, &strReaderNameLen, &preferred_protocol, ¤t_protocol) == FAILURE) {
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs|lz", &ctx_res, &strReaderName, &strReaderNameLen, &preferred_protocol, ¤t_protocol) == FAILURE) {
|
||||||
|
|
@ -602,13 +602,13 @@ PHP_FUNCTION(scard_connect)
|
||||||
|
|
||||||
rc = SCardConnect(context, strReaderName, SCARD_SHARE_SHARED, dwPreferredProtocol, &hCard, &dwCurrentProtocol);
|
rc = SCardConnect(context, strReaderName, SCARD_SHARE_SHARED, dwPreferredProtocol, &hCard, &dwCurrentProtocol);
|
||||||
if (rc != SCARD_S_SUCCESS) {
|
if (rc != SCARD_S_SUCCESS) {
|
||||||
PCSC_G(last_errno) = rc;
|
PCSC_G(last_errno) = rc;
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
if (current_protocol != NULL) {
|
if (current_protocol != NULL) {
|
||||||
ZVAL_LONG(current_protocol, dwCurrentProtocol);
|
ZVAL_LONG(current_protocol, dwCurrentProtocol);
|
||||||
}
|
}
|
||||||
|
|
||||||
RETURN_RES(zend_register_resource((void*)hCard, le_pcsc_conn_res));
|
RETURN_RES(zend_register_resource((void*)hCard, le_pcsc_conn_res));
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
@ -621,15 +621,15 @@ PHP_FUNCTION(scard_disconnect)
|
||||||
LONG rc;
|
LONG rc;
|
||||||
zval* conn_res;
|
zval* conn_res;
|
||||||
SCARDHANDLE hCard;
|
SCARDHANDLE hCard;
|
||||||
|
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &conn_res, &dwDisposition) == FAILURE) {
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &conn_res, &dwDisposition) == FAILURE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ZEND_FETCH_RESOURCE(hCard, SCARDHANDLE, &conn_res, -1, PHP_PCSC_CONN_RES_NAME, le_pcsc_conn_res);
|
ZEND_FETCH_RESOURCE(hCard, SCARDHANDLE, &conn_res, -1, PHP_PCSC_CONN_RES_NAME, le_pcsc_conn_res);
|
||||||
|
|
||||||
rc = SCardDisconnect(hCard, (DWORD)dwDisposition);
|
rc = SCardDisconnect(hCard, (DWORD)dwDisposition);
|
||||||
if (rc != SCARD_S_SUCCESS) {
|
if (rc != SCARD_S_SUCCESS) {
|
||||||
PCSC_G(last_errno) = rc;
|
PCSC_G(last_errno) = rc;
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
RETURN_TRUE;
|
RETURN_TRUE;
|
||||||
|
|
@ -652,7 +652,7 @@ PHP_FUNCTION(scard_transmit)
|
||||||
LONG rc;
|
LONG rc;
|
||||||
char *apdu;
|
char *apdu;
|
||||||
size_t apduLen;
|
size_t apduLen;
|
||||||
|
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &conn_res, &apdu, &apduLen) == FAILURE) {
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &conn_res, &apdu, &apduLen) == FAILURE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -661,15 +661,15 @@ PHP_FUNCTION(scard_transmit)
|
||||||
/* Are we in T=0 or T=1 ? Is the card powered? */
|
/* Are we in T=0 or T=1 ? Is the card powered? */
|
||||||
rc = SCardStatus(hCard, NULL, NULL, &dwState, &dwProtocol, NULL, NULL);
|
rc = SCardStatus(hCard, NULL, NULL, &dwState, &dwProtocol, NULL, NULL);
|
||||||
if (rc != SCARD_S_SUCCESS) {
|
if (rc != SCARD_S_SUCCESS) {
|
||||||
PCSC_G(last_errno) = rc;
|
PCSC_G(last_errno) = rc;
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(dwState & SCARD_POWERED)) {
|
if (!(dwState & SCARD_POWERED)) {
|
||||||
PCSC_G(last_errno) = SCARD_W_UNPOWERED_CARD;
|
PCSC_G(last_errno) = SCARD_W_UNPOWERED_CARD;
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (dwProtocol) {
|
switch (dwProtocol) {
|
||||||
case SCARD_PROTOCOL_RAW : sendPci = SCARD_PCI_RAW; break;
|
case SCARD_PROTOCOL_RAW : sendPci = SCARD_PCI_RAW; break;
|
||||||
case SCARD_PROTOCOL_T0 : sendPci = SCARD_PCI_T0; break;
|
case SCARD_PROTOCOL_T0 : sendPci = SCARD_PCI_T0; break;
|
||||||
|
|
@ -690,7 +690,7 @@ PHP_FUNCTION(scard_transmit)
|
||||||
|
|
||||||
rc = SCardTransmit(hCard, sendPci, sendBuffer, sendLen, recvPci, recvBuffer, &recvLen);
|
rc = SCardTransmit(hCard, sendPci, sendBuffer, sendLen, recvPci, recvBuffer, &recvLen);
|
||||||
if (rc != SCARD_S_SUCCESS) {
|
if (rc != SCARD_S_SUCCESS) {
|
||||||
PCSC_G(last_errno) = rc;
|
PCSC_G(last_errno) = rc;
|
||||||
efree(recvPci);
|
efree(recvPci);
|
||||||
efree(recvBuffer);
|
efree(recvBuffer);
|
||||||
efree(sendBuffer);
|
efree(sendBuffer);
|
||||||
|
|
@ -717,16 +717,16 @@ PHP_FUNCTION(scard_status)
|
||||||
BYTE atrBuffer[32];
|
BYTE atrBuffer[32];
|
||||||
DWORD atrLen;
|
DWORD atrLen;
|
||||||
LONG rc;
|
LONG rc;
|
||||||
|
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &conn_res) == FAILURE) {
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &conn_res) == FAILURE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ZEND_FETCH_RESOURCE(hCard, SCARDHANDLE, &conn_res, -1, PHP_PCSC_CONN_RES_NAME, le_pcsc_conn_res);
|
ZEND_FETCH_RESOURCE(hCard, SCARDHANDLE, &conn_res, -1, PHP_PCSC_CONN_RES_NAME, le_pcsc_conn_res);
|
||||||
|
|
||||||
atrLen = sizeof(atrBuffer);
|
atrLen = sizeof(atrBuffer);
|
||||||
rc = SCardStatus(hCard, NULL, NULL, &dwState, &dwProtocol, atrBuffer, &atrLen);
|
rc = SCardStatus(hCard, NULL, NULL, &dwState, &dwProtocol, atrBuffer, &atrLen);
|
||||||
if (rc != SCARD_S_SUCCESS) {
|
if (rc != SCARD_S_SUCCESS) {
|
||||||
PCSC_G(last_errno) = rc;
|
PCSC_G(last_errno) = rc;
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -751,7 +751,6 @@ PHP_FUNCTION(scard_status)
|
||||||
add_assoc_long(return_value, "SCARD_SPECIFIC", 1);
|
add_assoc_long(return_value, "SCARD_SPECIFIC", 1);
|
||||||
|
|
||||||
switch (dwProtocol) {
|
switch (dwProtocol) {
|
||||||
/* Maybe change to bool type here instead of add_assoc_long...? */
|
|
||||||
case SCARD_PROTOCOL_RAW : add_assoc_long(return_value, "SCARD_PROTOCOL_RAW", 1);
|
case SCARD_PROTOCOL_RAW : add_assoc_long(return_value, "SCARD_PROTOCOL_RAW", 1);
|
||||||
add_assoc_string(return_value, "PROTOCOL", "RAW");
|
add_assoc_string(return_value, "PROTOCOL", "RAW");
|
||||||
break;
|
break;
|
||||||
|
|
@ -780,7 +779,7 @@ PHP_FUNCTION(scard_last_errno)
|
||||||
if (zend_parse_parameters_none() == FAILURE) {
|
if (zend_parse_parameters_none() == FAILURE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
RETURN_LONG(PCSC_G(last_errno));
|
RETURN_LONG(PCSC_G(last_errno));
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue