eap_sim_db.h revision 189251
186231Stmm/* 286231Stmm * hostapd / EAP-SIM database/authenticator gateway 386231Stmm * Copyright (c) 2005-2007, Jouni Malinen <j@w1.fi> 486231Stmm * 586231Stmm * This program is free software; you can redistribute it and/or modify 686231Stmm * it under the terms of the GNU General Public License version 2 as 786231Stmm * published by the Free Software Foundation. 886231Stmm * 986231Stmm * Alternatively, this software may be distributed under the terms of BSD 1086231Stmm * license. 1186231Stmm * 1286231Stmm * See README and COPYING for more details. 1386231Stmm */ 1486231Stmm 1586231Stmm#ifndef EAP_SIM_DB_H 1686231Stmm#define EAP_SIM_DB_H 1786231Stmm 1886231Stmm#ifdef EAP_SIM 1986231Stmm 2086231Stmm#include "eap_common/eap_sim_common.h" 2186231Stmm 2286231Stmm/* Identity prefixes */ 2386231Stmm#define EAP_SIM_PERMANENT_PREFIX '1' 2486231Stmm#define EAP_SIM_PSEUDONYM_PREFIX '3' 2586231Stmm#define EAP_SIM_REAUTH_ID_PREFIX '5' 2686231Stmm#define EAP_AKA_PERMANENT_PREFIX '0' 2786231Stmm#define EAP_AKA_PSEUDONYM_PREFIX '2' 2886231Stmm#define EAP_AKA_REAUTH_ID_PREFIX '4' 2986231Stmm 3086231Stmmvoid * eap_sim_db_init(const char *config, 3186231Stmm void (*get_complete_cb)(void *ctx, void *session_ctx), 3286231Stmm void *ctx); 3386231Stmm 3486231Stmmvoid eap_sim_db_deinit(void *priv); 3586231Stmm 3686231Stmmint eap_sim_db_get_gsm_triplets(void *priv, const u8 *identity, 3786231Stmm size_t identity_len, int max_chal, 3886231Stmm u8 *_rand, u8 *kc, u8 *sres, 3986231Stmm void *cb_session_ctx); 4086231Stmm 4186231Stmm#define EAP_SIM_DB_FAILURE -1 4286231Stmm#define EAP_SIM_DB_PENDING -2 4388823Stmm 4486231Stmmint eap_sim_db_identity_known(void *priv, const u8 *identity, 4586231Stmm size_t identity_len); 4686231Stmm 4786231Stmmchar * eap_sim_db_get_next_pseudonym(void *priv, int aka); 4886231Stmm 4986231Stmmchar * eap_sim_db_get_next_reauth_id(void *priv, int aka); 5086231Stmm 5186231Stmmint eap_sim_db_add_pseudonym(void *priv, const u8 *identity, 5286231Stmm size_t identity_len, char *pseudonym); 5388823Stmm 5488823Stmmint eap_sim_db_add_reauth(void *priv, const u8 *identity, 5586231Stmm size_t identity_len, char *reauth_id, u16 counter, 5690617Stmm const u8 *mk); 5790617Stmmint eap_sim_db_add_reauth_prime(void *priv, const u8 *identity, 5886231Stmm size_t identity_len, char *reauth_id, 5986231Stmm u16 counter, const u8 *k_encr, const u8 *k_aut, 6086231Stmm const u8 *k_re); 6186231Stmm 6286231Stmmconst u8 * eap_sim_db_get_permanent(void *priv, const u8 *identity, 6386231Stmm size_t identity_len, size_t *len); 6486231Stmm 6586231Stmmstruct eap_sim_reauth { 6688823Stmm struct eap_sim_reauth *next; 6788823Stmm u8 *identity; 6886231Stmm size_t identity_len; 6986231Stmm char *reauth_id; 7086231Stmm u16 counter; 7186231Stmm int aka_prime; 7286231Stmm u8 mk[EAP_SIM_MK_LEN]; 7386231Stmm u8 k_encr[EAP_SIM_K_ENCR_LEN]; 7486231Stmm u8 k_aut[EAP_AKA_PRIME_K_AUT_LEN]; 7586231Stmm u8 k_re[EAP_AKA_PRIME_K_RE_LEN]; 7686231Stmm}; 7786231Stmm 7886231Stmmstruct eap_sim_reauth * 7986231Stmmeap_sim_db_get_reauth_entry(void *priv, const u8 *identity, 8086231Stmm size_t identity_len); 8186231Stmm 8286231Stmmvoid eap_sim_db_remove_reauth(void *priv, struct eap_sim_reauth *reauth); 8386231Stmm 8486231Stmmint eap_sim_db_get_aka_auth(void *priv, const u8 *identity, 8586231Stmm size_t identity_len, u8 *_rand, u8 *autn, u8 *ik, 8686231Stmm u8 *ck, u8 *res, size_t *res_len, 8786231Stmm void *cb_session_ctx); 8886231Stmm 8986231Stmmint eap_sim_db_resynchronize(void *priv, const u8 *identity, 90105274Stmm size_t identity_len, const u8 *auts, 91105274Stmm const u8 *_rand); 9286231Stmm 9386231Stmm#else /* EAP_SIM */ 9486231Stmmstatic inline void * 95eap_sim_db_init(const char *config, 96 void (*get_complete_cb)(void *ctx, void *session_ctx), 97 void *ctx) 98{ 99 return (void *) 1; 100} 101 102static inline void eap_sim_db_deinit(void *priv) 103{ 104} 105#endif /* EAP_SIM */ 106 107#endif /* EAP_SIM_DB_H */ 108