Compare commits
7 Commits
master
...
backup_imp
Author | SHA1 | Date | |
---|---|---|---|
![]() |
6a18037911 | ||
![]() |
dcda21c096 | ||
![]() |
68d9fe6fb7 | ||
![]() |
bba3a30e3b | ||
![]() |
be99caf2a2 | ||
![]() |
3af4830725 | ||
![]() |
5c84c4d8bb |
@ -760,30 +760,37 @@ uint8_t ctaphid_custom_command(int len, CTAP_RESPONSE * ctap_resp, CTAPHID_WRITE
|
|||||||
case CTAPHID_LOADKEY:
|
case CTAPHID_LOADKEY:
|
||||||
/**
|
/**
|
||||||
* Load external key. Useful for enabling backups.
|
* Load external key. Useful for enabling backups.
|
||||||
* bytes: 4 96
|
* bytes: 4 4 96
|
||||||
* payload: | counter_increase (BE) | master_key |
|
* payload: version [maj rev patch RFU]| counter_replacement (BE) | master_key |
|
||||||
*
|
*
|
||||||
* Counter should be increased by a large amount, e.g. (0x10000000)
|
* Counter should be increased by a large amount, e.g. (0x10000000)
|
||||||
* to outdo any previously lost/broken keys.
|
* to outdo any previously lost/broken keys.
|
||||||
*/
|
*/
|
||||||
printf1(TAG_HID,"CTAPHID_LOADKEY\n");
|
printf1(TAG_HID,"CTAPHID_LOADKEY\n");
|
||||||
if (len != 100)
|
if (len != 104)
|
||||||
{
|
{
|
||||||
printf2(TAG_ERR,"Error, invalid length.\n");
|
printf2(TAG_ERR,"Error, invalid length.\n");
|
||||||
ctaphid_send_error(wb->cid, CTAP1_ERR_INVALID_LENGTH);
|
ctaphid_send_error(wb->cid, CTAP1_ERR_INVALID_LENGTH);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
param = ctap_buffer[0] << 16;
|
||||||
|
param |= ctap_buffer[1] << 8;
|
||||||
|
param |= ctap_buffer[2] << 0;
|
||||||
|
if (param != 0){
|
||||||
|
ctaphid_send_error(wb->cid, CTAP2_ERR_UNSUPPORTED_OPTION);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
// Ask for THREE button presses
|
// Ask for THREE button presses
|
||||||
if (ctap_user_presence_test(8000) > 0)
|
if (ctap_user_presence_test(8000) > 0)
|
||||||
if (ctap_user_presence_test(8000) > 0)
|
if (ctap_user_presence_test(2000) > 0)
|
||||||
if (ctap_user_presence_test(8000) > 0)
|
if (ctap_user_presence_test(2000) > 0)
|
||||||
{
|
{
|
||||||
ctap_load_external_keys(ctap_buffer + 4);
|
ctap_load_external_keys(ctap_buffer + 8);
|
||||||
param = ctap_buffer[3];
|
param = ctap_buffer[7];
|
||||||
param |= ctap_buffer[2] << 8;
|
param |= ctap_buffer[6] << 8;
|
||||||
param |= ctap_buffer[1] << 16;
|
param |= ctap_buffer[5] << 16;
|
||||||
param |= ctap_buffer[0] << 24;
|
param |= ctap_buffer[4] << 24;
|
||||||
ctap_atomic_count(param);
|
ctap_atomic_count(param);
|
||||||
|
|
||||||
wb->bcnt = 0;
|
wb->bcnt = 0;
|
||||||
|
@ -560,7 +560,11 @@ uint32_t ctap_atomic_count(uint32_t amount)
|
|||||||
return lastc;
|
return lastc;
|
||||||
}
|
}
|
||||||
|
|
||||||
lastc += amount;
|
if (amount > 256){
|
||||||
|
lastc = amount;
|
||||||
|
} else {
|
||||||
|
lastc += amount;
|
||||||
|
}
|
||||||
|
|
||||||
if (lastc/256 > erases)
|
if (lastc/256 > erases)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user