yubikey 0.4

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