| Age | Commit message (Collapse) | Author |
|
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!
|
|
|
|
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>".
|
|
While at it, refactor the string output when printing the version to
print string "version" instead of only "v".
|
|
This is to allow people to see the CHANGELOG directly without going to
subdirectory first.
|
|
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.
|
|
|
|
|
|
Golangci-lint is too unreliable for working with gotip, use too
much memory, and its become red herring and subjective instead of
correctness.
|
|
|
|
Using ".reuse/dep5" has been deprecated since REUSE v3.2.0.
|
|
|
|
=== 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.
|
|
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.
|
|
|
|
|
|
The "share" module has been moved to moved from github, to sourcehut.
|
|
|
|
=== 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.
|
|
|
|
|
|
In POSIX system, the correct installation for bash completion
script should be /usr/share/bash-completion not under /etc
directory.
|
|
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.
|
|
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.
|
|
If the label or rawConfig is empty, return an error immediately.
|
|
Check for valid provider name and parse the imported file
before loading private key.
|
|
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
|
|
|
|
=== 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
|
|
|
|
|
|
|
|
The "get" command get and print the issuer by its LABEL.
This will print the issuer secret, unencrypted.
|
|
Previously, the configuration directory initialized inside NewCli.
This changes we make the NewCli accept the config directory so we can
changes it during testing.
|
|
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
|
|
The "lib/crypto" DecryptAoep and EncryptAoep support large message.
|
|
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)
|
|
=== 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.
|
|
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.
|
|
=== 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
|
|
The remove-private-key decrypt the issuer's value back using previous
private key and store it back to file as plain text.
|
|
The set-private-key command encrypt the issuer's value (hash:secret...)
in the file using private key.
The supported private key is RSA.
|
|
If the file is not set, do nothing.
|
|
The MarshalText convert the config object back to INI format.
|
|
|
|
This changes require the loadPrivateKey method detached from Cli and
become function.
|
|
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.
|
|
Use the constant Version instead, no need to automate this.
While at it, fix the test coverage HTML output file name.
|
|
|
|
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.
|