Commit Graph

155 Commits

Author SHA1 Message Date
Filippo Valsorda
6596145a2c armor: don't leave an empty line before the footer
Closes #264
Fixes #263
v1.0.0-rc.2
2021-05-26 13:35:30 +02:00
Filippo Valsorda
7a262e1ffd agessh: use allowed RSA key size in tests 2021-05-25 21:15:04 +02:00
Filippo Valsorda
0b895a9340 HomebrewFormula: drop man pages that are not yet in the release 2021-05-25 20:54:31 +02:00
Filippo Valsorda
c9aca162ef README: add pkg.go.dev and man page badges 2021-05-25 20:45:46 +02:00
GitHub Actions
c7c3012437 doc: regenerate groff and html man pages 2021-05-25 20:36:23 +02:00
Filippo Valsorda
e58a8859b9 doc: add age(1) and age-keygen(1) man pages
Closes #131
2021-05-25 20:36:23 +02:00
Filippo Valsorda
fb293ef526 agessh: reject small ssh-rsa keys
Fixes #266
2021-05-24 10:58:50 +02:00
Caleb Maclennan
3d5b49a348 README.md: drop system upgrade args from Arch Linux install (#270) 2021-05-24 04:41:27 -04:00
mjkalyan
cd4b2476bc README.md: add Gentoo installation method (#269) 2021-05-24 04:40:36 -04:00
Ryan Castellucci
759a88d3e8 cmd/age-keygen: don't warn about world-readable output for public keys (#268)
Fixes #267
2021-05-18 20:35:29 -04:00
Filippo Valsorda
85763d390a age: remove recipient limit
Fixes #139
2021-05-02 18:44:21 -04:00
Filippo Valsorda
fff82986fa README: clarify pronunciation reference
Updates #103
2021-04-23 11:38:05 -04:00
Filippo Valsorda
67ce088a41 README: add pronunciation
Fixes #103
2021-04-23 03:27:04 -04:00
Filippo Valsorda
3ad0bbed99 README: dry up installation instructions into a table 2021-04-23 02:34:51 -04:00
Simone Ragusa
7a55783693 README: add NixOS/Nix installation instructions (#197) 2021-04-23 02:13:24 -04:00
Herby Gillot
d271e916cf README: add instructions for installing via MacPorts (#179) 2021-04-23 02:12:51 -04:00
Robert-André Mauchin
50254ff522 README: add Fedora installation instructions (#183) 2021-04-23 02:10:02 -04:00
Filippo Valsorda
7a335c9d5d cmd/age: allow reading both passphrase and input from a terminal
Fixes #196
Closes #258
2021-04-23 02:06:50 -04:00
Filippo Valsorda
ff1b4ffb08 cmd/age,cmd/age-keygen: check Close() error on output files
Fixes #81
2021-04-23 00:11:12 -04:00
Filippo Valsorda
e63c22e327 Reapply "agessh: use filippo.io/edwards25519 for Ed25519 to Curve25519 conversion"
This reverts commit 629b0dbbc9.
2021-04-22 22:27:35 -04:00
Filippo Valsorda
a6a173e24f .github/workflows: add freebsd/amd64 and darwin/arm64 builds
Fixes #189
2021-04-22 22:22:57 -04:00
Filippo Valsorda
b4e0d7718f README: remove mailing list mention
It wasn't very active and was replaced by GitHub Discussions.
2021-04-19 00:21:27 -04:00
Filippo Valsorda
9e65644c3f .github: update "New issue" page (#211) 2021-04-18 18:45:50 -04:00
Christian Rebischke
290a2fd5ec README: mention official Arch Linux package (#204)
Signed-off-by: Christian Rebischke <chris@shibumi.dev>
2021-04-05 11:19:17 -04:00
Richard Ulmer
bad2c0d2e0 cmd/age: use golang.org/x/term instead of deprecated package (#205) 2021-04-05 09:22:51 -04:00
Ben Banfield-Zanin
dabc470bfe HomebrewFormula: update age.rb to 1.0.0-rc.1 (#199) 2021-03-21 07:12:27 -04:00
Filippo Valsorda
53f0ebda67 cmd/age: improve a couple error messages v1.0.0-rc.1 2021-03-10 05:38:47 -05:00
Filippo Valsorda
f3fdc33c9e cmd/age-keygen: add -y mode to convert identity file to recipients
Copied -y from ssh-keygen. Copied the INPUT as only optional argument
from cmd/age.

Fixes #122
Closes #146
2021-03-10 05:38:47 -05:00
Filippo Valsorda
a81357c237 all: update golang.org/x/crypto
Picked the latest version that is packaged in Debian Bullseye.

Fixes #184
2021-03-10 05:38:47 -05:00
Filippo Valsorda
69e2222921 internal/format: drop go-fuzz test case
We were not running it in CI, so it had rotted or was going to rot.
We'll replace it with a native fuzz test once that's ready.
2021-03-10 05:38:47 -05:00
Filippo Valsorda
732f3e8a94 cmd/age: add -e and support encrypting with -i
This will come in handy for symmetric plugins, but make it require an
explicit -e so that missing a -d can't cause a mistaken encryption.
2021-03-10 05:38:47 -05:00
Filippo Valsorda
801a7e8b33 cmd/age: overwrite output file if existing
Not really the safest UX, but age is a UNIX tool, and this is what all
UNIX tools do, so adopt the principle of least surprise.
2021-03-10 05:38:47 -05:00
Filippo Valsorda
629b0dbbc9 Revert "agessh: use filippo.io/edwards25519 for Ed25519 to Curve25519 conversion"
The extra dependency makes it harder to package age. Temporarily drop it
to facilitate getting v1.0.0 into distributions.

This reverts commit 53ccaf8b71.
2021-03-10 05:38:47 -05:00
Filippo Valsorda
710644eef8 Revert "cmd/age: automatically load default SSH key paths"
It's not clear the convenience for SSH keys is worth having any
implicitly configured identity at all. Will revisit after v1.0.0.

This reverts commit 225044b061.
2021-03-10 05:38:47 -05:00
Filippo Valsorda
6c8d072dd8 .github/workflows: add Go tip tests and bump tests to Go 1.16 2021-03-09 18:51:05 -05:00
Filippo Valsorda
225044b061 cmd/age: automatically load default SSH key paths 2021-02-08 19:55:28 +01:00
Filippo Valsorda
6da7d26b4d all: add .gitattributes to protect .age files from autocrlf
It looks like a short message encrypted to a long RSA key is enough
ASCII that it gets autocrlf'd on Windows.
2021-02-08 19:55:28 +01:00
Filippo Valsorda
19e87b75b7 cmd/age: expand test vectors suite 2021-02-08 19:55:28 +01:00
Filippo Valsorda
5d96bfa9a9 age: make Identity and Recipient work on multiple stanzas
This is a breaking change, but like the other changes to these
interfaces it should not matter to consumers of the API that don't
implement custom Recipients or Identities, which is all of them so far,
as far as I can tell.

It became clear working on plugins that we might want Recipient to
return multiple recipient stanzas, for example if the plugin recipient
is an alias or a group. The Identity side is less important, but it
might help avoid round-trips and it makes sense to keep things
symmetric.
v1.0.0-beta7
2021-02-08 19:55:28 +01:00
Filippo Valsorda
f04064a41b age: add NoIdentityMatchError
Closes #147
2021-02-08 19:55:28 +01:00
Filippo Valsorda
0fa220e4d7 age: remove IdentityMatcher
It was completely useless: the same checks in Match could be implemented
in Unwrap, returning an early ErrIncorrectIdentity.

Not sure why I added it. It felt clever at the time.
2021-02-08 19:55:28 +01:00
Filippo Valsorda
6546df3bac age: remove Type method from Recipient and Identity interfaces
The Type() method was a mistake, as proven by the fact that I can remove
it without losing any functionality. It gives special meaning to the
"0th argument" of recipient stanzas, when actually it should be left up
to Recipient implementations to make their own stanzas recognizable to
their Identity counterparts.

More importantly, there are totally reasonable Identity (and probably
Recipient) implementations that don't know their own stanza type in
advance. For example, a proxy plugin.

Concretely, it was only used to special-case "scrypt" recipients, and to
skip invoking Unwrap. The former can be done based on the returned
recipient stanza, and the latter is best avoided entirely: the Identity
should start by looking at the stanza and returning ErrIncorrectIdentity
if it's of the wrong type.

This is a breaking API change. However, we are still in beta, and none
of the public downstreams look like they would be affected, as they only
use Recipient and Identity implementations from this package, they only
use them with the interfaces defined in this package, and they don't
directly use the Type() method.
2021-02-08 19:55:28 +01:00
Filippo Valsorda
15df6e2cf7 internal/format: require the last line of stanzas to be short
We are going to reuse the stanza format for IPC in the plugin protocol,
but in that context we need stanzas to be self-closing. Currently they
almost are, but if the body is 0 modulo 48, there is no way to know if
the stanza is over after the last line.

Now, all stanzas have to end with a short line, even if empty.

No ciphertexts generated by age in the past are affected, but 3% of the
ciphertexts generated by rage will now stop working. They are still
supported by rage going forward. If it turns out to be a common issue,
we can add an exception.
2021-02-08 19:55:28 +01:00
James Brown
50b61862d6 HomebrewFormula: update to v1.0.0-beta6 (#180) 2021-02-08 19:55:28 +01:00
Filippo Valsorda
c418992942 cmd/age: touch up help text v1.0.0-beta6 2021-01-15 14:26:33 +01:00
codesoap
902a3d4e6b cmd/age: decide to buffer output based on stdin source
Buffering only when the armorFlag is set disregards use cases where data
from a tty stdin is decrypted or where binary data goes to a tty stdout.

Buffering is only necessary if stdin is a tty and stdout is a tty.

Co-authored-by: Filippo Valsorda <hi@filippo.io>
2021-01-07 16:51:43 -05:00
codesoap
4a5a042583 cmd/age: decouple output buffer and output denial decision
Co-authored-by: Filippo Valsorda <hi@filippo.io>
2021-01-07 16:51:43 -05:00
Tom Payne
6fc795057f cmd/age-keygen: add --output option as an alias for -o (#177) 2021-01-07 19:20:55 +01:00
Filippo Valsorda
f7011ee36a .github/workflows: include LICENSE in binary builds 2021-01-06 13:49:56 +01:00
Richard Ulmer
a8573a5c8d cmd/age: improve help text (#175) 2021-01-04 20:05:33 +01:00