Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shulhan/gotp
[mirror] Command line interface for Time-based One Time Password (TOTP)
https://github.com/shulhan/gotp
cli go otp totp
Last synced: about 1 month ago
JSON representation
[mirror] Command line interface for Time-based One Time Password (TOTP)
- Host: GitHub
- URL: https://github.com/shulhan/gotp
- Owner: shuLhan
- License: gpl-3.0
- Created: 2021-10-27T15:28:46.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-09-07T18:18:32.000Z (2 months ago)
- Last Synced: 2024-09-08T19:07:44.350Z (2 months ago)
- Topics: cli, go, otp, totp
- Language: Go
- Homepage: https://sr.ht/~shulhan/gotp/
- Size: 161 KB
- Stars: 2
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
# gotp
A command line interface to manage and generate Time-based One Time Password
(TOTP).## SYNOPSIS
gotp
## COMMANDS
This section describe available command and its usage.
add :[:DIGITS][:TIME-STEP][:ISSUER]
Add a TOTP secret identified by unique LABEL.
HASH is one of the valid hash function: SHA1, SHA256, or
SHA512.
BASE32-SECRET is the secret to generate one-time password
encoded in base32.
The DIGITS field is optional, define the number digits
generated for password, default to 6.
The TIME-STEP field is optional, its define the interval in
seconds, default to 30 seconds.
The ISSUER field is also optional, its define the name of
provider that generate the secret.export [FILE]
Export all the issuers to file format that can be imported by provider.
Currently, the only supported FORMAT is "uri".
If FILE is not provided, it will print to the standard output.
The list of exported issuers are printed in order by its label.gen [N]
Generate N number passwords using the secret identified by LABEL.
get
Get and print the issuer by its LABEL.
This will print the issuer secret, unencrypted.import
Import the TOTP configuration from other provider.
Currently, the only supported PROVIDER is Aegis and the supported file
is .txt.list
List all labels stored in the configuration.
remove
Remove LABEL from configuration.
remove-private-key
Decrypt the issuer's value (hash:secret...) using current private key and
store it back to file as plain text.
The current private key will be removed from gotp directory.rename
Rename a LABEL into NEW-LABEL.
set-private-key
Encrypt the issuer's value (hash:secret...) in the file using private key.
The supported private key is RSA.
Once completed, the PRIVATE-KEY-FILE will be copied to default user's gotp
directory, "$XDG_CONFIG_DIR/gotp/gotp.key".## ENCRYPTION
On the first run, the gotp command check for private key in the user's
configuration direction (see the private key location in FILES section).The private key must be RSA based.
If the private key exist, all the OTP values (excluding the label) will be
stored as encrypted.If the private key is not exist, the OTP configuration will be stored as
plain text.## FILES
$XDG_CONFIG_DIR/gotp:: Path to user's gotp directory.
$XDG_CONFIG_DIR/gotp/gotp.conf:: File where the configuration and
secret are stored.$XDG_CONFIG_DIR/gotp/gotp.key:: Private key file to encrypt and decrypt the
issuer.For Darwin/macOS the "$XDG_CONFIG_DIR" is equal to "$HOME/Library",
for Windows its equal to "%AppData%".## EXAMPLES
This section show examples on how to use gotp cli.
Add "my-totp" to configuration using SHA1 as hash function, "GEZDGNBVGY3TQOJQ"
as the secret, with 6 digits passwords, and 30 seconds as time step.$ gotp add my-totp SHA1:GEZDGNBVGY3TQOJQ:6:30
Generate 3 recent passwords from "my-totp",
$ gotp gen my-totp 3
gotp: reading configuration from /home/$USER/.config/gotp/gotp.conf
847945
326823
767317Import the exported Aegis TOTP from file,
$ gotp import aegis aegis-export-uri.txt
gotp: reading configuration from /home/$USER/.config/gotp/gotp.conf
OKList all labels stored in the configuration,
$ gotp list
gotp: reading configuration from /home/$USER/.config/gotp/gotp.conf
my-totpRemove a label "my-totp",
$ gotp remove my-totp
gotp: reading configuration from /home/$USER/.config/gotp/gotp.conf
OKRename a label "my-totp" to "my-otp",
$ gotp rename my-totp my-otp
gotp: reading configuration from /home/$USER/.config/gotp/gotp.conf
OK