Commit graph

83 commits

Author SHA1 Message Date
Heiko Schaefer
858d91b1f8
openpgp-card-sequoia: don't do automatic cardholder name encoding, and document this
Normalize fn name: set_name() -> set_cardholder_name().
2023-09-06 01:28:48 +02:00
Heiko Schaefer
f7936a75fd
openpgp-card-sequoia: Login Data is a binary field 2023-09-06 01:16:32 +02:00
Heiko Schaefer
1681d94710
openpgp-card-sequoia: add set_algorithm() (and remove algorithm setting from generate_key)
Also add set_algorithm_attributes().
2023-09-06 01:16:32 +02:00
Heiko Schaefer
2d1bf919d4
openpgp-card: rename Openpgp and OpenpgpTransaction, restructure modules 2023-09-06 01:16:32 +02:00
Heiko Schaefer
566fd6f9a0
card-functionality: Perform the full set of tests in a single Card<Transaction> 2023-09-06 01:16:32 +02:00
Heiko Schaefer
746f2f647d
card-functionality: adjust to backend and openpgp-card-sequoia API changes 2023-09-06 01:16:32 +02:00
Patryk Cisek
61ab492d9c
Added login data
Added ability to read and set login data field.
2023-08-16 18:41:27 -07:00
Wiktor Kwapisiewicz
4510c34cdc Fix clippy lints: directly use variables in format! strings
The source has been reformatted using `cargo +nightly fmt`.
2023-02-02 09:09:47 +01:00
Heiko Schaefer
27697cb2c5
add rustfmt.toml and set group_imports = "StdExternalCrate" 2022-11-03 14:32:00 +01:00
Heiko Schaefer
fd441dbd14
adjust to changed openpgp-card-sequoia API 2022-10-28 18:55:42 +02:00
Heiko Schaefer
2eb31ede6a
card-functionality: use new Card<State> interface 2022-10-27 13:41:24 +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
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
430afda40a
Adjust to changes in openpgp-card-sequoia 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
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
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
f069fb1e20
Model PINs as &[u8] in openpgp-card-sequoia 2022-03-29 22:40:26 +02:00
Heiko Schaefer
421e4d155f
Make OpenPgp "Send + Sync" 2022-02-28 11:06:00 +01:00
Heiko Schaefer
e9235164c8
Rename PIN-related functions for clarity 2022-02-24 21:25:47 +01:00
Heiko Schaefer
088bb88a02
Consistently model pin as &[u8] in openpgp-card.
Fixes #22
2022-02-24 21:25:47 +01:00
Heiko Schaefer
96167f6530
Move OpenPGP card functionality into OpenPgp/OpenPgpTransaction.
This separates backend access (implemented in CardBackend and CardTransaction) from OpenPGP card operations.

Fixes #7
2022-02-24 21:25:47 +01:00
Heiko Schaefer
636813279b
Reformatted to conform to vanilla rustfmt. 2022-02-24 21:25:47 +01:00
Heiko Schaefer
265587252a
lints 2022-02-18 15:06:31 +01:00
Heiko Schaefer
e01c79e857
Tweak ergonomics of openpgp-card-pcsc usage and simplify client code. 2022-02-18 15:06:31 +01:00
Heiko Schaefer
c23f23c619
Introduce the new CardBackend trait.
A CardBackend represents a card without an open transaction (a CardTransaction implementation can be acquired from a CardBackend).
2022-02-18 15:06:31 +01:00
Heiko Schaefer
5133051626
Rename CardClient -> CardTransaction. 2022-02-18 15:06:31 +01:00
Heiko Schaefer
dcf73bd86d
More explicit data type Lang for language. 2022-02-16 10:02:35 +01:00
Heiko Schaefer
889eedbb79
Remove cardholder_certificate from the public CardClient API, for now (until we learn of actual use cases for this part of the spec). 2022-02-15 16:07:05 +01:00
Heiko Schaefer
574d7be765
Use byte-array data types for url, name, lang in openpgp-card. 2022-02-15 15:34:52 +01:00
Heiko Schaefer
0e94871189
Implement PcscCard::transaction() to replace the transaction!() macro.
(This currently requires unreleased pcsc from git)
2022-02-15 15:34:52 +01:00
Heiko Schaefer
87788e8912
rename get_txc!() -> transaction!() 2022-02-15 10:53:46 +01:00
Heiko Schaefer
bdde317a2d
Simplify optional $reselect parameter in get_txc!() 2022-02-15 10:53:46 +01:00
Heiko Schaefer
36b9fb2770
get_txc!() now assumes the OpenPGP application should be re-selected, by default 2022-02-15 10:49:55 +01:00
Heiko Schaefer
53f637e0a1
Change transaction-starting macro to consume a PcscCard and produce a TxClient.
Rename: start_tx!->get_txc!.
2022-02-14 17:50:42 +01:00
Heiko Schaefer
30341d6c4b
Rename: PcscClient->PcscCard,PcscTxClient->TxClient 2022-02-14 17:46:16 +01:00
Heiko Schaefer
2480745088
Move implementation of low-level OpenPGP functionality from CardApp to CardClient. 2022-02-14 17:46:16 +01:00
Heiko Schaefer
c43b53d210
Add $reselect parameter to start_tx! that specifies if the card should be re-selected if it was reset 2022-02-14 17:43:07 +01:00
Heiko Schaefer
f4eaca229d
Copy card_caps information from PcscClient to PcscTxClient, if any 2022-02-14 17:43:07 +01:00
Heiko Schaefer
b6b2957580
Naming; cleanup; logging for pcsc::initialize_card() 2022-02-14 17:43:07 +01:00
Heiko Schaefer
514d055c90
Run each test in a PCSC Transaction.
(Disabled scdc support in the tests, for now)
2022-02-14 17:43:07 +01:00
Heiko Schaefer
5e7fcd079b
Change CardApp API: take &mut CardClient parameter for all calls (instead of owning a CardClientBox).
This way, clients can exert control over the state of the CardClient, e.g. to combine CardApp operations in a PCSC transaction.
2022-02-14 17:43:07 +01:00
Heiko Schaefer
65e192d728
Clean up warnings 2022-01-07 13:18:36 +01:00
Heiko Schaefer
383f592865
Don't apply Policy when picking (sub)key from Cert for sign/decrypt. 2021-12-11 23:36:36 +01:00
Heiko Schaefer
281bf403e3
Normalize naming of "private use" DO related fn. 2021-12-02 18:35:54 +01:00
Heiko Schaefer
133b290ae6
Adjust getter fn naming. 2021-12-02 18:35:54 +01:00
Heiko Schaefer
9739074b63
Minor error handling/messaging cleanups. 2021-12-01 22:23:22 +01:00
Heiko Schaefer
ecd862e23f
Remove "get_" prefix from getter function names (to better conform with Rust API Guidelines https://rust-lang.github.io/api-guidelines). 2021-12-01 19:11:22 +01:00
Heiko Schaefer
2709b4ad39
Implement pinpad feature detection and pinpad support for verify/modify (of pw1 and pw3) in pcsc backend.
Extend CardCaps to contain pw1_max_len and pw3_max_len (and initialize these values from ARD).

Add pinpad_verify(), pinpad_modify(), feature_verify()/feature_modify() to CardClient API.
Expose in card_app (and openpgp-card-sequoia card API).

Adjust opgpcard, opgpcard-pin to ue pinpad reader when available.
2021-11-30 22:51:18 +01:00