PGP
The pgp
sub-commands are low-level commands, exposing the PGP capabilities of
Scala CLI. These capabilities are used in the publish
and publish setup
commands
in particular.
These commands make it possible to
- create PGP keys with
pgp create
- get a key fingerprint with
pgp key-id
- push them to / pull them from key servers with
pgp push
/pgp pull
- sign files with
pgp sign
- verify signatures with
pgp verify
These capabilities rely on the Bouncy Castle library.
Note that sub-commands relying on signing, such as publish
, also allow signing
to be handled using gpg
.
Create key pairs
$ scala-cli pgp create --email alex@alex.me --password env:MY_PASSWORD
Wrote public key e259e7e8a23475b3 to key.pub
Wrote secret key to key.skr
See the dedicated page for the various formats
accepted by the --password
option.
Get the fingerprint of a public key
$ scala-cli pgp key-id ./key.pub
e259e7e8a23475b3
Push public keys to key servers
$ scala-cli pgp push key.pub
Key 0xe259e7e8a23475b3 uploaded to http://keyserver.ubuntu.com:11371
Pull public keys from key servers
$ scala-cli pgp pull 0x914d298df8fa4d20
-----BEGIN PGP PUBLIC KEY BLOCK-----
…
-----END PGP PUBLIC KEY BLOCK-----
Sign files
$ scala-cli pgp sign --secret-key file:./key.skr --password value:1234 ./foo
$ cat ./foo.asc
-----BEGIN PGP MESSAGE-----
…
-----END PGP MESSAGE-----
$ scala-cli pgp sign --secret-key file:./key.skr --password value:1234 ./foo --stdout
-----BEGIN PGP MESSAGE-----
…
-----END PGP MESSAGE-----
Verify signatures
$ scala-cli pgp verify --key key.pub foo.asc
foo.asc: valid signature