From 2562478bd42e46eba7e4366bc3a369cc100ad52d Mon Sep 17 00:00:00 2001 From: Johannes Findeisen Date: Sun, 21 Feb 2021 06:19:50 +0100 Subject: [PATCH] Fixed and added some more PHP test code; Not stable --- docs/examples/pcsc.class.php | 20 ++++----- docs/examples/simple.php | 86 ++++++++++++++++++++++++++++++++++++ docs/examples/test.php | 9 ++-- 3 files changed, 102 insertions(+), 13 deletions(-) create mode 100644 docs/examples/simple.php diff --git a/docs/examples/pcsc.class.php b/docs/examples/pcsc.class.php index 897edda..2c853a2 100644 --- a/docs/examples/pcsc.class.php +++ b/docs/examples/pcsc.class.php @@ -14,39 +14,39 @@ class PCSC { function __construct() { $this->context = scard_establish_context(); } - - function __destruct() { + + /*function __destruct() { $this->context = scard_release_context($this->context); - } + }*/ function connect($reader) { return $this->connection = scard_connect($this->context, $reader); } - + /*function reconnect() { return $this->connection = scard_reconnect($this->connection); }*/ - + function disconnect() { return scard_disconnect($this->connection); } - + function listreaders() { return $this->readers = scard_list_readers($this->context); } - + function transmit($apdu) { return scard_transmit($this->connection, $apdu); } - + function isvalidcontext() { return scard_is_valid_context($this->context); } - + function releasecontext() { return scard_release_context($this->context); } - + function status() { return scard_status($this->connection); } diff --git a/docs/examples/simple.php b/docs/examples/simple.php new file mode 100644 index 0000000..6e7094c --- /dev/null +++ b/docs/examples/simple.php @@ -0,0 +1,86 @@ +> Create Context\n"; +$context = scard_establish_context(); +var_dump($context); + +$errno = scard_last_errno(); +var_dump($errno); +$errstr = scard_errstr($errno); +var_dump($errstr); +echo "\n"; + +# Get the reader list +echo ">> Get Readers\n"; +$readers = scard_list_readers($context); +var_dump($readers); + +$errno = scard_last_errno(); +var_dump($errno); +$errstr = scard_errstr($errno); +var_dump($errstr); +echo "\n"; + +# Use the first reader +echo ">> Select Reader\n"; +$reader = $readers[1]; +echo "Using reader: ", $reader, "\n"; + +$errno = scard_last_errno(); +var_dump($errno); +$errstr = scard_errstr($errno); +var_dump($errstr); +echo "\n"; + +# Connect to the card +echo ">> Connect to Card\n"; +$connection = scard_connect($context, $reader); +var_dump($connection); + +$errno = scard_last_errno(); +var_dump($errno); +$errstr = scard_errstr($errno); +var_dump($errstr); +echo "\n"; + +# Select Applet APDU +echo ">> Select Applet\n"; +$CMD = "00a4040c0cD2760001354B414E4D30310000"; +$res = scard_transmit($connection, $CMD); +var_dump($res); + +$errno = scard_last_errno(); +var_dump($errno); +$errstr = scard_errstr($errno); +var_dump($errstr); +echo "\n"; + +# test APDU +echo ">> Send APDU\n"; +$CMD = "0084000008"; +$res = scard_transmit($connection, $CMD); +var_dump($res); +#echo pack("H*", $res), "\n"; + +$errno = scard_last_errno(); +var_dump($errno); +$errstr = scard_errstr($errno); +var_dump($errstr); +echo "\n"; + +# Release the PC/SC context +echo ">> Release Context\n"; +scard_release_context($context); + +$errno = scard_last_errno(); +var_dump($errno); +$errstr = scard_errstr($errno); +var_dump($errstr); +echo "\n"; + +?> diff --git a/docs/examples/test.php b/docs/examples/test.php index 61aa86a..f923e37 100644 --- a/docs/examples/test.php +++ b/docs/examples/test.php @@ -13,19 +13,22 @@ $foo = new PCSC(); echo "Create Context:\n"; var_dump($foo->context); +#echo "Last Error String:"; +#var_dump($foo->scard_errstr($foo->scard_last_errno())); + echo "List Readers:\n"; var_dump($foo->listreaders()); echo "Connect Card:\n"; -var_dump($foo->connect("OMNIKEY CardMan 5x21 00 01")); +var_dump($foo->connect("OMNIKEY CardMan (076B:5321) 5321 00 01")); #echo "Reconnect:\n"; #var_dump($foo->reconnect()); echo "Some Transmits:\n"; +// Select applet var_dump($foo->transmit("00a4040c0cD2760001354B414E4D30310000")); -var_dump($foo->transmit("0084000008")); -var_dump($foo->transmit("0084000008")); +// APDU to execute RNG function on card applet var_dump($foo->transmit("0084000008")); echo "Is Valid Context?\n";