18f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi/*
28f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi * WPA Supplicant / PC/SC smartcard interface for USIM, GSM SIM
38f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi * Copyright (c) 2004-2006, 2012, Jouni Malinen <j@w1.fi>
48f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi *
58f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi * This software may be distributed under the terms of the BSD license.
68f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi * See README for more details.
78f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi */
88f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi
98f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi#ifndef PCSC_FUNCS_H
108f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi#define PCSC_FUNCS_H
118f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi
128f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi#ifdef PCSC_FUNCS
138f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggistruct scard_data * scard_init(const char *reader);
148f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggivoid scard_deinit(struct scard_data *scard);
158f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi
168f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggiint scard_set_pin(struct scard_data *scard, const char *pin);
178f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggiint scard_get_imsi(struct scard_data *scard, char *imsi, size_t *len);
188f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggiint scard_get_mnc_len(struct scard_data *scard);
198f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggiint scard_gsm_auth(struct scard_data *scard, const unsigned char *_rand,
208f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi		   unsigned char *sres, unsigned char *kc);
218f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggiint scard_umts_auth(struct scard_data *scard, const unsigned char *_rand,
228f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi		    const unsigned char *autn,
238f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi		    unsigned char *res, size_t *res_len,
248f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi		    unsigned char *ik, unsigned char *ck, unsigned char *auts);
258f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggiint scard_get_pin_retry_counter(struct scard_data *scard);
268f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggiint scard_supports_umts(struct scard_data *scard);
278f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi
288f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi#else /* PCSC_FUNCS */
298f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi
308f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi#define scard_init(r) NULL
318f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi#define scard_deinit(s) do { } while (0)
328f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi#define scard_set_pin(s, p) -1
338f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi#define scard_get_imsi(s, i, l) -1
348f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi#define scard_get_mnc_len(s) -1
358f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi#define scard_gsm_auth(s, r, s2, k) -1
368f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi#define scard_umts_auth(s, r, a, r2, rl, i, c, a2) -1
378f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi#define scard_get_pin_retry_counter(s) -1
388f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi#define scard_supports_umts(s) 0
398f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi
408f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi#endif /* PCSC_FUNCS */
418f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi
428f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi#endif /* PCSC_FUNCS_H */
438f2ef8f2d70edcfa159195e2efd23f95ff1b5789Jorim Jaggi