aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-12-27Release gotp v0.6.2 (2025-12-27)HEADv0.6.2maindevShulhan
This is the last release for year 2025. [CHORE] _doc: merge index into README. This is so we can serve the _doc/ directory under https://kilabit.info/project/gotp/ . [CHORE] Update minimum Go version to 1.24.0 and update all dependencies. Happy holidays!
2025-06-30_doc: merge index into READMEShulhan
2025-02-03Release gotp v0.6.1 (2025-02-03)v0.6.1Shulhan
This releases mostly contains chores that update the dependencies and tooling. [CHORE] We have replace all linters from third party and external program to use internal command and "go vet" only. This should simplify setting up development. [CHORE] The CHANGELOG has been moved to the root of repository. This is to allow people to see the CHANGELOG directly without going to subdirectory first. [CHORE] The "gotp version" now set from output of "git describe" and set using "-ldflags" during build option. The output also changes from "go v<SEMVER>" to "go version <SEMVER>".
2025-02-03all: set the Version using git describe and -ldflagsShulhan
While at it, refactor the string output when printing the version to print string "version" instead of only "v".
2025-02-03all: move the CHANGELOG to root of repositoryShulhan
This is to allow people to see the CHANGELOG directly without going to subdirectory first.
2025-02-03all: replace external linters with internal commandShulhan
The fieldalignment and shadow linters are from golang.org/x/tools. Those linters have an exposed APIs that can be combined into single call or program, which provided by "pakakeh.go/lib/goanalysis". This help reduce the tooling need to be installed or setup for development.
2025-02-03go.mod: update all dependenciesShulhan
2025-01-08go.mod: update all dependenciesShulhan
2025-01-08all: replace golangci-lint with go vetShulhan
Golangci-lint is too unreliable for working with gotip, use too much memory, and its become red herring and subjective instead of correctness.
2024-11-07go.mod: update all dependenciesShulhan
2024-09-08all: replace licensing format to REUSE.tomlShulhan
Using ".reuse/dep5" has been deprecated since REUSE v3.2.0.
2024-09-08go.mod: update all dependenciesShulhan
2024-06-22Release gotp v0.6.0 (2024-06-22)v0.6.0Shulhan
=== New features all: implement command "export":: The "export" command export all issuers to file or standard output, $ gotp export <FORMAT> [FILE] List of known supported FORMAT is: uri. If FILE is not defined it will print to standard output. The list of exported issuers are printed in order of its label. === Bug fix Fix "gen" command due to lower case secret:: Sometimes, provider provide base32 of secret in lowercase. But, to decode it, all of the characters must be in upper case otherwise it will be failed.
2024-06-22all: implement command "export"Shulhan
The "export" command export all issuers to file or standard output, $ gotp export <FORMAT> [FILE] List of known supported FORMAT is: uri. If FILE is not defined it will print to standard output. The list of exported issuers are printed in order of its label.
2024-06-22go.mod: update dependenciesShulhan
2024-03-26all: comply with linter recommendationsShulhan
2024-03-26all: replace module "share" with "pakakeh.go"Shulhan
The "share" module has been moved to moved from github, to sourcehut.
2024-02-21Convert base32 encoded hash to upper caseBalki
2024-02-08Release gotp v0.5.0 (2024-02-08)v0.5.0Shulhan
=== Breaking changes * all: make the path to private key static Instead of prompting user, make the private key static, located at "$XDG_CONFIG_DIR/gotp/gotp.key". If the key exist, the issuer will be encrypted. === Enhancements * all: ask for passphrase when removing or renaming label Even though "rename" command does not read the encrypted secret, as long as the private key is in use, it should ask for passphrase. The remove operation allow only the one that know the private key can modify the issuer. * _sys: fix the bash completion installation directory In POSIX system, the correct installation for bash completion script should be /usr/share/bash-completion not under /etc directory.
2024-02-08_AUR: use branch dev when testing build on localShulhan
2024-02-08go.mod: update dependenciesShulhan
2024-01-31_sys: fix the bash completion installation directoryShulhan
In POSIX system, the correct installation for bash completion script should be /usr/share/bash-completion not under /etc directory.
2024-01-30cli: ask for passphrase when removing or renaming labelShulhan
Even though rename does not read the encrypted secret, as long as the private key is in use, it should ask for passphrase. The remove operation allow only the one that know the private key can modify the issuer.
2024-01-30all: use [lib/crypto.LoadPrivateKeyInteractive]Shulhan
The lib/crypto.LoadPrivateKeyInteractive provides a simple way to read passphrase from stdin that also support SSH_ASKPASS. While at it, add test for Cli with passphrase.
2024-01-29issuer: trim spaces on label and rawConfig parameter in NewIssuerShulhan
If the label or rawConfig is empty, return an error immediately.
2024-01-29cli: simplify ImportShulhan
Check for valid provider name and parse the imported file before loading private key.
2024-01-28all: make the path to private key staticShulhan
Instead of prompting user, make the private key static, located at "$XDG_CONFIG_DIR/gotp/gotp.key". Implements: https://todo.sr.ht/~shulhan/gotp/1
2024-01-25go.mod: update all dependenciesShulhan
2023-11-11Release gotp v0.4.0 (2023-11-11)v0.4.0Shulhan
=== New features * all: implement command "get" The "get" command get and print the issuer by its LABEL. This will print the issuer secret, unencrypted. === Enhancements * all: unfold private key path before reading By unfolding, user can set the path to private key using "~" that points to their home. This make the key can works across home directory, in case user have multiple homes (Linux and macOS have different home path and maybe user name, but both can use "~" as substitution for $HOME) * Makefile: add task to install and uninstall gotp in macOS
2023-11-11go.mod: update all dependenciesShulhan
2023-10-09Makefile: add task to install and uninstall gotp in macOSShulhan
2023-10-06all: convert the issuer's label to lowercase in NewIssuerShulhan
2023-10-06all: implement command "get"Shulhan
The "get" command get and print the issuer by its LABEL. This will print the issuer secret, unencrypted.
2023-10-06all: pass the configuration directory parameter to NewCliShulhan
Previously, the configuration directory initialized inside NewCli. This changes we make the NewCli accept the config directory so we can changes it during testing.
2023-10-06all: add task linter and fix all warningsShulhan
We use revive [1], fieldalignment [2], and shadow [3] as linters. [1] https://github.com/mgechev/revive [2] https://pkg.go.dev/golang.org/x/tools@v0.13.0/go/analysis/passes/fieldalignment/cmd/fieldalignment [3] https://pkg.go.dev/golang.org/x/tools@v0.13.0/go/analysis/passes/shadow/cmd/shadow
2023-10-06all: replace encrypt and decryption functions from "lib/crypto"Shulhan
The "lib/crypto" DecryptAoep and EncryptAoep support large message.
2023-10-06all: unfold private key path before readingShulhan
By unfolding, user can set the path to private key using "~" that points to their home. This make the key can works across home directory, in case user have multiple homes (Linux and macOS have different home path and maybe user name, but both can use "~" as substitution for $HOME)
2023-05-25Release gotp v0.3.1 (2023-05-25)v0.3.1Shulhan
=== Bug fix * all: load private key only when needed In case the configuration use private key with passphrase, the bash completion will hang due to the command ask for passphrase. This changes fix this issue by loading private key only when doing add, generate, import, or remote-private-key.
2023-05-19all: load private key only when neededShulhan
In case the configuration use private key with passphrase, the bash completion will hang due to the command ask for passphrase. This changes fix this issue by loading private key only when doing add, generate, import, or remote-private-key.
2023-05-18Release gotp v0.3.0 (2023-05-17)v0.3.0Shulhan
=== New features * all: add command to remove the private key * all: add command to set private key === Chores * all: update Go version to 1.19 and all dependencies
2023-05-16all: add command to remove the private keyShulhan
The remove-private-key decrypt the issuer's value back using previous private key and store it back to file as plain text.
2023-05-16all: add command to set private keyShulhan
The set-private-key command encrypt the issuer's value (hash:secret...) in the file using private key. The supported private key is RSA.
2023-05-15all: check for zero file on config saveShulhan
If the file is not set, do nothing.
2023-05-15all: add method MarshalText to configShulhan
The MarshalText convert the config object back to INI format.
2023-05-15all: group the key for testing into testdata/keysShulhan
2023-05-15all: load the private key in loadConfigShulhan
This changes require the loadPrivateKey method detached from Cli and become function.
2023-05-15all: add function loadConfigShulhan
The loadConfig load the configuration from raw bytes. This replace part of newConfig with loadConfig to minimize duplicate. The idea of loadConfig is to simplify testing later.
2023-05-15all: remove setting Version in Makefile using ldflagsShulhan
Use the constant Version instead, no need to automate this. While at it, fix the test coverage HTML output file name.
2023-05-15all: update Go version to 1.19 and all dependenciesShulhan
2023-05-15all: convert the README from asciidoc to markdownShulhan
I use two remote repositories: GitHub and SourceHut. GitHub support rendering README using asciidoc while SourceHut not. This cause the repository that use README.adoc rendered as text in SourceHut which make the repository page less readable. Also, the pkg.go.dev now render README but only support Markdown. Since we cannot control the SourceHut and go.dev, the only option is to support converting Markdown in ciigo so I can write README using Markdown and the rest of documentation using Asciidoc.