Commit graph

141 commits

Author SHA1 Message Date
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
Heiko Schaefer
af673f537c
Adjust error handling in CardSigner and CardDecryptor (for better error messages in tools, such as opgpcard).
Refactor sq_utils, rename some fn for clarity.
2021-11-21 15:21:43 +01:00
Heiko Schaefer
90ae9398ed
Adjust the backend API and interaction with openpgp-card some more. 2021-11-12 18:47:56 +01:00
Heiko Schaefer
7a71f88eb6
Rename Open::open() to Open::new() 2021-11-11 16:40:08 +01:00
Heiko Schaefer
d10cbe8eff
clean up lints 2021-11-11 16:40:08 +01:00
Heiko Schaefer
d55985807c
Change the API for interactions between openpgp-card and backends.
The goal of this change is a cleaner structure, and in particular to make it the default for client-code to obtain a CardApp with pre-initialized "capabilities" (that is, init_caps() gets called implicitely).
2021-11-11 16:40:08 +01:00
Heiko Schaefer
8674b0e65c Refactor "Open" to use a borrowed CardApp (instead of owning the CardApp). 2021-11-05 13:34:14 +01:00
Heiko Schaefer
aa7528ec9a Add functionality for cli tools. 2021-10-28 00:05:41 +02:00
Heiko Schaefer
1d4f058858 add comment about Gnuk pin change precondition 2021-10-27 12:10:18 +02:00
Heiko Schaefer
77c7a90daf sq_util::get_subkey() now returns an Option.
Not finding any subkey is not an error.
2021-10-23 20:01:10 +02:00
Heiko Schaefer
5d8b547158 Build and run card-functionality tests against two JavaCard images (SmartPGP and YubiKey NEO) 2021-10-19 22:57:57 +02:00
Heiko Schaefer
dfca788e2f Yet more documentation edits. 2021-10-13 16:44:37 +02:00
Heiko Schaefer
f2b65e7880 Some more edits for documentation. 2021-10-11 12:11:56 +02:00
Heiko Schaefer
63576de817 Add documentation, in particular for running the tests against emulated Gnuk. 2021-10-11 11:53:41 +02:00
Heiko Schaefer
73593e66e7 Add "list-cards" tool. 2021-10-08 00:51:01 +02:00
Heiko Schaefer
6de3901c12 Add a NIST384 key for testing. 2021-09-22 13:22:45 +02:00
Heiko Schaefer
43e57ffc7a Make password exploration-test more robust. 2021-09-21 19:54:43 +02:00
Heiko Schaefer
10ddb8918d Add an RSA1k key for testing (with older cards). 2021-09-21 17:18:43 +02:00
Heiko Schaefer
cf8fb05210 Don't set a policy implicitly. 2021-09-21 16:59:01 +02:00
Heiko Schaefer
dbbe4ed4c1 Fix comparison of card ident (the test config shouldn't be case sensitive) 2021-09-21 16:50:34 +02:00
Heiko Schaefer
56e3845ea4 Explicitly set policy when calling util::upload_subkeys() 2021-09-21 11:22:56 +02:00
Heiko Schaefer
0d249a47fd sq_util::get_subkey() is now the central helper fn for picking a (sub)key from a Cert. 2021-09-11 16:27:31 +02:00
Heiko Schaefer
936f04663c Rename list_cards() -> cards().
Remove open_yolo() from the openpgp-card-pcsc API (it's easy enough to approximate by using cards())
2021-09-11 12:42:01 +02:00
Heiko Schaefer
55e7a2c794 Re-ordering the -sequoia crate, as a first step towards defining its API. 2021-09-11 12:42:01 +02:00
Heiko Schaefer
8814dbd766 Add test_change_pw() and test_resetting(), both of which are still in an exploratory stage. 2021-09-09 01:06:44 +02:00
Heiko Schaefer
c5d03bd677 Rename StatusByte -> StatusBytes 2021-09-07 11:50:20 +02:00
Heiko Schaefer
8b5894e961 Rename get_app_data() to get_application_related_data() to correspond with naming in spec. 2021-09-02 22:09:46 +02:00
Heiko Schaefer
316ca7eb3a Rename error types and re-export them at the crate top level. 2021-09-01 23:59:56 +02:00
Heiko Schaefer
f8d998b3a6 Implement From<CardClientBox>, Into<CardClientBox> for CardApp and adjust client code. 2021-09-01 22:26:25 +02:00
Heiko Schaefer
88c924c7d9 Add documentation, normalize fn names. 2021-09-01 20:45:18 +02:00
Heiko Schaefer
5a6a5754e1 Add an RSA3k private key for import tests 2021-08-29 18:00:23 +02:00
Heiko Schaefer
a89a106d20 Print ApplicationId in test_print_caps 2021-08-28 19:59:23 +02:00
Heiko Schaefer
935c77f59a Rename ApplicationRelatedData::get_aid() to get_application_id() 2021-08-28 19:58:34 +02:00
Heiko Schaefer
fdac0de34f Add a CI job to run 'cargo test' with rustc/cargo from debian stable.
Minor fixes so that the code compiles with rustc 1.48
2021-08-27 15:15:31 +02:00
Heiko Schaefer
7c8c72339b Use KeyGenerationTime in openpgp-card APIs (instead of u32 or SystemTime) 2021-08-26 19:27:08 +02:00
Heiko Schaefer
eaf46e6bbb Make fields private, add accessor methods. 2021-08-26 17:59:54 +02:00
Heiko Schaefer
c6ba204293 Move debug prints for key generation from keys.rs to tests.rs 2021-08-25 21:18:13 +02:00
Heiko Schaefer
833a22f8f0 Add test to explore cardholder cert functionality 2021-08-25 16:42:18 +02:00
Heiko Schaefer
013af97c23 Implement get_private() and set_private(). 2021-08-22 18:59:54 +02:00
Heiko Schaefer
cb8f3c7cb1 Elaborate "PW status bytes", fix broken naming of members.
Implement set_pw_status_bytes().
Add test code to card-functionality.
2021-08-22 01:20:14 +02:00
Heiko Schaefer
5109ac5445 Rename card_data -> card_do 2021-08-21 19:02:04 +02:00
Heiko Schaefer
44e915d3e0 Refactor: move OpenPGP card data structures (and parsing) into the module card_data 2021-08-21 15:59:31 +02:00
Heiko Schaefer
7a7db8a131 Rename get_cards->into_cardapps;
Fix get_card_app() [doesn't need &mut]
2021-08-20 22:19:39 +02:00
Heiko Schaefer
c872e46e80 Refactor: move accessor fn for "Application Related Data" into the struct ApplicationRelatedData. 2021-08-20 22:19:39 +02:00
Heiko Schaefer
d62f73e84c Add panic message. 2021-08-20 13:25:58 +02:00
Heiko Schaefer
191c6221b4 Print human readable card name. 2021-08-20 13:25:58 +02:00
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
73cb298361 Adjust crate name to be in the same "namespace" as the other openpgp-card-* crates. 2021-08-19 17:39:24 +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
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
b5ebc6b43c Print card name from config in test output 2021-08-17 14:25:57 +02:00
Heiko Schaefer
413e464cff Remove ciphertexts from the test data directory (ciphertext is now computed on the fly in import tests) 2021-08-15 17:16:15 +02:00
Heiko Schaefer
404d6dce3f Configure private-key-data for import tests in the toml configuration 2021-08-15 17:12:50 +02:00
Heiko Schaefer
5237c1af85 Make the config.keygen optional in the configuration file 2021-08-13 21:28:10 +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
f1add02672 Lint fix 2021-08-13 20:02:53 +02:00
Heiko Schaefer
a0370c5c53 WIP: more testing in the context of on-card key generation.
In particular, add a decryption test.
2021-08-13 20:02:53 +02:00
Heiko Schaefer
6904551c7d Set key flags while generating a Cert from card information. 2021-08-13 20:02:53 +02:00
Heiko Schaefer
ca5dd61001 Assemble information from the card into a Cert.
Still a WIP (this code serves in part to explore handling of Certs for cards).
2021-08-13 20:02:53 +02:00
Heiko Schaefer
27b6d686d9 Refactor card-functionality crate, tentatively breaking tests into groups. 2021-08-13 20:02:53 +02:00
Heiko Schaefer
3edadb8607 Add a "test" fn that prints algorithm information for cards. 2021-08-13 20:02:53 +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
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
d5b1b2daa3 Adjust to new ScdClient API, socket is not needed anymore. 2021-08-03 17:46:55 +02:00
Heiko Schaefer
083db2a8be Adjust to changed ScdClient API 2021-08-03 15:32:48 +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
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
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
97d4880118 Signing 2021-07-18 12:00:00 +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
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