change ctap_atomic_count to increase by user-specified amount

pull/238/head^2
Conor Patrick 2019-10-08 11:35:35 -04:00
rodzic 8e0eda8ed4
commit bb2929b28f
3 zmienionych plików z 12 dodań i 19 usunięć

Wyświetl plik

@ -61,8 +61,8 @@ int ctap_user_presence_test(uint32_t delay);
int ctap_generate_rng(uint8_t * dst, size_t num);
// Increment atomic counter and return it.
// Must support two counters, @sel selects counter0 or counter1.
uint32_t ctap_atomic_count(int sel);
// @param amount the amount to increase the counter by.
uint32_t ctap_atomic_count(uint32_t amount);
// Verify the user
// return 1 if user is verified, 0 if not

Wyświetl plik

@ -313,20 +313,11 @@ int ctap_user_verification(uint8_t arg)
}
uint32_t ctap_atomic_count(int sel)
uint32_t ctap_atomic_count(uint32_t amount)
{
static uint32_t counter1 = 25;
/*return 713;*/
if (sel == 0)
{
printf1(TAG_RED,"counter1: %d\n", counter1);
return counter1++;
}
else
{
printf2(TAG_ERR,"counter2 not imple\n");
exit(1);
}
counter1 += amount;
return counter1;
}
int ctap_generate_rng(uint8_t * dst, size_t num)

Wyświetl plik

@ -410,7 +410,7 @@ void authenticator_write_state(AuthenticatorState * a, int backup)
}
}
uint32_t ctap_atomic_count(int sel)
uint32_t ctap_atomic_count(uint32_t amount)
{
int offset = 0;
uint32_t * ptr = (uint32_t *)flash_addr(COUNTER1_PAGE);
@ -425,10 +425,12 @@ uint32_t ctap_atomic_count(int sel)
uint32_t lastc = 0;
if (sel != 0)
if (amount == 0)
{
printf2(TAG_ERR,"counter2 not imple\n");
exit(1);
// Use a random count [1-16].
uint8_t rng[1];
ctap_generate_rng(rng, 1);
amount = (rng[1] & 0x0f) + 1;
}
for (offset = 0; offset < PAGE_SIZE/4; offset += 2) // wear-level the flash
@ -461,7 +463,7 @@ uint32_t ctap_atomic_count(int sel)
return lastc;
}
lastc++;
lastc += amount;
if (lastc/256 > erases)
{