From 7068417138b5df513f8c9d383ecaf93a2860af98 Mon Sep 17 00:00:00 2001 From: Arthur Gautier Date: Tue, 6 Feb 2024 09:30:37 -0800 Subject: [PATCH] rustcrypto upcoming breaking changes --- .github/workflows/ci.yml | 8 +- Cargo.lock | 220 +++++++++++++++++++++++++-------------- Cargo.toml | 41 +++++--- src/certificate.rs | 54 +++++++--- src/transaction.rs | 2 +- 5 files changed, 213 insertions(+), 112 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6842eca..3b74cff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,13 +36,13 @@ jobs: toolchain: stable deps: true - platform: ubuntu-latest - toolchain: 1.74.0 # MSRV + toolchain: 1.75.0 # MSRV deps: sudo apt-get install libpcsclite-dev - platform: windows-latest - toolchain: 1.74.0 # MSRV + toolchain: 1.75.0 # MSRV deps: true - platform: macos-latest - toolchain: 1.74.0 # MSRV + toolchain: 1.75.0 # MSRV deps: true runs-on: ${{ matrix.platform }} steps: @@ -82,7 +82,7 @@ jobs: - uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: 1.74.0 # MSRV + toolchain: 1.75.0 # MSRV components: clippy override: true - run: sudo apt-get install libpcsclite-dev diff --git a/Cargo.lock b/Cargo.lock index f1d542e..2684d0e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -59,6 +59,15 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "async-signature" +version = "0.6.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c897aed69d0c15f782c3ae93cfc51c97cac8a45c28585f26a31255b1f03312ed" +dependencies = [ + "signature", +] + [[package]] name = "autocfg" version = "1.1.0" @@ -98,6 +107,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.11.0-pre.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ded684142010808eb980d9974ef794da2bcf97d13396143b1515e9f0fb4a10e" +dependencies = [ + "crypto-common 0.2.0-pre.5", +] + [[package]] name = "byteorder" version = "1.5.0" @@ -116,7 +134,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "crypto-common", + "crypto-common 0.1.6", "inout", ] @@ -168,9 +186,8 @@ checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "const-oid" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" +version = "0.10.0-pre.2" +source = "git+https://github.com/RustCrypto/formats.git#d1cac632a27a2dff0fc0a5b32debc05cd2732d3c" [[package]] name = "cpufeatures" @@ -183,11 +200,12 @@ dependencies = [ [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.6.0-pre.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1943d7beadd9ce2b25f3bae73b9e9336fccc1edf38bdec1ed58d3aa183989e11" dependencies = [ - "generic-array", + "hybrid-array", + "num-traits", "rand_core", "subtle", "zeroize", @@ -204,10 +222,20 @@ dependencies = [ ] [[package]] -name = "der" -version = "0.7.8" +name = "crypto-common" +version = "0.2.0-pre.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +checksum = "b7aa2ec04f5120b830272a481e8d9d8ba4dda140d2cda59b0f1110d5eb93c38e" +dependencies = [ + "getrandom", + "hybrid-array", + "rand_core", +] + +[[package]] +name = "der" +version = "0.8.0-pre.0" +source = "git+https://github.com/RustCrypto/formats.git#d1cac632a27a2dff0fc0a5b32debc05cd2732d3c" dependencies = [ "const-oid", "der_derive", @@ -218,9 +246,8 @@ dependencies = [ [[package]] name = "der_derive" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fe87ce4529967e0ba1dcf8450bab64d97dfd5010a6256187ffe2e43e6f0e049" +version = "0.8.0-pre.0" +source = "git+https://github.com/RustCrypto/formats.git#d1cac632a27a2dff0fc0a5b32debc05cd2732d3c" dependencies = [ "proc-macro2", "quote", @@ -242,20 +269,30 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", + "block-buffer 0.10.4", + "crypto-common 0.1.6", + "subtle", +] + +[[package]] +name = "digest" +version = "0.11.0-pre.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "065d93ead7c220b85d5b4be4795d8398eac4ff68b5ee63895de0a3c1fb6edf25" +dependencies = [ + "block-buffer 0.11.0-pre.5", "const-oid", - "crypto-common", + "crypto-common 0.2.0-pre.5", "subtle", ] [[package]] name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +version = "0.17.0-pre.5" +source = "git+https://github.com/RustCrypto/signatures.git#fae9707c84d6b6e35a9187c397bb21a8433763a7" dependencies = [ "der", - "digest", + "digest 0.11.0-pre.8", "elliptic-curve", "rfc6979", "signature", @@ -264,17 +301,17 @@ dependencies = [ [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.0-pre.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "4a1775af172997a40c14854c3a9fde9e03e5772084b334b6a0bb18bf7f93ac16" dependencies = [ "base16ct", "crypto-bigint", - "digest", + "digest 0.11.0-pre.8", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pem-rfc7468", "pkcs8", "rand_core", @@ -318,9 +355,9 @@ dependencies = [ [[package]] name = "flagset" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a7e408202050813e6f1d9addadcaafef3dca7530c7ddfb005d4081cce6779" +checksum = "cdeb3aa5e95cf9aabc17f060cfa0ced7b83f042390760ca53bf09df9968acaa1" [[package]] name = "generic-array" @@ -330,7 +367,6 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", - "zeroize", ] [[package]] @@ -369,11 +405,11 @@ checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hkdf" -version = "0.12.3" +version = "0.13.0-pre.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +checksum = "fd5d615ab5c462f96c309b3a00b19f373025a4981312f717f9df5bbd0201530c" dependencies = [ - "hmac", + "hmac 0.13.0-pre.3", ] [[package]] @@ -382,7 +418,16 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", +] + +[[package]] +name = "hmac" +version = "0.13.0-pre.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffd790a0795ee332ed3e8959e5b177beb70d7112eb7d345428ec17427897d5ce" +dependencies = [ + "digest 0.11.0-pre.8", ] [[package]] @@ -391,6 +436,16 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +[[package]] +name = "hybrid-array" +version = "0.2.0-rc.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53668f5da5a41d9eaf4bf7064be46d1ebe6a4e1ceed817f387587b18f2b51047" +dependencies = [ + "typenum", + "zeroize", +] + [[package]] name = "inout" version = "0.1.3" @@ -523,36 +578,34 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "p256" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +version = "0.14.0-pre.0" +source = "git+https://github.com/RustCrypto/elliptic-curves.git#5d1c252c2defb5808f55329f3e2955ca72d7f8b5" dependencies = [ "ecdsa", "elliptic-curve", "primeorder", - "sha2", + "sha2 0.11.0-pre.3", ] [[package]] name = "p384" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" +version = "0.14.0-pre" +source = "git+https://github.com/RustCrypto/elliptic-curves.git#5d1c252c2defb5808f55329f3e2955ca72d7f8b5" dependencies = [ "ecdsa", "elliptic-curve", "primeorder", - "sha2", + "sha2 0.11.0-pre.3", ] [[package]] name = "pbkdf2" -version = "0.12.2" +version = "0.13.0-pre.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +checksum = "e4cf4eb113be91873131bc3c309666600c9b7b68919dd90ccaa20a1b37b84d26" dependencies = [ - "digest", - "hmac", + "digest 0.11.0-pre.8", + "hmac 0.13.0-pre.3", ] [[package]] @@ -576,18 +629,17 @@ dependencies = [ [[package]] name = "pem-rfc7468" -version = "0.7.0" +version = "1.0.0-pre.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +checksum = "76a65e1c27d1680f8805b3f8c9949f08d6aa5d6cbd088c9896e64a53821dc27d" dependencies = [ "base64ct", ] [[package]] name = "pkcs1" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +version = "0.8.0-pre.0" +source = "git+https://github.com/RustCrypto/formats.git#d1cac632a27a2dff0fc0a5b32debc05cd2732d3c" dependencies = [ "der", "pkcs8", @@ -596,9 +648,8 @@ dependencies = [ [[package]] name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +version = "0.11.0-pre.0" +source = "git+https://github.com/RustCrypto/formats.git#d1cac632a27a2dff0fc0a5b32debc05cd2732d3c" dependencies = [ "der", "spki", @@ -618,9 +669,8 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "primeorder" -version = "0.13.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +version = "0.14.0-pre.0" +source = "git+https://github.com/RustCrypto/elliptic-curves.git#5d1c252c2defb5808f55329f3e2955ca72d7f8b5" dependencies = [ "elliptic-curve", ] @@ -704,29 +754,28 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +version = "0.5.0-pre.3" +source = "git+https://github.com/RustCrypto/signatures.git#fae9707c84d6b6e35a9187c397bb21a8433763a7" dependencies = [ - "hmac", + "hmac 0.13.0-pre.3", "subtle", ] [[package]] name = "rsa" -version = "0.9.6" +version = "0.10.0-pre.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" +checksum = "43e0089f12e510517c97e1adc17d0f8374efbabdd021dfb7645d6619f85633e9" dependencies = [ "const-oid", - "digest", + "digest 0.11.0-pre.8", "num-bigint-dig", "num-integer", "num-traits", "pkcs1", "pkcs8", "rand_core", - "sha2", + "sha2 0.11.0-pre.3", "signature", "spki", "subtle", @@ -748,13 +797,12 @@ dependencies = [ [[package]] name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +version = "0.8.0-pre.1" +source = "git+https://github.com/RustCrypto/formats.git#d1cac632a27a2dff0fc0a5b32debc05cd2732d3c" dependencies = [ "base16ct", "der", - "generic-array", + "hybrid-array", "pkcs8", "subtle", "zeroize", @@ -791,13 +839,13 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.6" +version = "0.11.0-pre.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +checksum = "3885de8cb916f223718c1ccd47a840b91f806333e76002dc5cb3862154b4fed3" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.11.0-pre.8", ] [[package]] @@ -808,16 +856,27 @@ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.11.0-pre.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f33549bf3064b62478926aa89cbfc7c109aab66ae8f0d5d2ef839e482cc30d6" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.11.0-pre.8", ] [[package]] name = "signature" -version = "2.2.0" +version = "2.3.0-pre.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "1700c22ba9ce32c7b0a1495068a906c3552e7db386af7cf865162e0dea498523" dependencies = [ - "digest", + "digest 0.11.0-pre.8", "rand_core", ] @@ -835,9 +894,8 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +version = "0.8.0-pre.0" +source = "git+https://github.com/RustCrypto/formats.git#d1cac632a27a2dff0fc0a5b32debc05cd2732d3c" dependencies = [ "base64ct", "der", @@ -1034,10 +1092,10 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "x509-cert" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1301e935010a701ae5f8655edc0ad17c44bad3ac5ce8c39185f75453b720ae94" +version = "0.3.0-pre" +source = "git+https://github.com/RustCrypto/formats.git#d1cac632a27a2dff0fc0a5b32debc05cd2732d3c" dependencies = [ + "async-signature", "const-oid", "der", "sha1", @@ -1056,7 +1114,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "env_logger", - "hmac", + "hmac 0.12.1", "log", "nom", "num-bigint-dig", @@ -1071,7 +1129,7 @@ dependencies = [ "rsa", "secrecy", "sha1", - "sha2", + "sha2 0.11.0-pre.3", "signature", "subtle", "uuid", @@ -1088,7 +1146,7 @@ dependencies = [ "env_logger", "log", "once_cell", - "sha2", + "sha2 0.10.8", "termcolor", "x509-cert", "yubikey", diff --git a/Cargo.toml b/Cargo.toml index ec5d52b..bd58b33 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,18 +14,33 @@ readme = "README.md" categories = ["api-bindings", "authentication", "cryptography", "hardware-support"] keywords = ["ecdsa", "encryption", "rsa", "piv", "signature"] edition = "2021" -rust-version = "1.65" +rust-version = "1.75" + +[patch.crates-io] +const-oid = { git = "https://github.com/RustCrypto/formats.git" } +der_derive = { git = "https://github.com/RustCrypto/formats.git" } +der = { git = "https://github.com/RustCrypto/formats.git" } +pkcs1 = { git = "https://github.com/RustCrypto/formats.git" } +pkcs8 = { git = "https://github.com/RustCrypto/formats.git" } +sec1 = { git = "https://github.com/RustCrypto/formats.git" } +spki = { git = "https://github.com/RustCrypto/formats.git" } +x509-cert = { git = "https://github.com/RustCrypto/formats.git" } + +ecdsa = { git = "https://github.com/RustCrypto/signatures.git" } + +p256 = { git = "https://github.com/RustCrypto/elliptic-curves.git" } +p384 = { git = "https://github.com/RustCrypto/elliptic-curves.git" } [workspace] members = [".", "cli"] [workspace.dependencies] -x509-cert = { version = "0.2.5", features = [ "builder", "hazmat" ] } +x509-cert = { version = "=0.3.0-pre", features = [ "builder", "hazmat" ] } [dependencies] -der = "0.7.1" +der = "=0.8.0-pre.0" des = "0.8" -elliptic-curve = "0.13" +elliptic-curve = "=0.14.0-pre.5" hex = { package = "base16ct", version = "0.2", features = ["alloc"] } hmac = "0.12" log = "0.4" @@ -33,17 +48,17 @@ nom = "7" num-bigint-dig = { version = "0.8", features = ["rand"] } num-traits = "0.2" num-integer = "0.1" -ecdsa = { version = "0.16.7", features = ["digest", "pem"] } -p256 = "0.13" -p384 = "0.13" -pbkdf2 = { version = "0.12", default-features = false, features = ["hmac"] } +ecdsa = { version = "0.17.0-pre.4", features = ["digest", "pem"] } +p256 = "=0.14.0-pre.0" +p384 = "=0.14.0-pre" +pbkdf2 = { version = "=0.13.0-pre.0", default-features = false, features = ["hmac"] } pcsc = "2.3.1" rand_core = { version = "0.6", features = ["std"] } -rsa = { version = "0.9.6", features = ["sha2"] } +rsa = { version = "=0.10.0-pre.1", features = ["sha2"] } secrecy = "0.8" -sha1 = { version = "0.10", features = ["oid"] } -sha2 = { version = "0.10", features = ["oid"] } -signature = "2" +sha1 = { version = "=0.11.0-pre.3", features = ["oid"] } +sha2 = { version = "=0.11.0-pre.3", features = ["oid"] } +signature = "=2.3.0-pre.3" subtle = "2" uuid = { version = "1.2", features = ["v4"] } x509-cert.workspace = true @@ -52,7 +67,7 @@ zeroize = "1" [dev-dependencies] env_logger = "0.10" once_cell = "1" -signature = "2" +signature = "=2.3.0-pre.3" [features] untested = [] diff --git a/src/certificate.rs b/src/certificate.rs index 6cada81..0c5f488 100644 --- a/src/certificate.rs +++ b/src/certificate.rs @@ -41,8 +41,10 @@ use crate::{ }; use log::error; use x509_cert::{ - builder::{Builder, CertificateBuilder, Profile}, + builder::{self, profile::Profile, Builder, CertificateBuilder}, + certificate::TbsCertificate, der::{self, referenced::OwnedToRef, Decode, Encode}, + ext::Extension, name::Name, serial_number::SerialNumber, spki::{SubjectPublicKeyInfoOwned, SubjectPublicKeyInfoRef}, @@ -85,6 +87,37 @@ impl From for u8 { } } +/// Profile generating Self signed certificates. +pub struct SelfSigned { + subject: Name, +} + +impl SelfSigned { + /// Creates a new profile with the provided subject + pub fn new(subject: Name) -> Self { + Self { subject } + } +} + +impl Profile for SelfSigned { + fn get_issuer(&self, _subject: &Name) -> Name { + self.subject.clone() + } + + fn get_subject(&self) -> Name { + self.subject.clone() + } + + fn build_extensions( + &self, + _spk: SubjectPublicKeyInfoRef<'_>, + _issuer_spk: SubjectPublicKeyInfoRef<'_>, + _tbs: &TbsCertificate, + ) -> builder::Result> { + Ok(vec![]) + } +} + /// Certificates #[derive(Clone, Debug)] pub struct Certificate { @@ -109,23 +142,18 @@ impl Certificate { extensions: F, ) -> Result where - F: FnOnce(&mut CertificateBuilder<'_, yubikey_signer::Signer<'_, KT>>) -> der::Result<()>, + F: FnOnce(&mut CertificateBuilder) -> der::Result<()>, { - let signer = yubikey_signer::Signer::new(yubikey, key, subject_pki.owned_to_ref())?; - let mut builder = CertificateBuilder::new( - Profile::Manual { issuer: None }, - serial, - validity, - subject, - subject_pki, - &signer, - ) - .map_err(|_| Error::KeyError)?; + let profile = SelfSigned::new(subject); + let signer = + yubikey_signer::Signer::<'_, KT>::new(yubikey, key, subject_pki.owned_to_ref())?; + let mut builder = CertificateBuilder::new(profile, serial, validity, subject_pki) + .map_err(|_| Error::KeyError)?; // Add custom extensions extensions(&mut builder)?; - let cert = builder.build().map_err(|_| Error::KeyError)?; + let cert = builder.build(&signer).map_err(|_| Error::KeyError)?; let cert = Self { cert }; cert.write(yubikey, key, CertInfo::Uncompressed)?; diff --git a/src/transaction.rs b/src/transaction.rs index 65140ad..ba804c6 100644 --- a/src/transaction.rs +++ b/src/transaction.rs @@ -186,7 +186,7 @@ impl<'tx> Transaction<'tx> { if !pin.is_empty() { let mut data = Zeroizing::new([0xff; CB_PIN_MAX]); data[0..pin.len()].copy_from_slice(pin); - query.data(data.as_ref()); + query.data(*data); } let response = query.transmit(self, 261)?;