- C 92.7%
- PHP 3.8%
- M4 3.5%
| docs/examples | ||
| config.m4 | ||
| config.w32 | ||
| COPYING | ||
| CREDITS | ||
| package.xml | ||
| pcsc.c | ||
| php_pcsc.h | ||
| README.md | ||
| TODO | ||
Notes
This code does not work with version 7 of PHP! Currently I am not able to fix this. If you want to take over development or submit patches it is very welcome... Please contact me if you are interested.
I do not write PHP code since many years so it would be great to find a maintainer for this code.
About
This is the only extension for using PC/SC based smart cards with PHP5. It is a wrapper to the wonderful and free project by Ludovic Rousseau, PCSC-Lite, which is the middleware to access a smart card using SCard API (PC/SC). Since PCSC-Lite is compatible to the winscard API it should be possible to compile this extension using a Windows(R) operating system. Currently I only take focus on Linux environments.
Thanks are going to Johann Dantant! He provides a PC/SC extension for PHP since 2005 and I reused some of his code. He allowed me to relicense these parts under the terms of the PHP license so I could integrate PCSC-Lite natively into PHP.
Installation
I recommend to install the PECL extension the "PHP" way:
pecl install pcsc-alpha
You can install the latest version by downloading the sources and compile yourself too... :)
wget http://pecl.php.net/get/pcsc-0.3.1.tgz tar -xvf pcsc-0.3.1.tgz cd pcsc-0.3.1 phpize ./configure make make install
After that you have all needed files in ./modules/
API
The extension currently provides the following API:
scard_establish_context();
Returns the application $context to the PC/SC resource manager.
scard_is_valid_context($context);
Returns TRUE if $context is valid or FALSE if $context is not valid.
scard_release_context($context);
Releases the application $context.
scard_list_readers($context);
Returns an array of available readers or FALSE.
Example:
array(3) {
[0]=>
string(26) "OMNIKEY CardMan 5x21 00 00"
[1]=>
string(26) "OMNIKEY CardMan 5x21 00 01"
[2]=>
string(76) "SCL01x Contactless Reader [SCL01x Contactless Reader] (21161009200722) 00 00"
}
scard_connect($context, "OMNIKEY CardMan 5x21 00 00");
Connects to a card. Returns the $connection to a reader or FALSE.
scard_reconnect($connection);
Returns the $connection to a reader or FALSE.
scard_disconnect($connection);
Disconnects the $connection to a card. Returns the TRUE if disconnecting was succesful or FALSE.
scard_transmit($connection, $apdu);
Returns the response $apdu as string or FALSE.
scard_status($connection);
Returns the status or FALSE.
scard_cancel($context);
Code
The code has successful been released to the official code repository pecl.php.net... ;)
You could get the code using the following command:
svn checkout http://svn.php.net/repository/pecl/pcsc/trunk pcsc
License
This code is licensed under the terms of the PHP License version 3.01. PCSC-Lite is licensed in a way where it is possible to integrate it native in the PHP environment.
Links
- PC/SC Worgroup - Homepage and definition file downloads.
- PC/SC - PC/SC at Wikipedia.
- PC/SC-Lite - The free and open implementation of the PC/SC SCard API for UNIX
- PCSC sample in PHP5 - Ludovic Rousseau about "PC/SC for PHP"