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