diff --git a/Cargo.lock b/Cargo.lock index edf3a7c..9d6be5a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -28,7 +28,7 @@ dependencies = [ "cookie-factory", "hkdf", "nom 7.0.0", - "rand 0.8.4", + "rand", "secrecy 0.8.0", "sha2", "tempfile", @@ -63,12 +63,12 @@ dependencies = [ "man", "p256", "pcsc", - "rand 0.7.3", + "rand", "sha2", "which", "x509", "x509-parser", - "yubikey-piv", + "yubikey", ] [[package]] @@ -127,17 +127,6 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" -[[package]] -name = "bitvec" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98fcd36dda4e17b7d7abc64cb549bf0201f4ab71e00700c798ca7e62ed3761fa" -dependencies = [ - "funty", - "radium 0.3.0", - "wyz", -] - [[package]] name = "bitvec" version = "0.19.5" @@ -145,7 +134,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8942c8d352ae1838c9dda0b0ca2ab657696ef2232a20147cf1b30ae1a9cb4321" dependencies = [ "funty", - "radium 0.5.3", + "radium", "tap", "wyz", ] @@ -178,7 +167,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01b72a433d0cf2aef113ba70f62634c56fddb0f244e6377185c56a7cadbd8f91" dependencies = [ "cfg-if", - "cipher 0.3.0", + "cipher", "cpufeatures", "zeroize", ] @@ -191,7 +180,7 @@ checksum = "3b84ed6d1d5f7aa9bdde921a5090e0ca4d934d250ea3b402a5fab3a994e28a2a" dependencies = [ "aead", "chacha20", - "cipher 0.3.0", + "cipher", "poly1305", "zeroize", ] @@ -209,15 +198,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "cipher" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" -dependencies = [ - "generic-array", -] - [[package]] name = "cipher" version = "0.3.0" @@ -244,9 +224,9 @@ dependencies = [ [[package]] name = "const-oid" -version = "0.4.5" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f6b64db6932c7e49332728e3a6bd82c6b7e16016607d20923b537c3bc4c0d5f" +checksum = "9d6f2aa4d0537bcc1c74df8755072bd31c1ef1a3a1b85a68e8404a8c353b7b8b" [[package]] name = "cookie-factory" @@ -273,13 +253,15 @@ dependencies = [ ] [[package]] -name = "crypto-mac" -version = "0.10.1" +name = "crypto-bigint" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a" +checksum = "f83bd3bb4314701c568e340cd8cf78c975aa0ca79e03d3f6d1677d5b0c9c0c03" dependencies = [ "generic-array", + "rand_core", "subtle", + "zeroize", ] [[package]] @@ -300,9 +282,9 @@ checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" [[package]] name = "der" -version = "0.1.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51f59c66c30bb7445c8320a5f9233e437e3572368099f25532a59054328899b4" +checksum = "28e98c534e9c8a0483aa01d6f6913bc063de254311bd267c9cf535e9b70e15b2" dependencies = [ "const-oid", ] @@ -314,7 +296,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4cccf60bb98c0fca115a581f894aed0e43fa55bf289fdac5599bec440bb4fd6" dependencies = [ "nom 6.2.1", - "num-bigint 0.4.2", + "num-bigint", "num-traits", "syn", ] @@ -327,19 +309,19 @@ checksum = "2d7ededb7525bb4114bc209685ce7894edc2965f4914312a1ea578a645a237f0" dependencies = [ "der-oid-macro", "nom 6.2.1", - "num-bigint 0.4.2", + "num-bigint", "num-traits", "rusticata-macros", ] [[package]] name = "des" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b24e7c748888aa2fa8bce21d8c64a52efc810663285315ac7476f7197a982fae" +checksum = "ac41dd49fb554432020d52c875fc290e110113f864c6b1b525cd62c7e7747a5d" dependencies = [ "byteorder", - "cipher 0.2.5", + "cipher", "opaque-debug", ] @@ -365,12 +347,13 @@ dependencies = [ [[package]] name = "ecdsa" -version = "0.10.2" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fbdb4ff710acb4db8ca29f93b897529ea6d6a45626d5183b47e012aa6ae7e4" +checksum = "43ee23aa5b4f68c7a092b5c3beb25f50c406adc75e2363634f242f28ab255372" dependencies = [ + "der", "elliptic-curve", - "hmac 0.10.1", + "hmac", "signature", ] @@ -382,18 +365,16 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "elliptic-curve" -version = "0.8.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2db227e61a43a34915680bdda462ec0e212095518020a88a1f91acd16092c39" +checksum = "beca177dcb8eb540133e7680baff45e7cc4d93bf22002676cec549f82343721b" dependencies = [ - "bitvec 0.18.5", - "digest", + "crypto-bigint", "ff", - "funty", "generic-array", "group", "pkcs8", - "rand_core 0.5.1", + "rand_core", "subtle", "zeroize", ] @@ -419,12 +400,11 @@ dependencies = [ [[package]] name = "ff" -version = "0.8.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01646e077d4ebda82b73f1bca002ea1e91561a77df2431a9e79729bcc31950ef" +checksum = "d0f40b2dcd8bc322217a5f6559ae5f9e9d1de202a2ecee2e9eafcbece7562a4f" dependencies = [ - "bitvec 0.18.5", - "rand_core 0.5.1", + "rand_core", "subtle", ] @@ -456,17 +436,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - [[package]] name = "getrandom" version = "0.2.3" @@ -475,17 +444,17 @@ checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" dependencies = [ "cfg-if", "libc", - "wasi 0.10.2+wasi-snapshot-preview1", + "wasi", ] [[package]] name = "group" -version = "0.8.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc11f9f5fbf1943b48ae7c2bf6846e7d827a512d1be4f23af708f5ca5d01dde1" +checksum = "1c363a5301b8f153d80747126a04b3c82073b9fe3130571a9d170cacdeaf7912" dependencies = [ "ff", - "rand_core 0.5.1", + "rand_core", "subtle", ] @@ -531,17 +500,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01706d578d5c281058480e673ae4086a9f4710d8df1ad80a5b03e39ece5f886b" dependencies = [ "digest", - "hmac 0.11.0", -] - -[[package]] -name = "hmac" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" -dependencies = [ - "crypto-mac 0.10.1", - "digest", + "hmac", ] [[package]] @@ -550,7 +509,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ - "crypto-mac 0.11.1", + "crypto-mac", "digest", ] @@ -640,7 +599,7 @@ version = "6.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c5c51b9083a3c620fa67a2a635d1ce7d95b897e957d6b28ff9a5da960a103a6" dependencies = [ - "bitvec 0.19.5", + "bitvec", "funty", "lexical-core", "memchr", @@ -658,17 +617,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "num-bigint" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" -dependencies = [ - "autocfg 1.0.1", - "num-integer", - "num-traits", -] - [[package]] name = "num-bigint" version = "0.4.2" @@ -682,9 +630,9 @@ dependencies = [ [[package]] name = "num-bigint-dig" -version = "0.6.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d51546d704f52ef14b3c962b5776e53d5b862e5790e40a350d366c209bd7f7a" +checksum = "4547ee5541c18742396ae2c895d0717d0f886d8823b8399cdaf7b07d63ad0480" dependencies = [ "autocfg 0.1.7", "byteorder", @@ -693,7 +641,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand 0.7.3", + "rand", "serde", "smallvec", "zeroize", @@ -727,6 +675,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" dependencies = [ "autocfg 1.0.1", + "libm", ] [[package]] @@ -752,9 +701,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "p256" -version = "0.7.3" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adcc06fe90ec8fb2d2ad46746d2cbd639b158d4240364aa832da7e263dbee91" +checksum = "d053368e1bae4c8a672953397bd1bd7183dde1c72b0b7612a15719173148d186" dependencies = [ "ecdsa", "elliptic-curve", @@ -763,20 +712,20 @@ dependencies = [ [[package]] name = "p384" -version = "0.6.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea33960aac2200d19a5c9ab06a11ebd48a37a23144496632c358182e6765d80b" +checksum = "f23bc88c404ccc881c8a1ad62ba5cd7d336a64ecbf46de4874f2ad955f67b157" dependencies = [ "elliptic-curve", ] [[package]] name = "pbkdf2" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf916dd32dd26297907890d99dc2740e33f6bd9073965af4ccff2967962f5508" +checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" dependencies = [ - "crypto-mac 0.10.1", + "crypto-mac", ] [[package]] @@ -811,11 +760,12 @@ dependencies = [ [[package]] name = "pkcs8" -version = "0.3.3" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4839a901843f3942576e65857f0ebf2e190ef7024d3c62a94099ba3f819ad1d" +checksum = "ee3ef9b64d26bad0536099c816c6734379e45bbd5f14798def6809e5cc350447" dependencies = [ "der", + "spki", ] [[package]] @@ -859,31 +809,12 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "radium" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" - [[package]] name = "radium" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8" -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc 0.2.0", -] - [[package]] name = "rand" version = "0.8.4" @@ -891,19 +822,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" dependencies = [ "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.3", - "rand_hc 0.3.1", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", + "rand_chacha", + "rand_core", + "rand_hc", ] [[package]] @@ -913,16 +834,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.3", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", + "rand_core", ] [[package]] @@ -931,16 +843,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.3", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", + "getrandom", ] [[package]] @@ -949,7 +852,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" dependencies = [ - "rand_core 0.6.3", + "rand_core", ] [[package]] @@ -995,9 +898,9 @@ checksum = "e33e4fb37ba46888052c763e4ec2acfedd8f00f62897b630cadb6298b833675e" [[package]] name = "rsa" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3648b669b10afeab18972c105e284a7b953a669b0be3514c27f9b17acab2f9cd" +checksum = "68ef841a26fc5d040ced0417c6c6a64ee851f42489df11cdf0218e545b6f8d28" dependencies = [ "byteorder", "digest", @@ -1007,11 +910,9 @@ dependencies = [ "num-iter", "num-traits", "pem", - "rand 0.7.3", - "sha2", + "rand", "simple_asn1", "subtle", - "thiserror", "zeroize", ] @@ -1088,23 +989,24 @@ dependencies = [ [[package]] name = "signature" -version = "1.2.2" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29f060a7d147e33490ec10da418795238fd7545bba241504d6b31a409f2e6210" +checksum = "c19772be3c4dd2ceaacf03cb41d5885f2a02c4d8804884918e3a258480803335" dependencies = [ "digest", - "rand_core 0.5.1", + "rand_core", ] [[package]] name = "simple_asn1" -version = "0.4.1" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692ca13de57ce0613a363c8c2f1de925adebc81b04c923ac60c5488bb44abe4b" +checksum = "8eb4ea60fb301dc81dfc113df680571045d375ab7345d171c5dc7d7e13107a80" dependencies = [ "chrono", - "num-bigint 0.2.6", + "num-bigint", "num-traits", + "thiserror", ] [[package]] @@ -1119,6 +1021,15 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +[[package]] +name = "spki" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c01a0c15da1b0b0e1494112e7af814a678fec9bd157881b49beac661e9b6f32" +dependencies = [ + "der", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -1177,7 +1088,7 @@ checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" dependencies = [ "cfg-if", "libc", - "rand 0.8.4", + "rand", "redox_syscall", "remove_dir_all", "winapi", @@ -1260,18 +1171,21 @@ dependencies = [ "subtle", ] +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom", +] + [[package]] name = "version_check" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - [[package]] name = "wasi" version = "0.10.2+wasi-snapshot-preview1" @@ -1355,18 +1269,17 @@ dependencies = [ ] [[package]] -name = "yubikey-piv" -version = "0.3.0" +name = "yubikey" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6da1dc49a2423489aca0d54e337d60492ac24f620cec87b75276d419adc83bb0" +checksum = "3e1a034c181d445ebe147cc04a16b40a3815542bc7824c90d286463170ada7eb" dependencies = [ "chrono", "cookie-factory", "der-parser", "des", "elliptic-curve", - "getrandom 0.1.16", - "hmac 0.10.1", + "hmac", "log", "nom 6.2.1", "num-bigint-dig", @@ -1376,12 +1289,14 @@ dependencies = [ "p384", "pbkdf2", "pcsc", + "rand_core", "rsa", "secrecy 0.7.0", "sha-1", "sha2", "subtle", "subtle-encoding", + "uuid", "x509", "x509-parser", "zeroize", diff --git a/Cargo.toml b/Cargo.toml index 8152eca..395e77c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,14 +32,14 @@ env_logger = "0.9" gumdrop = "0.8" hex = "0.4" log = "0.4" -p256 = { version = "0.7", features = ["ecdh"] } +p256 = { version = "0.9", features = ["ecdh"] } pcsc = "2.4" -rand = "0.7" +rand = "0.8" sha2 = "0.9" which = "4.1" x509 = "0.2" x509-parser = "0.9" -yubikey-piv = { version = "0.3", features = ["untested"] } +yubikey = { version = "0.4", features = ["untested"] } [dev-dependencies] flate2 = "1" diff --git a/src/builder.rs b/src/builder.rs index 074e17d..aa694e2 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -1,10 +1,9 @@ use rand::{rngs::OsRng, RngCore}; use x509::RelativeDistinguishedName; -use yubikey_piv::{ +use yubikey::{ certificate::{Certificate, PublicKeyInfo}, - key::{generate as yubikey_generate, AlgorithmId, RetiredSlotId, SlotId}, - policy::{PinPolicy, TouchPolicy}, - Key, YubiKey, + piv::{generate as yubikey_generate, AlgorithmId, RetiredSlotId, SlotId}, + Key, PinPolicy, TouchPolicy, YubiKey, }; use crate::{ diff --git a/src/error.rs b/src/error.rs index 05d0ffb..892a063 100644 --- a/src/error.rs +++ b/src/error.rs @@ -1,6 +1,6 @@ use std::fmt; use std::io; -use yubikey_piv::{key::RetiredSlotId, Serial}; +use yubikey::{piv::RetiredSlotId, Serial}; use crate::util::slot_to_ui; @@ -21,7 +21,7 @@ pub enum Error { SlotIsNotEmpty(RetiredSlotId), TimedOut, UseListForSingleSlot, - YubiKey(yubikey_piv::Error), + YubiKey(yubikey::Error), } impl From for Error { @@ -30,8 +30,8 @@ impl From for Error { } } -impl From for Error { - fn from(e: yubikey_piv::error::Error) -> Self { +impl From for Error { + fn from(e: yubikey::Error) -> Self { Error::YubiKey(e) } } @@ -100,10 +100,10 @@ impl fmt::Debug for Error { writeln!(f, "Use --list to print the recipient for a single slot.")? } Error::YubiKey(e) => match e { - yubikey_piv::error::Error::NotFound => { + yubikey::Error::NotFound => { writeln!(f, "Please insert the YubiKey you want to set up")? } - yubikey_piv::error::Error::WrongPin { tries } => writeln!( + yubikey::Error::WrongPin { tries } => writeln!( f, "Invalid PIN ({} tries remaining before it is blocked)", tries diff --git a/src/key.rs b/src/key.rs index 1da5ee0..b911a56 100644 --- a/src/key.rs +++ b/src/key.rs @@ -15,13 +15,11 @@ use std::io; use std::iter; use std::thread::sleep; use std::time::{Duration, SystemTime}; -use yubikey_piv::{ +use yubikey::{ certificate::{Certificate, PublicKeyInfo}, - key::{decrypt_data, AlgorithmId, RetiredSlotId, SlotId}, - policy::PinPolicy, - readers::Reader, - yubikey::Serial, - MgmKey, Readers, YubiKey, + piv::{decrypt_data, AlgorithmId, RetiredSlotId, SlotId}, + reader::{Context, Reader}, + MgmKey, PinPolicy, Serial, YubiKey, }; use crate::{ @@ -56,11 +54,11 @@ pub(crate) fn filter_connected(reader: &Reader) -> bool { } } -pub(crate) fn wait_for_readers() -> Result { +pub(crate) fn wait_for_readers() -> Result { // Start a 15-second timer waiting for a YubiKey to be inserted (if necessary). let start = SystemTime::now(); loop { - let mut readers = Readers::open()?; + let mut readers = Context::open()?; if readers.iter()?.any(is_connected) { break Ok(readers); } @@ -73,7 +71,7 @@ pub(crate) fn wait_for_readers() -> Result { } pub(crate) fn open(serial: Option) -> Result { - if !Readers::open()?.iter()?.any(is_connected) { + if !Context::open()?.iter()?.any(is_connected) { if let Some(serial) = serial { eprintln!("⏳ Please insert the YubiKey with serial {}.", serial); } else { @@ -157,7 +155,7 @@ pub(crate) fn manage(yubikey: &mut YubiKey) -> Result<(), Error> { .map_err(|_| Error::CustomManagementKey)?; // Migrate to a PIN-protected management key. - let mgm_key = MgmKey::generate()?; + let mgm_key = MgmKey::generate(); eprintln!(); eprintln!("✨ Your YubiKey is using the default management key."); eprintln!("✨ We'll migrate it to a PIN-protected management key."); @@ -247,7 +245,7 @@ impl Stub { ) -> io::Result> { let mut yubikey = match YubiKey::open_by_serial(self.serial) { Ok(yk) => yk, - Err(yubikey_piv::Error::NotFound) => { + Err(yubikey::Error::NotFound) => { if callbacks .message(&format!( "Please insert YubiKey with serial {}", @@ -266,7 +264,7 @@ impl Stub { loop { match YubiKey::open_by_serial(self.serial) { Ok(yubikey) => break yubikey, - Err(yubikey_piv::Error::NotFound) => (), + Err(yubikey::Error::NotFound) => (), Err(_) => { return Ok(Err(identity::Error::Identity { index: self.identity_index, @@ -425,7 +423,7 @@ impl Connection { #[cfg(test)] mod tests { - use yubikey_piv::{key::RetiredSlotId, Serial}; + use yubikey::{piv::RetiredSlotId, Serial}; use super::Stub; diff --git a/src/main.rs b/src/main.rs index 5d21025..cacae6e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,11 +5,11 @@ use std::io::{self, Write}; use age_plugin::run_state_machine; use dialoguer::{Confirm, Input, Select}; use gumdrop::Options; -use yubikey_piv::{ +use yubikey::{ certificate::PublicKeyInfo, - key::{RetiredSlotId, SlotId}, - policy::{PinPolicy, TouchPolicy}, - Key, Readers, Serial, + piv::{RetiredSlotId, SlotId}, + reader::Context, + Key, PinPolicy, Serial, TouchPolicy, }; mod builder; @@ -201,7 +201,7 @@ fn print_multiple( all: bool, printer: impl Fn(key::Stub, p256::Recipient, util::Metadata), ) -> Result<(), Error> { - let mut readers = Readers::open()?; + let mut readers = Context::open()?; let mut printed = 0; for reader in readers.iter()?.filter(key::filter_connected) { @@ -350,7 +350,7 @@ fn main() -> Result<(), Error> { eprintln!("make your choice, or press [Esc] or [q] to quit."); eprintln!(); - if !Readers::open()?.iter()?.any(key::is_connected) { + if !Context::open()?.iter()?.any(key::is_connected) { eprintln!("⏳ Please insert the YubiKey you want to set up."); }; let mut readers = key::wait_for_readers()?; diff --git a/src/util.rs b/src/util.rs index eff29c0..d4c2ded 100644 --- a/src/util.rs +++ b/src/util.rs @@ -1,10 +1,9 @@ use std::fmt; use x509_parser::{certificate::X509Certificate, der_parser::oid::Oid}; -use yubikey_piv::{ - key::{RetiredSlotId, SlotId}, - policy::{PinPolicy, TouchPolicy}, - Serial, YubiKey, +use yubikey::{ + piv::{RetiredSlotId, SlotId}, + PinPolicy, Serial, TouchPolicy, YubiKey, }; use crate::{error::Error, key::Stub, p256::Recipient, BINARY_NAME, USABLE_SLOTS}; @@ -144,7 +143,7 @@ impl Metadata { // We can extract the PIN and touch policies via an attestation. This // is slow, but the user has asked for all compatible keys, so... let (pin_policy, touch_policy) = - yubikey_piv::key::attest(yubikey, SlotId::Retired(slot)) + yubikey::piv::attest(yubikey, SlotId::Retired(slot)) .ok() .and_then(|buf| { x509_parser::parse_x509_certificate(&buf)