Commit graph

89 commits

Author SHA1 Message Date
Heiko Schaefer
8aae0a357e Split the Response type into an internal RawResponse type which also contains the status bytes, and an external Response type that can only be generated from a RawResponse with status "ok".
This removes the need for external users of openpgp-card to check the status or operations.
That is, openpgp-card now always returns an `Err` if the status of a command is not ok.
2021-08-20 13:25:58 +02:00
Heiko Schaefer
f4b90dc4e7 Bump version for release 2021-08-18 20:14:30 +02:00
Heiko Schaefer
a35ba66784 Minor edit of README 2021-08-18 20:10:48 +02:00
Heiko Schaefer
b8e3fc4816 Set version numbers for crates.io releases 2021-08-18 19:57:54 +02:00
Heiko Schaefer
85a05167d1 Refactor, Document API.
(Moved algorithm-related data structures to algorithm.rs)
2021-08-18 19:19:22 +02:00
Heiko Schaefer
6be4daa690 Switch back to using the PCSC backend in the test code. 2021-08-18 15:02:15 +02:00
Heiko Schaefer
0b0e9c48fc Refactor:
- Move high-level API from openpgp-card to openpgp-card-sequoia
- Move the pcsc backend into the separate crate openpgp-card-pcsc
2021-08-18 14:03:54 +02:00
Heiko Schaefer
83d9a703db Simplify 2021-08-13 21:27:59 +02:00
Heiko Schaefer
3361c8b79d Extend Test configuration file format.
Run key generation tests for the algorithms specified in the configuration.
2021-08-13 20:02:53 +02:00
Heiko Schaefer
765b4e8fdc Move "make_cert" into openpgp-card-sequoia 2021-08-13 20:02:53 +02:00
Heiko Schaefer
e9f1256309 Remove/adjust debug prints 2021-08-13 20:02:53 +02:00
Heiko Schaefer
9e5bb9b5a6 Make CardSigner accessible (for use in card-functionality crate) 2021-08-13 20:02:53 +02:00
Heiko Schaefer
44d5abd7ed WIP: Handling of public key material from cards 2021-08-13 20:02:53 +02:00
Heiko Schaefer
a0d92d2dc4 Refactor: add a set_fingerprint() method to CardApp.
Use that method instead of manually calling the apdu command.
Change type of fingerprint in CardUploadableKey to [u8; 20].
2021-08-07 19:27:24 +02:00
Heiko Schaefer
7acc1deb98 - Implement key generation (without specifying an algorithm so the current algo is used. only supports RSA for now)
- Refactor: rename key_upload.rs -> keys.rs
- Fix handling of key timestamps
2021-08-06 20:14:02 +02:00
Heiko Schaefer
f67501d0f9 Lints 2021-08-05 15:16:16 +02:00
Heiko Schaefer
833cdbc238 Adjust to new ScdClient API, socket is not needed anymore. 2021-08-03 18:23:47 +02:00
Heiko Schaefer
083db2a8be Adjust to changed ScdClient API 2021-08-03 15:32:48 +02:00
Heiko Schaefer
9d93570d9f Add comment pointing to Gnuk source for decryption return format. 2021-07-29 17:33:30 +02:00
Heiko Schaefer
6c563b230b Handle Gnuk's return format for NistP256 decryption 2021-07-20 17:38:15 +02:00
Heiko Schaefer
2b221fa76b Truncate digest length for ECDSA.
This fixes signing for nistp256 keys with Gnuk (Gnuk expects a 32 byte hash for nistp256)
2021-07-19 14:18:09 +02:00
Heiko Schaefer
c85d006887 Support ECDSA signatures 2021-07-18 21:12:22 +02:00
Heiko Schaefer
97d4880118 Signing 2021-07-18 12:00:00 +02:00
Heiko Schaefer
5af213562b Add decryption to card-functionality tests. 2021-07-17 02:24:43 +02:00
Heiko Schaefer
4b7b4a2ab6 Use ScdClient::open_scdc_by_serial() in test code. 2021-07-16 17:24:53 +02:00
Heiko Schaefer
e34285dc68 Add helper fn vka_as_uploadable_key() 2021-07-16 17:23:47 +02:00
Heiko Schaefer
da51f27173 Simplify code. 2021-07-16 16:31:14 +02:00
Heiko Schaefer
01126aabdf Support scdaemon as an alternative backend for interaction with OpenPGP cards. 2021-07-16 16:30:56 +02:00
Heiko Schaefer
8e3c6c0046 Add an abstraction layer (CardClient) for access to the card, in preparation for scdaemon client mode. 2021-07-09 20:37:52 +02:00
Heiko Schaefer
fd9cd6eabd Change set* commands to leave out 'Le', because no response data is expected.
(The Floss-Card 3.4 rejects set* commands with "expected" response data)
2021-07-04 01:03:09 +02:00
Heiko Schaefer
3bc14e9d19 Implement check_pw1/3(), which calls "7.2.2 VERIFY" with no data ("Lc empty"), to ask the card for verification status.
(It seems that the Yubikey 5 doesn't support this type of request, but instead responds "6A 80: Incorrect parameters")
2021-07-04 00:04:35 +02:00
Heiko Schaefer
d1f854f2f0 Implement get_pw_status_bytes() 2021-07-03 21:23:17 +02:00
Heiko Schaefer
2a836546b3 Adjust README 2021-07-03 18:24:56 +02:00
Heiko Schaefer
01fab2d91c Use an "ident" to specify a card.
The ident is a combination of manufacturer and serial number.

The OpenPGP card spec stipulates:
"Each OpenPGP application on a card from a manufacturer/personaliser has a unique serial number"
2021-07-03 18:17:30 +02:00
Heiko Schaefer
920da0442b Rename structs that represent different verification states of the OpenPGP card. 2021-07-02 19:47:34 +02:00
Heiko Schaefer
f00865ab75 rustfmt 2021-07-01 23:46:12 +02:00
Heiko Schaefer
1f77472746 Add version to dependency 2021-06-30 22:37:20 +02:00
Heiko Schaefer
f8b10927e7 Documentation links 2021-06-30 22:34:42 +02:00
Heiko Schaefer
88f0598eab Initial commit 2021-06-30 22:29:23 +02:00