Commit graph

239 commits

Author SHA1 Message Date
Heiko Schaefer
caffc8a20c Import cleanup 2021-08-03 15:34:09 +02:00
Heiko Schaefer
56f4459932 When the card doesn't support command chaining, throw CommandTooLong error if the command is too long.
(This currently happens with the scdc backend when uploading rsa4096 keys, because scdc additionally limits command size)
2021-07-29 18:35:25 +02:00
Heiko Schaefer
dbf2e9e3fb A CardClient instance can now contain a CardCaps (which specifies how commands should be sent to the card).
Add max_rsp_bytes field to CardCaps.
2021-07-29 18:35:25 +02:00
Heiko Schaefer
c85d006887 Support ECDSA signatures 2021-07-18 21:12:22 +02:00
Heiko Schaefer
aef6c781ed Lint 2021-07-17 03:10:56 +02:00
Heiko Schaefer
5af213562b Add decryption to card-functionality tests. 2021-07-17 02:24:43 +02:00
Heiko Schaefer
f59a8a948c Remove unused imports; Lints. 2021-07-16 18:44:59 +02:00
Heiko Schaefer
0fffb0c91b Refactor for multiple card backends 2021-07-16 17:15:21 +02:00
Heiko Schaefer
610478695f Bugfix in interpreting Sex value 2021-07-16 16:46:34 +02:00
Heiko Schaefer
c8a742e8d0 Imports cleanup; comment 2021-07-16 16:45:57 +02:00
Heiko Schaefer
1c15e61fb4 Add get_key_generation_times() 2021-07-16 16:39:02 +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
b8bd87bd7e Remove Arc<Mutex<>> attempts, rely on assuan::Client now being Send+Sync 2021-07-16 14:15:03 +02:00
Heiko Schaefer
ec8c15cab3 Add conversion implementations 2021-07-14 22:31:00 +02:00
Heiko Schaefer
c445757633 Implement get_key_generation_times() 2021-07-14 21:59:33 +02:00
Heiko Schaefer
7afe2f52c2 Refactor card initialisation 2021-07-14 18:03:07 +02:00
Heiko Schaefer
6c7ce6228c Fix mistake in mapping of u8 value to Sex 2021-07-13 22:27:44 +02:00
Heiko Schaefer
31e577c896 Refactoring low level API for card-functionality tests 2021-07-13 00:08:45 +02:00
Heiko Schaefer
89745c0268 Experiment: wrap Arc<Mutex<CardSign>> in CardSigner 2021-07-12 13:54:59 +02:00
Heiko Schaefer
de0645ef0e refactor opening of cards 2021-07-12 12:15:31 +02:00
Heiko Schaefer
1187e816d0 Cleanup 2021-07-11 17:36:11 +02:00
Heiko Schaefer
2343bd8310 Initial scdc experimentation. 2021-07-10 22:08:36 +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
efe88e3582 Don't expect data in the response to SELECT. 2021-07-07 00:30:31 +02:00
Heiko Schaefer
d1531de4f7 Break out low-level OpenPGP card functionality into card_app.rs
This split makes it possible to write tests based on the low-level API to explore the behaviour of cards in detail.
2021-07-05 21:18:34 +02:00
Heiko Schaefer
dc89010869 Re-format comment 2021-07-05 11:48:34 +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
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
308210e615 Fix tests. 2021-07-02 00:04:00 +02:00
Heiko Schaefer
b427a9d2e7 Add missing enum variant 2021-07-01 23:52:23 +02:00
Heiko Schaefer
f00865ab75 rustfmt 2021-07-01 23:46:12 +02:00
Heiko Schaefer
60243b6d7c Add handling of unknown Algorithms/OIDs in algo_info::parse 2021-07-01 22:45:35 +02:00
Heiko Schaefer
c800a54597 Add Ed448 and X448 to parseable algorithms (for latest Gnuk) 2021-07-01 04:18:59 +02:00
Heiko Schaefer
7ee737068b Remove Le-hack 2021-07-01 04:18:01 +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