SIM: several fixes

This commit is contained in:
Andreas Eversberg
2020-05-28 19:01:42 +02:00
parent 0cbabc39b1
commit a98b05beb0
4 changed files with 32 additions and 21 deletions

View File

@@ -472,21 +472,21 @@ static void sl_appl(sim_sim_t *sim, uint8_t *data, int length)
PDEBUG(DSIM7, DEBUG_INFO, " SL-APPL app %d\n", app);
/* if PIN is required */
if (sim->pin_required) {
return_pin_not_ok(sim);
return;
}
/* check application */
/* check and set application */
if (app != APP_NETZ_C && app != APP_RUFN_GEBZ) {
PDEBUG(DSIM7, DEBUG_NOTICE, "SL-APPL invalid app %d\n", sim->app);
return_error(sim);
return;
}
sim->app = app;
/* if PIN is required, we request it, but we've already selected the app */
if (sim->pin_required) {
return_pin_not_ok(sim);
return;
}
/* respond */
sim->app = app;
data = alloc_msg(sim, 0);
tx_sdu(sim, 0, data, 0);
}
@@ -913,7 +913,7 @@ static void aut_1(sim_sim_t *sim)
uint8_t *data;
int i;
PDEBUG(DSIM7, DEBUG_INFO, " RD-EBDT\n");
PDEBUG(DSIM7, DEBUG_INFO, " AUTH-1\n");
/* respond */
data = alloc_msg(sim, 1);
@@ -1337,7 +1337,10 @@ int sim_init_eeprom(void)
eeprom_write(EEPROM_FLAGS, (strlen(PIN_DEFAULT) << EEPROM_FLAG_PIN_LEN) | (MAX_PIN_TRY << EEPROM_FLAG_PIN_TRY));
for (i = 0; i < (int)strlen(PIN_DEFAULT); i++)
eeprom_write(EEPROM_PIN_DATA + i, PIN_DEFAULT[i]);
for (i = 0; i < 8; i++)
eeprom_write(EEPROM_AUTH_DATA + i, AUTH_DEFAULT >> ((7 - i) * 8));
/* now write magic characters to identify virgin or initialized EEPROM */
eeprom_write(EEPROM_MAGIC + 0, 'C');
eeprom_write(EEPROM_MAGIC + 1, '0' + EEPROM_VERSION);