SEARCH
NEW RPMS
DIRECTORIES
ABOUT
FAQ
VARIOUS
BLOG
DONATE


YUM REPOSITORY

 
 

MAN page from RedHat EL 7 pcsc-perl-1.4.14-2.el7.x86_64.rpm

PCSC

Section: User Contributed Perl Documentation (3)
Updated: 2010-10-27
Index 

NAME

Chipcard::PCSC - Smart card reader interface library 

SYNOPSIS

 my $hContext = new Chipcard::PCSC(); @ReadersList = $hContext->ListReaders (); $hContext->GetStatusChange(\@readers_states, $timeout); $apdu = Chipcard::PCSC::array_to_ascii(@apdu); @apdu = Chipcard::PCSC::ascii_to_array($apdu); $hContext = undef;
 

DESCRIPTION

The PCSC module implements the Chipcard::PCSC class. Objects of thisclass are used to communicate with the PCSC-lite daemon (see pcscd(1)for more information).

PC/SC represents an abstraction layer to smart card readers. It providesa communication layer with a wide variety of smart card readers througha standardized API.

A PCSC object can be used to communicate with more than one readerthrough Chipcard::PCSC::Card objects. Please readChipcard::PCSC::Card for extended information on how to talk to asmart card reader.

A PCSC object uses the following property:"$pcsc_object->{hContext}" the context returned by the pcsc library 

CONSTRUCTORS

The following methods can be used to construct a PCSC object:
*
$hContext = new Chipcard::PCSC($scope, $remote_host);
*
$scope is the scope of the connection to the PC/SC daemon. It can beany of the following:

 $Chipcard::PCSC::SCARD_SCOPE_USER     (not used by PCSClite); $Chipcard::PCSC::SCARD_SCOPE_TERMINAL (not used by PCSClite); $Chipcard::PCSC::SCARD_SCOPE_SYSTEM   Services on the local machine; $Chipcard::PCSC::SCARD_SCOPE_GLOBAL   Services on a remote host.
*
$remote_host is the host name of the remote machine to contact. It isonly used when $scope is equal to$Chipcard::PCSC::SCARD_SCOPE_GLOBAL. A null value means localhost.
*
$hContext = new Chipcard::PCSC($scope);

This method is equivalent to:

 $hContext = new Chipcard::PCSC($scope, 0);
*
$hContext = new Chipcard::PCSC();

This method is equivalent to:

 $hContext = new Chipcard::PCSC($Chipcard::PCSC::SCARD_SCOPE_SYSTEM, 0);
 

CONSTRUCTION FAILURE

Chipcard::PCSC constructors return an "undef" value when the object cannot be created. $Chipcard::PCSC::errno can be used to get moreinformation about the error. (See section ``ERROR HANDLING'' below formore information) 

Chipcard::PCSC METHODS

Here is a list of all the methods that can be used with a PCSC object.
*
hContext->ListReaders( $group );

This method returns the available readers in the given $group. Ifomitted, $group defaults to a null value meaning ``all groups''. Pleasenote that as of this writing, $group can safely be omitted as it isnot used by PCSClite.

The return value upon successful completion is an array of strings: onestring by available reader. If an error occurred, the undef value isreturned and $Chipcard::PCSC::errno should be used to get moreinformation about the error. (See section ``ERROR HANDLING'' below formore information). The following example describes the use ofListReaders:

 $hContext = new Chipcard::PCSC(); die ("Can't create the PCSC object: $Chipcard::PCSC::errno\n")        unless (defined $hContext); @ReadersList = $hContext->ListReaders (); die ("Can't get readers' list: $Chipcard::PCSC::errno\n")        unless (defined($ReadersList[0])); $, = "\n  "; print @ReadersList . "\n";
*
$hContext->GetStatusChange(\@readers_states, $timeout);

The method "$hContext->GetStatusChange(\@readers_states, $timeout)"uses a reference to a list of hashes.

 # create the list or readers to watch map { push @readers_states, ({'reader_name'=>"$_"}) } @ReadersList; @StatusResult = $hContext->GetStatusChange(\@readers_states);

The keys of the hash are: 'reader_name', 'current_state', 'event_state'and 'ATR'.

To detect a status change you have to first get the status and then copythe 'event_state' in the 'current_state'. The method will return whenboth states are different or a timeout occurs.

 @StatusResult = $hContext->GetStatusChange(\@readers_states); foreach $reader (@readers_states) {   $reader->{current_state} = $reader->{event_state}; } @StatusResult = $hContext->GetStatusChange(\@readers_states);
*
$hContext->GetStatusChange(\@readers_states);

This method is equivalent to:

 $hContext->GetStatusChange(\@readers_states, 0xFFFFFFFF);

The timeout is set to infinite.

*
$apdu_ref = Chipcard::PCSC::ascii_to_array($apdu);

The method "Chipcard::PCSC::Card::Transmit()" uses references to arraysas in and out parameters. The "Chipcard::PCSC::ascii_to_array()" is usedto transform an APDU in ASCII format to a reference to an array in thegood format.

Example:

 $SendData = Chipcard::PCSC::ascii_to_array("00 A4 01 00 02 01 00");
*
$apdu = Chipcard::PCSC::array_to_ascii($apdu_ref);

This method is used to convert the result of a"Chipcard::PCSC::Card::Transmit()" into ASCII format.

Example:

 $RecvData = $hCard->Transmit($SendData); print Chipcard::PCSC::array_to_ascii($RecvData);
 

ERROR HANDLING

All functions from PCSC objects save the return value in a globalvariable called $Chipcard::PCSC::errno. This variable therefore holdsthe latest status of PCSC.

It is a double-typed magical variable that behaves just like $!. Thismeans that it both holds a numerical value describing the error and thecorresponding string. The numerical value may change from a system toanother as it depends on the PCSC library...

Here is a small example of how to use it:

 $hContext = new Chipcard::PCSC(); die ("Can't create the PCSC object: $Chipcard::PCSC::errno\n")     unless (defined $hContext);

In case the last call was successful, $Chipcard::PCSC::errno containsthe "SCARD_S_SUCCESS" status. Here is a list of all possible errorcodes. They are defined as read-only variables with in the PCSC module:

 $Chipcard::PCSC::SCARD_S_SUCCESS $Chipcard::PCSC::SCARD_E_CANCELLED $Chipcard::PCSC::SCARD_E_CANT_DISPOSE $Chipcard::PCSC::SCARD_E_CARD_UNSUPPORTED $Chipcard::PCSC::SCARD_E_DUPLICATE_READER $Chipcard::PCSC::SCARD_E_INSUFFICIENT_BUFFER $Chipcard::PCSC::SCARD_E_INVALID_ATR $Chipcard::PCSC::SCARD_E_INVALID_HANDLE $Chipcard::PCSC::SCARD_E_INVALID_PARAMETER $Chipcard::PCSC::SCARD_E_INVALID_TARGET $Chipcard::PCSC::SCARD_E_INVALID_VALUE $Chipcard::PCSC::SCARD_E_NO_MEMORY $Chipcard::PCSC::SCARD_E_NO_SERVICE $Chipcard::PCSC::SCARD_E_NO_SMARTCARD $Chipcard::PCSC::SCARD_E_NOT_READY $Chipcard::PCSC::SCARD_E_NOT_TRANSACTED $Chipcard::PCSC::SCARD_E_PCI_TOO_SMALL $Chipcard::PCSC::SCARD_E_PROTO_MISMATCH $Chipcard::PCSC::SCARD_E_READER_UNAVAILABLE $Chipcard::PCSC::SCARD_E_READER_UNSUPPORTED $Chipcard::PCSC::SCARD_E_SERVICE_STOPPED $Chipcard::PCSC::SCARD_E_SHARING_VIOLATION $Chipcard::PCSC::SCARD_E_SYSTEM_CANCELLED $Chipcard::PCSC::SCARD_E_TIMEOUT $Chipcard::PCSC::SCARD_E_UNKNOWN_CARD $Chipcard::PCSC::SCARD_E_UNKNOWN_READER $Chipcard::PCSC::SCARD_E_UNSUPPORTED_FEATURE $Chipcard::PCSC::SCARD_W_REMOVED_CARD $Chipcard::PCSC::SCARD_W_RESET_CARD $Chipcard::PCSC::SCARD_W_UNPOWERED_CARD $Chipcard::PCSC::SCARD_W_UNRESPONSIVE_CARD $Chipcard::PCSC::SCARD_W_UNSUPPORTED_CARD

PCSClite users will also be able to use the following (PCSClitespecific) codes:

 $Chipcard::PCSC::SCARD_INSERTED $Chipcard::PCSC::SCARD_REMOVED $Chipcard::PCSC::SCARD_RESET $Chipcard::PCSC::SCARD_SCOPE_GLOBAL

In addition, the wrapper defines:

 $Chipcard::PCSC::SCARD_P_ALREADY_CONNECTED $Chipcard::PCSC::SCARD_P_NOT_CONNECTED
 

SEE ALSO

pcscd(1) manpage has useful information about PC/SC lite.Chipcard::PCSC::Card manpage gives information about how tocommunicate with a reader and the smart card inside it. 

COPYRIGHT

(C) Lionel VICTOR & Ludovic ROUSSEAU, 2001-2004, GNU GPL(C) Ludovic ROUSSEAU, 2005-2008, GNU GPL 

AUTHORS / ACKNOWLEDGEMENT

 Lionel VICTOR <lionel.victorAATTunforgettable.com>               <lionel.victorAATTfree.fr> Ludovic ROUSSEAU <ludovic.rousseauAATTfree.fr>


 

Index

NAME
SYNOPSIS
DESCRIPTION
CONSTRUCTORS
CONSTRUCTION FAILURE
Chipcard::PCSC METHODS
ERROR HANDLING
SEE ALSO
COPYRIGHT
AUTHORS / ACKNOWLEDGEMENT

This document was created byman2html,using the manual pages.