sectok
—
library for communicating with ISO 7816 smartcards
#include "sectok.h"
int
sectok_open
(int
rn, int flags,
int *swp);
int
sectok_friendly_open
(const
char *rn, int
flags, int
*swp);
int
sectok_xopen
(int
rn, int flags,
char *config_path,
char *driver_path,
int *swp);
int
sectok_reset
(int
fd, int flags,
unsigned char *atr,
int *swp);
int
sectok_apdu
(int,
fd, int,
cla, int,
ins, int,
p1, int,
p2, int,
ilen, unsigned,
char, *ibuf,
int, olen,
unsigned, char,
*obuf, int,
*swp);
int
sectok_cardpresent
(int
fd);
int
sectok_close
(int
fd);
int
sectok_selectfile
(int
fd, int cla,
unsigned char *fid,
int *swp);
void
sectok_fmt_fid
(char
*fname, unsigned char
*fid);
int
sectok_parse_atr
(int
fd, int flags,
unsigned char *atr,
int len,
struct scparam
*param);
void
sectok_parse_fname
(char
*buf, unsigned char
*fid);
int
sectok_parse_input
(char
*ibuf, unsigned char
*obuf, int
olen);
int
sectok_get_input
(FILE
*f, unsigned char
*obuf, int omin,
int olen);
int
sectok_fdump_reply
(FILE
*f, unsigned char
*p, int n,
int sw);
int
sectok_dump_reply
(unsigned
char *p, int n,
int sw);
void
sectok_print_sw
(int
sw);
char *
sectok_get_sw
(int
sw);
char *
sectok_get_ins
(int
ins);
int
sectok_swOK
(int
sw);
sectok
provides initialization, input, output, and other
basic routines for ISO 7816 smart cards. Many of the routines return a status
word. This will either be an error code as given in the include file, or a
SW1/SW2 pair as specified in ISO 7816.
sectok_scopen
() opens a connection to a
smart card via serial port number ttyn. Ports are
numbered from 0, which corresponds to /dev/tty00 on UNIX. If there is no
card in the reader, sectok_scopen
() will either wait
for card insertion, or if flag STONOWAIT
is given,
it will return immediately with error STENOCARD
.
swp points to a status word that will be set on
return.
sectok_reset
() resets the card and returns
the ATR in the buffer pointed to by atr if it is not
NULL
. If the STRFORCE
flag
is given, a connection to the card will be established using default
protocol parameters even if the card ATR is illegal.
sectok_apdu
() sends an APDU to the card
with optional IN and OUT data.
cla - application class
ins - instruction code
p1, p2 - per ISO 7816-3 or application dependent
ilen - length of IN data
ibuf - pointer to IN data
olen - length of OUT data
obuf - pointer to OUT data
swp - pointer to return status word
sectok_cardpresent
() returns whether a
card is present in the reader.
sectok_close
() closes a connection to a
smart card.
sectok_selectfile
() selects a file given
its FID by sending a "select" apdu to the card.
sectok_fmt_fid
() returns a printable name
for a FID.
sectok_parse_atr
() parses a card ATR and
returns the protocol parameters. If the STRV
flag is
given it will print the parameters to standard out.
sectok_parse_fname
() translates a
printable name to a FID.
sectok_print_sw
() looks up the error
message string affiliated with a status word and writes it to standard
out.
sectok_swOK
() returns 1 if
sw
indicates success, or 0 if it indicates
failure.
Jim Rees ⟨rees@umich.edu⟩