char *err = NULL;
const char *sql =
"CREATE TABLE pseudonyms("
- " imsi INTEGER PRIMARY KEY NOT NULL,"
+ " permanent CHAR(21) PRIMARY KEY,"
" pseudonym CHAR(21) NOT NULL"
");";
char *err = NULL;
const char *sql =
"CREATE TABLE reauth("
- " imsi INTEGER PRIMARY KEY NOT NULL,"
+ " permanent CHAR(21) PRIMARY KEY,"
" reauth_id CHAR(21) NOT NULL,"
" counter INTEGER,"
" mk CHAR(40),"
const char *permanent, char *pseudonym)
{
char cmd[128];
- unsigned long long imsi;
char *err = NULL;
- if (!valid_db_string(pseudonym)) {
+ if (!valid_db_string(permanent) || !valid_db_string(pseudonym)) {
os_free(pseudonym);
return -1;
}
- imsi = atoll(permanent);
os_snprintf(cmd, sizeof(cmd), "INSERT OR REPLACE INTO pseudonyms "
- "(imsi, pseudonym) VALUES (%llu , '%s');",
- imsi, pseudonym);
+ "(permanent, pseudonym) VALUES ('%s', '%s');",
+ permanent, pseudonym);
os_free(pseudonym);
if (sqlite3_exec(data->sqlite_db, cmd, NULL, NULL, &err) != SQLITE_OK)
{
size_t len;
for (i = 0; i < argc; i++) {
- if (os_strcmp(col[i], "imsi") == 0 && argv[i]) {
+ if (os_strcmp(col[i], "permanent") == 0 && argv[i]) {
os_strlcpy(data->db_tmp_identity, argv[i],
sizeof(data->db_tmp_identity));
} else if (os_strcmp(col[i], "pseudonym") == 0 && argv[i]) {
sizeof(data->db_tmp_pseudonym_str));
data->db_tmp_pseudonym.pseudonym = data->db_tmp_pseudonym_str;
os_snprintf(cmd, sizeof(cmd),
- "SELECT imsi FROM pseudonyms WHERE pseudonym='%s';",
+ "SELECT permanent FROM pseudonyms WHERE pseudonym='%s';",
pseudonym);
if (sqlite3_exec(data->sqlite_db, cmd, get_pseudonym_cb, data, NULL) !=
SQLITE_OK)
const u8 *k_encr, const u8 *k_aut, const u8 *k_re)
{
char cmd[2000], *pos, *end;
- unsigned long long imsi;
char *err = NULL;
- if (!valid_db_string(reauth_id)) {
+ if (!valid_db_string(permanent) || !valid_db_string(reauth_id)) {
os_free(reauth_id);
return -1;
}
- imsi = atoll(permanent);
pos = cmd;
end = pos + sizeof(cmd);
pos += os_snprintf(pos, end - pos, "INSERT OR REPLACE INTO reauth "
- "(imsi, reauth_id, counter%s%s%s%s) "
- "VALUES (%llu, '%s', %u",
+ "(permanent, reauth_id, counter%s%s%s%s) "
+ "VALUES ('%s', '%s', %u",
mk ? ", mk" : "",
k_encr ? ", k_encr" : "",
k_aut ? ", k_aut" : "",
k_re ? ", k_re" : "",
- imsi, reauth_id, counter);
+ permanent, reauth_id, counter);
os_free(reauth_id);
if (mk) {
struct eap_sim_reauth *reauth = &data->db_tmp_reauth;
for (i = 0; i < argc; i++) {
- if (os_strcmp(col[i], "imsi") == 0 && argv[i]) {
+ if (os_strcmp(col[i], "permanent") == 0 && argv[i]) {
os_strlcpy(data->db_tmp_identity, argv[i],
sizeof(data->db_tmp_identity));
reauth->permanent = data->db_tmp_identity;
struct eap_sim_reauth *reauth)
{
char cmd[256];
- unsigned long long imsi;
- imsi = atoll(reauth->permanent);
+ if (!valid_db_string(reauth->permanent))
+ return;
os_snprintf(cmd, sizeof(cmd),
- "DELETE FROM reauth WHERE imsi=%llu;", imsi);
+ "DELETE FROM reauth WHERE permanent='%s';",
+ reauth->permanent);
sqlite3_exec(data->sqlite_db, cmd, NULL, NULL, NULL);
}