P2FA/README.md
2024-11-27 20:42:45 -05:00

1.9 KiB

P2FA

Hardware 2FA Manager

Prep build environment:

  • LG:
wget https://github.com/joan2937/lg/archive/master.zip
unzip master.zip
cd lg-master
make
sudo make install
  • BCM2835
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz
tar zxvf bcm2835-1.71.tar.gz
cd bcm2835-1.71/
sudo ./configure && sudo make && sudo make check && sudo make install 

Required libs:

  • make
  • cmake
  • python3
  • python3-pip
  • gpiod
  • i2c-tools
  • libgpiod-dev
  • libpng-dev
  • libncurses-dev

Build

./build.sh

Executable will be in the "c" directory If moving to an alternate directory, ensure the c/libs/libgo_p2fa.so is copied.

To enable the i2c device, add the following to the bottom of /boot/firmware/config.txt

dtoverlay=i2c-rtc,ds3231

Reference this walk through for more info

Set GPIO pins

pinctrl set 6 pd
pinctrl set 12 pd
pinctrl set 13 pd
pinctrl set 16 pd
pinctrl set 19 pd
pinctrl set 20 pd
pinctrl set 22 pd
pinctrl set 27 pd

Configuration

To add a config, create a text file in the ~/.totp directory (if it doesn't exist then create it). The name of the file will be what is populated on the device.
Ex: "google.txt" will be displayed as "google"

File Format:

key: (Base32 Key, REQUIRED)
hash: (sha1, sha256, sha512, or hmac. OPTIONAL) (default is sha1)
timestep: (int representing duration in seconds between codes, default is 30, OPTIONAL)
counter: (int between 6 and 10 inclusive, HOTP counter, default is 6, OPTIONAL)
digits: (int between 1 and 10 inclusive, how many digits to generate, default is 6, OPTIONAL) 

Example:

key: GGAMSYNKW3H7HEKK
hash: sha1
timestep: 30
counter: 6
digits: 6