Close

8-Digit tokens / Base32

A project log for Hardware 2FA TOTP authenticator

Small USB 2FA authenticator for up to 32 profiles

itzandroidtabitzandroidtab 03/07/2024 at 06:320 Comments

To make the authenticator compatible with more 2FA providers I added 2 new features. The first one is 8 digit token support. With this feature tokens of 8 digits can now be generated, displayed and typed using the HID keyboard.

TOTP authenticator displaying a 8 digit token

To configure the 8 digit tokens the "digits" field in the CSV file can be set 8 when creating a profile. This changes that specific profile to show 8 digits. Another new feature in the CSV file is supporting base32 strings as key input. These can now be entered with the prefix "b32". See the example in the CSV file for more info. (keys are still limited to 320 bits. If the key has more data it will be ignored) 

Example of a config file with a 8 digit token and base32 key

I also added the profiles in the linker script. The code will use the addresses provided by the linkerscript. This makes it easier to change the location without looking into the code. To move the profile section only the section address and length need to be changed. Currently only 2k (64 bytes * 32 entries) is used in the profile section. As we need to erase a whole sector to reprogram flash the profile region is set to the whole sector. When moving this should be taken into account.

Memory usage with a seperate profiles region

Discussions