SECTOK(3) BSD Programmer's Manual SECTOK(3)
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, size_t fnamelen, 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 an SW1/SW2 pair as specified in ISO 7816. sectok_open() opens a connection to a smart card via serial port number rn. Ports are numbered from 0, which corresponds to /dev/tty00 on UNIX. If there is no card in the reader, sectok_open() 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 re- turn. sectok_friendly_open() opens a connection to a smart card via a reader device name rn. Mapping from reader name to serial port number is the same as used in sectok_open(). For other arguments and return values, see sectok_open(). 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.
sectok(1)
sectok first appeared in OpenBSD 3.0.
Jim Rees and others at University of Michigan Center for Information Technology Integration (CITI). MirBSD #10-current August 3, 2001 2