AmiAuth is a native two-factor authentication (2FA) code generator for classic
AmigaOS. It implements TOTP (RFC 6238) and HOTP (RFC 4226) - the codes used by
GitHub, Google, Microsoft, banks and countless other sites - so your Amiga can
stand in for a phone authenticator app.
It stores multiple accounts in an (optionally passphrase-encrypted) vault,
generates 6- or 8-digit codes with a live countdown, and - critically for the
platform - tackles the accurate-time problem that TOTP depends on.
Features
--------
- TOTP (RFC 6238) and HOTP (RFC 4226), 6- or 8-digit codes.
- Multiple accounts in a single vault; import from standard
"otpauth://" URIs.
- Optional vault encryption (ChaCha20 + PBKDF2-HMAC-SHA1), with the
passphrase entered interactively only and per-machine KDF calibration.
- Accurate time without a working clock: SNTP sync over bsdsocket, a manual
UTC offset, and a locale-based first guess, with an honest red/amber/green
trust indicator.
- Two front-ends sharing one portable, RFC-verified core:
* CLI - CODE / ADD / LIST / GET / REMOVE / SYNC / OFFSET.
* GUI - a ReAction interface with a live all-accounts view, clipboard
copy, and QR-image import (decode an "otpauth://" enrolment QR from a
PNG/JPEG/GIF/IFF via a file requester or drag-and-drop).
- The GUI runs as a proper Commodity: it lives in Exchange, pops up on a
hotkey, can start from WBStartup, and is single-instance. While it is
running it owns the unlocked vault, and the CLI transparently forwards
commands to it instead of re-prompting for the passphrase.
- Self-contained: no mandatory external libraries or archives to install.
Requirements
------------
- Any Amiga, from a stock 68000 upwards. The CLI needs AmigaOS 2.04 (V37).
- The GUI needs AmigaOS 3.0+ and the ReAction/ClassAct classes (window,
layout, listbrowser, fuelgauge, button); 3.1.4 / 3.2 / 3.5+ recommended.
- Optional, auto-detected (the feature is simply absent if missing):
* datatypes.library + a picture datatype (png/jpeg/...) - QR image
import.
* commodities.library - the hotkey / Exchange integration.
* bsdsocket.library (a TCP/IP stack) - SNTP time sync.
Installation
------------
Copy "AmiAuth" (CLI) and "AmiAuthGUI" (GUI) to a drawer of your choice; the
vault lives next to them (PROGDIR:AmiAuth.vault) and settings in ENVARC:.
To run the GUI as a background commodity, drop AmiAuthGUI in WBStartup with
icon tooltypes such as:
CX_POPKEY=ctrl alt a
CX_POPUP=yes
TIMESERVER=pool.ntp.org (SNTP server for the startup time sync)
DONOTWAIT
Quick start (CLI)
-----------------
AmiAuth INIT create a vault
AmiAuth ADD "otpauth://totp/GitHub:me?secret=JBSWY3DPEHPK3PXP"
AmiAuth LIST list account names
AmiAuth GET GitHub print the current code
AmiAuth CODE JBSWY3DPEHPK3PXP one-shot code, no vault
AI disclosure
-------------
Be aware: AmiAuth was written largely by an AI coding agent (Anthropic's
Claude / Claude Code), under human direction, review and on-hardware
testing. As this is a security tool that disclosure matters - so rather
than asking for blind trust, the crypto primitives are verified against
their RFC test vectors and fuzzed against OpenSSL, and the full source
is open (BSD) for you to review and judge for yourself.
Security
--------
The vault passphrase is only ever entered interactively (never on the
command line, in an environment variable or over the commodity port).
AmiAuth is a convenience tool for classic hardware, not a hardware
security key - please read the honest threat model before trusting it
with high-value accounts:
https://github.com/sidick/amiauth/blob/main/docs/SECURITY.md
Documentation
-------------
Full user documentation - installation, CLI reference, GUI/commodity guide,
tooltypes, time sync and troubleshooting - is on the project wiki:
https://github.com/sidick/amiauth/wiki
Source and licence
-------------------
Free and open source, BSD 2-Clause. Full source, documentation and issue
tracker: https://github.com/sidick/amiauth
|