2002-03-26 11:38:40 +00:00
|
|
|
/*
|
|
|
|
CT-BCS commands, responses and parameters for terminals
|
|
|
|
without keypad and display.
|
|
|
|
|
2005-06-16 19:35:31 +00:00
|
|
|
This file is part of the Unix driver for Towitoko smart card readers
|
2002-03-26 11:38:40 +00:00
|
|
|
Copyright (C) 1998 1999 2000 Carlos Prados <cprados@yahoo.com>
|
|
|
|
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU Lesser General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
Lesser General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
|
|
License along with this library; if not, write to the Free Software
|
|
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _CTBCS_
|
|
|
|
#define _CTBCS_
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Command and response size
|
|
|
|
*/
|
|
|
|
#define CTBCS_MIN_COMMAND_SIZE 2
|
|
|
|
#define CTBCS_MIN_RESPONSE_SIZE 2
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Class byte of all CTBCS commands
|
|
|
|
*/
|
|
|
|
#define CTBCS_CLA 0x20
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Mandatory CT-BCS commands
|
|
|
|
*/
|
|
|
|
#define CTBCS_INS_RESET 0x11 /* Reset CT */
|
|
|
|
#define CTBCS_INS_REQUEST 0x12 /* Request ICC */
|
|
|
|
#define CTBCS_INS_STATUS 0x13 /* Get reader status */
|
|
|
|
#define CTBCS_INS_EJECT 0x15 /* Eject ICC */
|
|
|
|
|
2002-12-23 18:47:27 +00:00
|
|
|
/*
|
|
|
|
* Additional CT-BCS commands
|
|
|
|
*/
|
|
|
|
#define CTBCS_INS_INPUT 0x16 /* Input from pin pad */
|
|
|
|
#define CTBCS_INS_OUTPUT 0x17 /* Output to pad pad display */
|
|
|
|
#define CTBCS_INS_PERFORM_VERIFICATION 0x18 /* Verify PIN from pin pad */
|
|
|
|
#define CTBCS_INS_MODIFY_VERIFICATION 0x19 /* Perform a change/unblock PIN op */
|
|
|
|
|
2002-03-26 11:38:40 +00:00
|
|
|
/*
|
|
|
|
* P1 parameter: functional units
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define CTBCS_P1_CT_KERNEL 0x00
|
|
|
|
#define CTBCS_P1_INTERFACE1 0x01
|
|
|
|
#define CTBCS_P1_INTERFACE2 0x02
|
|
|
|
#define CTBCS_P1_INTERFACE3 0x03
|
|
|
|
#define CTBCS_P1_INTERFACE4 0x04
|
|
|
|
#define CTBCS_P1_INTERFACE5 0x05
|
|
|
|
#define CTBCS_P1_INTERFACE6 0x06
|
|
|
|
#define CTBCS_P1_INTERFACE7 0x07
|
|
|
|
#define CTBCS_P1_INTERFACE8 0x08
|
|
|
|
#define CTBCS_P1_INTERFACE9 0x09
|
|
|
|
#define CTBCS_P1_INTERFACE10 0x0A
|
|
|
|
#define CTBCS_P1_INTERFACE11 0x0B
|
|
|
|
#define CTBCS_P1_INTERFACE12 0x0C
|
|
|
|
#define CTBCS_P1_INTERFACE13 0x0D
|
|
|
|
#define CTBCS_P1_INTERFACE14 0x0E
|
|
|
|
#define CTBCS_P1_DISPLAY 0x40
|
|
|
|
#define CTBCS_P1_KEYPAD 0x50
|
2005-01-29 10:49:48 +00:00
|
|
|
#define CTBCS_P1_PRINTER 0x60 /* New CT-BCS 1.0 */
|
|
|
|
#define CTBCS_P1_FINGERPRINT 0x70 /* New CT-BCS 1.0 */
|
|
|
|
#define CTBCS_P1_VOICEPRINT 0x71 /* New CT-BCS 1.0 */
|
|
|
|
#define CTBCS_P1_DSV 0x72 /* "Dynamic Signature Verification" New CT-BCS 1.0 */
|
|
|
|
#define CTBCS_P1_FACE_RECOGNITION 0x73 /* New CT-BCS 1.0 */
|
|
|
|
#define CTBCS_P1_IRISSCAN 0x74 /* New CT-BCS 1.0 */
|
|
|
|
/* Other biometric units may use values up to 0x7F */
|
2002-03-26 11:38:40 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* P2 parameter for Reset CT: data to be returned
|
|
|
|
*/
|
|
|
|
#define CTBCS_P2_RESET_NO_RESP 0x00 /* Return no data */
|
|
|
|
#define CTBCS_P2_RESET_GET_ATR 0x01 /* Return complete ATR */
|
|
|
|
#define CTBCS_P2_RESET_GET_HIST 0x02 /* Return historical bytes */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* P2 parameter for Request ICC: data to be returned
|
|
|
|
*/
|
|
|
|
#define CTBCS_P2_REQUEST_NO_RESP 0x00 /* Return no data */
|
|
|
|
#define CTBCS_P2_REQUEST_GET_ATR 0x01 /* Return complete ATR */
|
|
|
|
#define CTBCS_P2_REQUEST_GET_HIST 0x02 /* Return historical bytes */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* P2 parameter for Get status: TAG of data object to return
|
|
|
|
*/
|
|
|
|
#define CTBCS_P2_STATUS_MANUFACTURER 0x46 /* Return manufacturer DO */
|
|
|
|
#define CTBCS_P2_STATUS_ICC 0x80 /* Return ICC DO */
|
2005-01-29 10:49:48 +00:00
|
|
|
#define CTBCS_P2_STATUS_TFU 0x81 /* Return Functional Units, new in Version 1.0 */
|
2002-03-26 11:38:40 +00:00
|
|
|
|
2002-12-23 18:47:27 +00:00
|
|
|
/*
|
|
|
|
* P2 parameter for Input
|
|
|
|
*/
|
|
|
|
#define CTBCS_P2_INPUT_ECHO 0x01 /* Echo input on display */
|
|
|
|
#define CTBCS_P2_INPUT_ASTERISKS 0x02 /* Echo input as asterisks */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Tags for paramaters to input, output et al.
|
|
|
|
*/
|
|
|
|
#define CTBCS_TAG_PROMPT 0x50
|
|
|
|
#define CTBCS_TAG_VERIFY_CMD 0x52
|
|
|
|
#define CTBCS_TAG_TIMEOUT 0x80
|
|
|
|
|
|
|
|
/*
|
|
|
|
* PIN command control flags
|
|
|
|
*/
|
|
|
|
#define CTBCS_PIN_CONTROL_LEN_SHIFT 4
|
|
|
|
#define CTBCS_PIN_CONTROL_LEN_MASK 0x0F
|
|
|
|
#define CTBCS_PIN_CONTROL_ENCODE_ASCII 0x01
|
|
|
|
|
2002-03-26 11:38:40 +00:00
|
|
|
/*
|
|
|
|
* General return codes
|
|
|
|
*/
|
|
|
|
#define CTBCS_SW1_OK 0x90 /* Command successful */
|
|
|
|
#define CTBCS_SW2_OK 0x00
|
|
|
|
#define CTBCS_SW1_WRONG_LENGTH 0x67 /* Wrong length */
|
|
|
|
#define CTBCS_SW2_WRONG_LENGTH 0x00
|
|
|
|
#define CTBCS_SW1_COMMAND_NOT_ALLOWED 0x69 /* Command not allowed */
|
|
|
|
#define CTBCS_SW2_COMMAND_NOT_ALLOWED 0x00
|
|
|
|
#define CTBCS_SW1_WRONG_PARAM 0x6A /* Wrong parameters P1, P2 */
|
|
|
|
#define CTBCS_SW2_WRONG_PARAM 0x00
|
|
|
|
#define CTBCS_SW1_WRONG_INS 0x6D /* Wrong Instruction */
|
|
|
|
#define CTBCS_SW2_WRONG_INS 0x00
|
|
|
|
#define CTBCS_SW1_WRONG_CLA 0x6E /* Class not supported */
|
|
|
|
#define CTBCS_SW2_WRONG_CLA 0x00
|
|
|
|
#define CTBCS_SW1_ICC_ERROR 0x6F /* ICC removed, defective or */
|
|
|
|
#define CTBCS_SW2_ICC_ERROR 0x00 /* no longer reacts */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Return codes for Reset CT
|
|
|
|
*/
|
|
|
|
#define CTBCS_SW1_RESET_CT_OK 0x90 /* Reset CT successful */
|
|
|
|
#define CTBCS_SW2_RESET_CT_OK 0x00
|
|
|
|
#define CTBCS_SW1_RESET_SYNC_OK 0x90 /* Synchoronous ICC, */
|
|
|
|
#define CTBCS_SW2_RESET_SYNC_OK 0x00 /* reset successful */
|
|
|
|
#define CTBCS_SW1_RESET_ASYNC_OK 0x90 /* Asynchoronous ICC, */
|
|
|
|
#define CTBCS_SW2_RESET_ASYNC_OK 0x01 /* reset successful */
|
|
|
|
#define CTBCS_SW1_RESET_ERROR 0x64 /* Reset not successful */
|
|
|
|
#define CTBCS_SW2_RESET_ERROR 0x00
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Return codes for Request ICC
|
|
|
|
*/
|
|
|
|
#define CTBCS_SW1_REQUEST_SYNC_OK 0x90 /* Synchoronous ICC, */
|
|
|
|
#define CTBCS_SW2_REQUEST_SYNC_OK 0x00 /* reset successful */
|
|
|
|
#define CTBCS_SW1_REQUEST_ASYNC_OK 0x90 /* Asynchoronous ICC, */
|
|
|
|
#define CTBCS_SW2_REQUEST_ASYNC_OK 0x01 /* reset successful */
|
|
|
|
#define CTBCS_SW1_REQUEST_NO_CARD 0x62 /* No card present */
|
|
|
|
#define CTBCS_SW2_REQUEST_NO_CARD 0x00
|
|
|
|
#define CTBCS_SW1_REQUEST_CARD_PRESENT 0x62 /* Card already present */
|
|
|
|
#define CTBCS_SW2_REQUEST_CARD_PRESENT 0x01
|
2005-01-29 10:49:48 +00:00
|
|
|
#define CTBCS_SW1_REQUEST_ERROR 0x64 /* Reset not successful */
|
|
|
|
#define CTBCS_SW2_REQUEST_ERROR 0x00
|
2002-03-26 11:38:40 +00:00
|
|
|
#define CTBCS_SW1_REQUEST_TIMER_ERROR 0x69 /* Timer not supported */
|
|
|
|
#define CTBCS_SW2_REQUEST_TIMER_ERROR 0x00
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Return codes for Eject ICC
|
|
|
|
*/
|
2005-01-29 10:49:48 +00:00
|
|
|
#define CTBCS_SW1_EJECT_OK 0x90 /* Command succesful, */
|
|
|
|
#define CTBCS_SW2_EJECT_OK 0x00
|
|
|
|
#define CTBCS_SW1_EJECT_REMOVED 0x90 /* Command succesful, */
|
|
|
|
#define CTBCS_SW2_EJECT_REMOVED 0x01 /* Card removed */
|
|
|
|
#define CTBCS_SW1_EJECT_NOT_REMOVED 0x62 /* Card not removed */
|
|
|
|
#define CTBCS_SW2_EJECT_NOT_REMOVED 0x00
|
2002-03-26 11:38:40 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Data returned on Get Status command
|
|
|
|
*/
|
|
|
|
#define CTBCS_DATA_STATUS_NOCARD 0x00 /* No card present */
|
|
|
|
#define CTBCS_DATA_STATUS_CARD 0x01 /* Card present */
|
|
|
|
#define CTBCS_DATA_STATUS_CARD_CONNECT 0x05 /* Card present */
|
|
|
|
|
2002-12-23 18:47:27 +00:00
|
|
|
/*
|
|
|
|
* Functions for building CTBCS commands
|
|
|
|
*/
|
2010-01-24 15:25:08 +00:00
|
|
|
int ctbcs_pin_cmd(struct sc_reader *, struct sc_pin_cmd_data *);
|
2002-12-23 18:47:27 +00:00
|
|
|
|
2002-03-26 11:38:40 +00:00
|
|
|
#endif /* _CTBCS_ */
|