Commit graph

868 commits

Author SHA1 Message Date
Heiko Schaefer
ff65d200ec Improve scdaemon client backend:
- Use "--exlen" SCD parameter for extended length commands.
- Deal with Assuan line length limitations.
- Add a CardCaps to ScdClient.
2021-07-29 18:35:25 +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
9d93570d9f Add comment pointing to Gnuk source for decryption return format. 2021-07-29 17:33:30 +02:00
Heiko Schaefer
ee6b45477e Clean up output format 2021-07-21 01:48:53 +02:00
Heiko Schaefer
3ed3c5c33f Cleanup comment 2021-07-20 20:35:43 +02:00
Heiko Schaefer
03e07ef2d0 clippy lint 2021-07-20 20:30:14 +02:00
Heiko Schaefer
c789c90b9e - more explicit error handling
- add abstraction for types of card
2021-07-20 20:30:14 +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
b47b7930f0 Add 25519 and NIST256/521 keys to the set of tests. 2021-07-18 21:41:03 +02:00
Heiko Schaefer
50295fdc84 Add more test keys and encrypted test-messages. 2021-07-18 21:30:32 +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
aef6c781ed Lint 2021-07-17 03:10:56 +02:00
Heiko Schaefer
7590b4f06b Depend on sequoia-ipc from sequoia git main (for assuan::Client) 2021-07-17 02:39:42 +02:00
Heiko Schaefer
fa0c5a7faf Fix reuse license information 2021-07-17 02:27:51 +02:00
Heiko Schaefer
5af213562b Add decryption to card-functionality tests. 2021-07-17 02:24:43 +02:00
Heiko Schaefer
1bd1326a2b For now: depend on sequoia-ipc from the branch where assuan::Client is Send+Sync 2021-07-16 18:52:43 +02:00
Heiko Schaefer
f59a8a948c Remove unused imports; Lints. 2021-07-16 18:44:59 +02:00
Heiko Schaefer
77e32e02c2 Add the crate card-functionality, which implements a test suite to test the openpgp-card crate against a set of OpenPGP cards 2021-07-16 17:26:10 +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
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
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
b8bd87bd7e Remove Arc<Mutex<>> attempts, rely on assuan::Client now being Send+Sync 2021-07-16 14:15:03 +02:00
Heiko Schaefer
68cad4c147 Implement ScdClient::open_scdc_by_serial() to open a specific card through scdaemon 2021-07-15 13:22:33 +02:00
Heiko Schaefer
32dbecbda2 Test code for key uploading 2021-07-15 13:13:56 +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
38fb6bd970 Add a helper method to construct a CardUploadableKey from a ValidErasedKeyAmalgamation 2021-07-14 18:02:11 +02:00
Heiko Schaefer
42c4f14d57 - Add documentation
- Add placeholders for more tests
2021-07-14 02:09:35 +02:00
Heiko Schaefer
499e128b4e Minimize the output data: assert data that is always expected - only return Status bytes that diverge between cards.
Added a test that sets and checks name, lang, sex, url data.
2021-07-14 00:06:30 +02:00
Heiko Schaefer
6c7ce6228c Fix mistake in mapping of u8 value to Sex 2021-07-13 22:27:44 +02:00
Heiko Schaefer
6601d2d09b - return data from tests in a Vec
- run a test on a set of cards
2021-07-13 20:38:27 +02:00
Heiko Schaefer
3bba67fbcc First draft of low-level card functionality testing 2021-07-13 00:09:50 +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
3872b585d8 Add SPDX copyright headers 2021-07-12 12:25:58 +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