From 365670041fa013a815d7bf09532c492ea4923a50 Mon Sep 17 00:00:00 2001 From: Heiko Schaefer Date: Sat, 8 Apr 2023 13:49:01 +0200 Subject: [PATCH] openpgp-card-sequoia: fix padding for Curve 25519 private key material. Importing 25519 keys with leading zero bytes led to failures on at least Gnuk and Nitrokey's opgpcard-rs implementation. Reported by Wiktor Kwapisiewicz, also see https://codeberg.org/wiktor/broken-nitro --- openpgp-card-sequoia/src/privkey.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openpgp-card-sequoia/src/privkey.rs b/openpgp-card-sequoia/src/privkey.rs index 73a6d68..b4e8a73 100644 --- a/openpgp-card-sequoia/src/privkey.rs +++ b/openpgp-card-sequoia/src/privkey.rs @@ -234,11 +234,11 @@ impl EccKey for SqEccKey { } fn private(&self) -> Vec { - // FIXME: padding for 25519? match self.curve { Curve::NistP256 => self.private.value_padded(0x20).to_vec(), Curve::NistP384 => self.private.value_padded(0x30).to_vec(), Curve::NistP521 => self.private.value_padded(0x42).to_vec(), + Curve::Cv25519 | Curve::Ed25519 => self.private.value_padded(0x20).to_vec(), _ => self.private.value().to_vec(), } }