mirror of
https://github.com/pcsc-for-php/pcsc.git
synced 2026-08-08 21:09:26 +02:00
commit
7fb5ca5d41
6 changed files with 257 additions and 54 deletions
56
.gitignore
vendored
Normal file
56
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
# Object files
|
||||
*.o
|
||||
*.lo
|
||||
|
||||
# Libraries
|
||||
*.lib
|
||||
*.a
|
||||
*.la
|
||||
|
||||
# Shared objects (inc. Windows DLLs)
|
||||
*.dll
|
||||
*.so
|
||||
*.so.*
|
||||
*.dylib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
|
||||
# archives
|
||||
pcsc-*.tgz
|
||||
|
||||
# autotools
|
||||
.deps
|
||||
.libs
|
||||
config.cache
|
||||
config.guess
|
||||
config.h
|
||||
config.h.in
|
||||
config.log
|
||||
config.nice
|
||||
config.status
|
||||
config.sub
|
||||
configure
|
||||
configure.in
|
||||
conftest
|
||||
conftest.c
|
||||
Makefile
|
||||
Makefile.fragments
|
||||
Makefile.global
|
||||
Makefile.objects
|
||||
acinclude.m4
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
build
|
||||
install-sh
|
||||
libtool
|
||||
ltmain.sh
|
||||
ltmain.sh.backup
|
||||
missing
|
||||
mkinstalldirs
|
||||
modules
|
||||
run-tests.php
|
||||
run-tests.log
|
||||
tmp-php.ini
|
||||
|
|
@ -40,6 +40,9 @@ http://pear.php.net/dtd/package-2.0.xsd">
|
|||
<file name="config.w32" role="src" />
|
||||
<file name="pcsc.c" role="src" />
|
||||
<file name="php_pcsc.h" role="src" />
|
||||
<file name="pcsc.stub.php" role="src" />
|
||||
<file name="pcsc_arginfo.h" role="src" />
|
||||
<file name="pcsc_legacy_arginfo.h" role="src" />
|
||||
<file name="TODO" role="doc" />
|
||||
</dir> <!-- / -->
|
||||
</contents>
|
||||
|
|
|
|||
60
pcsc.c
60
pcsc.c
|
|
@ -36,59 +36,11 @@ ZEND_DECLARE_MODULE_GLOBALS(pcsc);
|
|||
#define TRUE 1
|
||||
#endif
|
||||
|
||||
/* arg info for scard_connect (accepts an optional compile-time reference parameter) */
|
||||
ZEND_BEGIN_ARG_INFO_EX(php_pcsc_scard_connect_arginfo, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, context)
|
||||
ZEND_ARG_INFO(0, reader_name)
|
||||
ZEND_ARG_INFO(0, preferred_protocol)
|
||||
ZEND_ARG_INFO(1, active_protocol)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(php_pcsc_scard_void, 0, 0, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(php_pcsc_scard_context, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, context)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(php_pcsc_scard_disconnect, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, card)
|
||||
ZEND_ARG_INFO(0, disposition)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(php_pcsc_scard_transmit, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, card)
|
||||
ZEND_ARG_INFO(0, command)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(php_pcsc_scard_card, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, card)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(php_pcsc_scard_errstr, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, errno)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
/* {{{ pcsc_functions[]
|
||||
*
|
||||
* Every user visible function must have an entry in pcsc_functions[].
|
||||
*/
|
||||
zend_function_entry pcsc_functions[] = {
|
||||
PHP_FE(scard_establish_context, php_pcsc_scard_void)
|
||||
PHP_FE(scard_release_context, php_pcsc_scard_context)
|
||||
PHP_FE(scard_is_valid_context, php_pcsc_scard_context)
|
||||
PHP_FE(scard_list_readers, php_pcsc_scard_context)
|
||||
PHP_FE(scard_connect, php_pcsc_scard_connect_arginfo)
|
||||
//PHP_FE(scard_reconnect, NULL)
|
||||
PHP_FE(scard_disconnect, php_pcsc_scard_disconnect)
|
||||
PHP_FE(scard_transmit, php_pcsc_scard_transmit)
|
||||
PHP_FE(scard_status, php_pcsc_scard_card)
|
||||
//PHP_FE(scard_get_status_change, NULL)
|
||||
PHP_FE(scard_last_errno, php_pcsc_scard_void)
|
||||
PHP_FE(scard_errstr, php_pcsc_scard_errstr)
|
||||
PHP_FE_END
|
||||
};
|
||||
/* }}} */
|
||||
#if PHP_VERSION_ID < 80000
|
||||
#include "pcsc_legacy_arginfo.h"
|
||||
#else
|
||||
#include "pcsc_arginfo.h"
|
||||
#endif
|
||||
|
||||
/* {{{ pcsc_module_entry
|
||||
*/
|
||||
|
|
@ -97,7 +49,7 @@ zend_module_entry pcsc_module_entry = {
|
|||
STANDARD_MODULE_HEADER,
|
||||
#endif
|
||||
"PC/SC",
|
||||
pcsc_functions,
|
||||
ext_functions,
|
||||
PHP_MINIT(pcsc),
|
||||
PHP_MSHUTDOWN(pcsc),
|
||||
NULL,
|
||||
|
|
|
|||
55
pcsc.stub.php
Normal file
55
pcsc.stub.php
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @generate-function-entries
|
||||
* @generate-legacy-arginfo
|
||||
*/
|
||||
|
||||
/**
|
||||
* @return resource|false
|
||||
*/
|
||||
function scard_establish_context() {}
|
||||
|
||||
/**
|
||||
* @param resource $context
|
||||
*/
|
||||
function scard_release_context($context): bool {}
|
||||
|
||||
/**
|
||||
* @param resource $context
|
||||
*/
|
||||
function scard_is_valid_context($context): bool {}
|
||||
|
||||
/**
|
||||
* @param resource $context
|
||||
*/
|
||||
function scard_list_readers($context): array|false {}
|
||||
|
||||
/**
|
||||
* @param resource $context
|
||||
* @return resource|false
|
||||
*/
|
||||
function scard_connect($context, string $reader_name, int $preferred_protocol=SCARD_PROTOCOL_T0|SCARD_PROTOCOL_T1, int &$current_protocol=NULL): array|false {}
|
||||
|
||||
/**
|
||||
* @param resource $card
|
||||
* @return resource|false
|
||||
*/
|
||||
function scard_disconnect($card, int $disposition=SCARD_EJECT_CARD): bool {}
|
||||
|
||||
/**
|
||||
* @param resource $card
|
||||
* @return resource|false
|
||||
*/
|
||||
function scard_transmit($card, string $command): string|false {}
|
||||
|
||||
/**
|
||||
* @param resource $card
|
||||
* @return resource|false
|
||||
*/
|
||||
function scard_status($card): array|false {}
|
||||
|
||||
function scard_last_errno(): int {}
|
||||
|
||||
function scard_errstr(int $errno): string {}
|
||||
|
||||
70
pcsc_arginfo.h
Normal file
70
pcsc_arginfo.h
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
/* This is a generated file, edit the .stub.php file instead.
|
||||
* Stub hash: 3e1df1d509b6416c1eb997f61295c26d9ad0fd03 */
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_scard_establish_context, 0, 0, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_scard_release_context, 0, 1, _IS_BOOL, 0)
|
||||
ZEND_ARG_INFO(0, context)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_scard_is_valid_context arginfo_scard_release_context
|
||||
|
||||
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_scard_list_readers, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE)
|
||||
ZEND_ARG_INFO(0, context)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_scard_connect, 0, 2, MAY_BE_ARRAY|MAY_BE_FALSE)
|
||||
ZEND_ARG_INFO(0, context)
|
||||
ZEND_ARG_TYPE_INFO(0, reader_name, IS_STRING, 0)
|
||||
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, preferred_protocol, IS_LONG, 0, "SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1")
|
||||
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(1, current_protocol, IS_LONG, 0, "NULL")
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_scard_disconnect, 0, 1, _IS_BOOL, 0)
|
||||
ZEND_ARG_INFO(0, card)
|
||||
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, disposition, IS_LONG, 0, "SCARD_EJECT_CARD")
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_scard_transmit, 0, 2, MAY_BE_STRING|MAY_BE_FALSE)
|
||||
ZEND_ARG_INFO(0, card)
|
||||
ZEND_ARG_TYPE_INFO(0, command, IS_STRING, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_scard_status, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE)
|
||||
ZEND_ARG_INFO(0, card)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_scard_last_errno, 0, 0, IS_LONG, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_scard_errstr, 0, 1, IS_STRING, 0)
|
||||
ZEND_ARG_TYPE_INFO(0, errno, IS_LONG, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
|
||||
ZEND_FUNCTION(scard_establish_context);
|
||||
ZEND_FUNCTION(scard_release_context);
|
||||
ZEND_FUNCTION(scard_is_valid_context);
|
||||
ZEND_FUNCTION(scard_list_readers);
|
||||
ZEND_FUNCTION(scard_connect);
|
||||
ZEND_FUNCTION(scard_disconnect);
|
||||
ZEND_FUNCTION(scard_transmit);
|
||||
ZEND_FUNCTION(scard_status);
|
||||
ZEND_FUNCTION(scard_last_errno);
|
||||
ZEND_FUNCTION(scard_errstr);
|
||||
|
||||
|
||||
static const zend_function_entry ext_functions[] = {
|
||||
ZEND_FE(scard_establish_context, arginfo_scard_establish_context)
|
||||
ZEND_FE(scard_release_context, arginfo_scard_release_context)
|
||||
ZEND_FE(scard_is_valid_context, arginfo_scard_is_valid_context)
|
||||
ZEND_FE(scard_list_readers, arginfo_scard_list_readers)
|
||||
ZEND_FE(scard_connect, arginfo_scard_connect)
|
||||
ZEND_FE(scard_disconnect, arginfo_scard_disconnect)
|
||||
ZEND_FE(scard_transmit, arginfo_scard_transmit)
|
||||
ZEND_FE(scard_status, arginfo_scard_status)
|
||||
ZEND_FE(scard_last_errno, arginfo_scard_last_errno)
|
||||
ZEND_FE(scard_errstr, arginfo_scard_errstr)
|
||||
ZEND_FE_END
|
||||
};
|
||||
67
pcsc_legacy_arginfo.h
Normal file
67
pcsc_legacy_arginfo.h
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
/* This is a generated file, edit the .stub.php file instead.
|
||||
* Stub hash: 3e1df1d509b6416c1eb997f61295c26d9ad0fd03 */
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_scard_establish_context, 0, 0, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_scard_release_context, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, context)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_scard_is_valid_context arginfo_scard_release_context
|
||||
|
||||
#define arginfo_scard_list_readers arginfo_scard_release_context
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_scard_connect, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, context)
|
||||
ZEND_ARG_INFO(0, reader_name)
|
||||
ZEND_ARG_INFO(0, preferred_protocol)
|
||||
ZEND_ARG_INFO(1, current_protocol)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_scard_disconnect, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, card)
|
||||
ZEND_ARG_INFO(0, disposition)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_scard_transmit, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, card)
|
||||
ZEND_ARG_INFO(0, command)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_scard_status, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, card)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_scard_last_errno arginfo_scard_establish_context
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_scard_errstr, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, errno)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
|
||||
ZEND_FUNCTION(scard_establish_context);
|
||||
ZEND_FUNCTION(scard_release_context);
|
||||
ZEND_FUNCTION(scard_is_valid_context);
|
||||
ZEND_FUNCTION(scard_list_readers);
|
||||
ZEND_FUNCTION(scard_connect);
|
||||
ZEND_FUNCTION(scard_disconnect);
|
||||
ZEND_FUNCTION(scard_transmit);
|
||||
ZEND_FUNCTION(scard_status);
|
||||
ZEND_FUNCTION(scard_last_errno);
|
||||
ZEND_FUNCTION(scard_errstr);
|
||||
|
||||
|
||||
static const zend_function_entry ext_functions[] = {
|
||||
ZEND_FE(scard_establish_context, arginfo_scard_establish_context)
|
||||
ZEND_FE(scard_release_context, arginfo_scard_release_context)
|
||||
ZEND_FE(scard_is_valid_context, arginfo_scard_is_valid_context)
|
||||
ZEND_FE(scard_list_readers, arginfo_scard_list_readers)
|
||||
ZEND_FE(scard_connect, arginfo_scard_connect)
|
||||
ZEND_FE(scard_disconnect, arginfo_scard_disconnect)
|
||||
ZEND_FE(scard_transmit, arginfo_scard_transmit)
|
||||
ZEND_FE(scard_status, arginfo_scard_status)
|
||||
ZEND_FE(scard_last_errno, arginfo_scard_last_errno)
|
||||
ZEND_FE(scard_errstr, arginfo_scard_errstr)
|
||||
ZEND_FE_END
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue