PC/SC for PHP - An extension for PHP using the winscard PC/SC API.

Table of contents

About

This is an unofficial extension for using PC/SC based smart cards with PHP. It is a wrapper to the wonderful and free project 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. You find his work here.

Status

Use this Code!!! For me it runs stable and without any errors.

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

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);

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.

Slashdot Stumbleupon Twitter Digg

$Date: 2011-12-16 02:55:51 +0100 (Fri, 16 Dec 2011) $