Commit graph

98 commits

Author SHA1 Message Date
Heiko Schaefer
bb577647c4
opgpcard: clarify/add comment 2022-10-26 01:00:29 +02:00
Heiko Schaefer
4674b95557
opgpcard: properly error out of sign/decrypt, if the relevant key slot is empty 2022-10-25 19:03:53 +02:00
Nora Widdecke
23b4c05c3d
opgpcard: Make algo selection type safe 2022-10-25 14:55:39 +02:00
Nora Widdecke
1834762879
opgpcard: Remove negative logic 2022-10-25 14:53:05 +02:00
Nora Widdecke
e81ebd21a0
opgpcard: Restrict values of id of set-identity 2022-10-25 14:53:05 +02:00
Nora Widdecke
a7731ec467
opgpcard: Add Nora to license headers 2022-10-25 14:53:05 +02:00
Nora Widdecke
e9787dcbd3
opgpcard: Make TouchPolicy type safe 2022-10-25 14:53:05 +02:00
Nora Widdecke
9dd4f3ab56
opgpcard: Make the KeySlots type safe 2022-10-25 14:44:44 +02:00
Heiko Schaefer
708a8b2707
opgpcard: remove dependencies on lower level openpgp-card (use only the openpgp-card-sequoia API) 2022-10-25 12:53:37 +02:00
Heiko Schaefer
fff5b18310
opgpcard: adjust handling of card_service_data 2022-10-25 10:37:37 +02:00
Lars Wirzenius
dd02a29497 add integration/acceptance test with Subplot
These need to be run with the virtual smartcard emulation in the
Docker container specified in .gitlab-ci.yml for tests.

The tests are a little simplistic, as it turned out that making
changes to the smart card results in flaky tests. Thus only parts of
opgpcard that don't change the card are tested.

Sponsored-by: NLnet Foundation; NGI Assure
2022-10-24 20:30:14 +03:00
Lars Wirzenius
0b616e7b6e implement output formats, version
This is where we actually implement support for the new, versioned
JSON/YAML output formatting.
2022-10-24 19:33:21 +03:00
Lars Wirzenius
dd6950e5fe add command line options to specify output format, version
In this change, these have no effect, but they will have soon. Very soon.

Sponsored-by: NLnet Foundation; NGI Assure
2022-10-24 19:33:21 +03:00
Lars Wirzenius
eb0ad179f6 output: add module that models output for various subcommands
Each subcommand has its own model, and models for each major version
of the output. This isn't used yet, but soon will be.

Sponsored-by: author
2022-10-24 19:33:21 +03:00
Lars Wirzenius
dd0b74c43b versioned_output.rs: add scaffolding for versioned JSON
JSON and other structured output needs to be versioned so that
consumers can rely on it long term. Add a module for specifying output
format and version, as well as traits for implementing things. This
doesn't do anything on its own, but future changes will build on it.

Sponsored-by: NLnet Foundation; NGI Assure
2022-10-24 19:33:21 +03:00
Heiko Schaefer
13b2b62f07
Simplify: use the changed CardBackend handling and the new openpgp-card-sequoia Card struct 2022-09-28 20:44:34 +02:00
Heiko Schaefer
c96377c9df
OpenPGP owns CardBackend (instead of holding a &mut CardBackend).
When OpenPgp holds a &mut CardBackend, clients of this library need to keep track of the CardBackend (which adds unnecessary complexity).
2022-09-28 20:42:27 +02:00
Heiko Schaefer
8cadded9f0
opgpcard: rename parameter "user-id" to "userid" to match sq 2022-09-08 19:30:05 +02:00
Heiko Schaefer
9aff50d2d3
Fix lint warnings 2022-09-04 20:36:17 +02:00
Heiko Schaefer
96e28b1b4f
opgpcard: Add optional user-id parameter for "pubkey" and "admin generate", to bind User IDs to the certificate. 2022-09-04 20:30:33 +02:00
Heiko Schaefer
8e6f03a2c5
Fix new clippy lints. 2022-08-30 19:19:25 +02:00
Heiko Schaefer
380592b069
opgpcard: implement import of encrypted keys.
- handle cases where not all keys are encrypted, or keys are encrypted with different passwords.
- check availability of all necessary passwords before starting to write to the card.

(Fixes #33)
2022-08-05 22:43:23 +02:00
Heiko Schaefer
3f833faf3b
Change short option name for showing "public-key-material" in status to '-K' for uniqueness. 2022-07-26 16:16:44 +02:00
Heiko Schaefer
b614716c0b
Don't require a certificate for signing or decryption (use the public key material from the card instead). 2022-07-25 18:12:03 +02:00
Heiko Schaefer
a477b81a19
Clippy fixes: don't bind unit values. 2022-07-16 12:13:37 +02:00
Heiko Schaefer
d96e56651b
Add callback Fn for touch confirmation prompt to generate attestations. 2022-06-11 09:55:06 +02:00
Heiko Schaefer
374f9eec89
Add callback Fn for touch confirmation prompt for decryption operations. 2022-06-11 09:55:06 +02:00
Heiko Schaefer
079cc32427
Add callback Fn for touch confirmation prompt for signing operations. 2022-06-11 09:55:05 +02:00
Heiko Schaefer
f9d69dbefb
Implement 'opgpcard admin touch' to set the touch confirmation policy. 2022-06-11 09:55:03 +02:00
Heiko Schaefer
15d457864c
Reorganize 'status' output format 2022-06-11 09:55:03 +02:00
Heiko Schaefer
0694e084e4
Add comment about verifying the admin PIN before attempting a PIN-change (and a link to a yubico developer blog article detailing a potential pitfall of *not* doing that check) 2022-05-24 18:33:46 +02:00
Heiko Schaefer
26f1af2bd3
Use select_data() in AttCommand::Show 2022-05-24 16:20:59 +02:00
Heiko Schaefer
22c29262d3
Implement attestation-related functionality in opgpcard 2022-05-24 16:20:59 +02:00
Heiko Schaefer
b668aebaba
KeyGenerationTime: remove formatted(); add to_datetime(); implement Display. 2022-05-01 21:36:06 +02:00
Heiko Schaefer
02b42081b9
Implement Display for CardholderRelatedData 2022-05-01 21:36:06 +02:00
Heiko Schaefer
9aa46adffb
remove disable_help_subcommand 2022-04-26 14:41:20 +02:00
Heiko Schaefer
b795f32f09
opgpcard: Print additional card status details 2022-04-23 21:20:59 +02:00
Heiko Schaefer
34b1be073a
Clean up SSH public key output text 2022-04-23 21:03:59 +02:00
Heiko Schaefer
c275bfc7dd
Add more help output, re-organize commands 2022-04-21 20:06:16 +02:00
Heiko Schaefer
8514ef35d1
Tweak opgpcard status output. 2022-04-21 19:39:00 +02:00
Heiko Schaefer
9edd459d86
Update to rpassword 6 2022-04-21 18:01:29 +02:00
Heiko Schaefer
3dadc5d16f
Always style PIN names as "User PIN" and "Admin PIN", in user interactions. 2022-04-21 17:58:05 +02:00
Heiko Schaefer
99e0c6caaf
Implement, document PIN management in opgpcard 2022-04-21 13:28:21 +02:00
Heiko Schaefer
55696346c9
Use Display trait to print card information 2022-04-15 17:52:55 +02:00
Heiko Schaefer
e6c40be8ad
Adjusted/improved handling of public keys (especially to find the correct KDF parameters for ECC decryption keys):
- "Brute force" find the right KDF parameters in the new helper fn public_key_material_and_fp_to_key() [try possible parameters until a matching fingerprint is found, error if none].
- In `opgpcard pubkey`, use public_key_material_and_fp_to_key() to find the right parameters for the ECC decryption subkey (this subcommand now fails when the fingerprint on the card doesn't match the fingerprint of the public key data for that key slot)
- When generating OpenPGP ECC decryption keys from public key material (including to compute fingerprints from the key material), use SHA256/AES128 as default parameters.
2022-04-15 16:17:04 +02:00
Heiko Schaefer
58b8454e33
Implement an "info" command that prints capabilities/metadata for a card (the output format is currently not very nice, it would benefit from working on https://gitlab.com/hkos/openpgp-card/-/issues/9). 2022-04-03 02:27:27 +02:00
Heiko Schaefer
2f903f5907
Implement a "pubkey" command that prints the OpenPGP public key representation of the keys on a card. 2022-04-03 00:58:32 +02:00
Heiko Schaefer
1f7d17bc70
Optionally allow interactive PIN entry. 2022-03-30 01:31:49 +02:00
Heiko Schaefer
f069fb1e20
Model PINs as &[u8] in openpgp-card-sequoia 2022-03-29 22:40:26 +02:00
Heiko Schaefer
e18affc1ea
Print guidance for the '--card' parameter in status/ssh, when more than one card is plugged in. 2022-03-25 21:05:40 +01:00