Commit graph

294 commits

Author SHA1 Message Date
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
260c38ef25 Adjust tests to changes in Algo struct 2021-08-07 18:24:37 +02:00
Heiko Schaefer
8bc7ffd940 Refactor code for set_algorithm_attributes()
- Move algorithm attribute setting out from key import code
- Simplify Algo struct
2021-08-07 17:44:35 +02:00
Heiko Schaefer
5e0ee12e17 Simplify unwrapping Error 2021-08-07 17:15:22 +02:00
Heiko Schaefer
d9a25c23c9 Remove printlns 2021-08-07 00:54:01 +02:00
Heiko Schaefer
feb6f7be51 Implement get_pub_key() 2021-08-07 00:18:13 +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
538bfb51d4 Sort imports. 2021-08-06 16:44:48 +02:00
Heiko Schaefer
f42596f2f5 Handle key import when a card doesn't support the "Algorithm Information" command. 2021-08-05 21:10:18 +02:00
Heiko Schaefer
3effe39aa1 Moved handling of cards and configuration of cards for testing to cards.rs 2021-08-05 15:31:14 +02:00
Heiko Schaefer
f67501d0f9 Lints 2021-08-05 15:16:16 +02:00
Heiko Schaefer
7541b2f493 Expand documentation in example config file, reformat config. 2021-08-04 22:29:55 +02:00
Heiko Schaefer
d2c4152595 Move the configuration of cards for card-functionality test suite into the file config/test-cards.toml.
Add an example for this config file in `config/test-cards-example.toml`.
Add handling for this toml configuration.
2021-08-04 19:15:45 +02:00
Heiko Schaefer
1af3a4b5ee Explore shutting down scdaemon when accessing cards via pcsc. 2021-08-03 23:18:19 +02:00
Heiko Schaefer
897847cb46 Add a shutdown_scd() function, to explore managing scdaemon. 2021-08-03 23:17:06 +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
d5b1b2daa3 Adjust to new ScdClient API, socket is not needed anymore. 2021-08-03 17:46:55 +02:00
Heiko Schaefer
f46d94f989 Communicate with scdaemon via gpg-agent (this removes the need for a "socket" parameter) 2021-08-03 17:46:13 +02:00
Heiko Schaefer
caffc8a20c Import cleanup 2021-08-03 15:34:09 +02:00
Heiko Schaefer
083db2a8be Adjust to changed ScdClient API 2021-08-03 15:32:48 +02:00
Heiko Schaefer
c9e7f1b0aa Some cleanup/documentation.
ScdClient now produces the lower level CardClientBox objects (instead of CardBase)
2021-08-03 15:31:40 +02:00
Heiko Schaefer
744d0e1aac Improve phrasing of description 2021-08-03 10:21:21 +02:00
Heiko Schaefer
595bf3cf4d Lints 2021-07-29 18:35:25 +02:00
Heiko Schaefer
420550ce75 Print the underlying error when a key upload fails 2021-07-29 18:35:25 +02:00
Heiko Schaefer
396ce9d8c6 Add a "test" that prints historical bytes, extended capabilities and extended length information.
(This is used for debugging during development, not as an actual test)
2021-07-29 18:35:25 +02:00
Heiko Schaefer
d67c01c9f6 Adjust to CardClient API changes 2021-07-29 18:35:25 +02:00
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