File gnupg-agent-fix-for-prefix-0x40-in-the-point-representation.patch of Package gpg2

From fde915af1cf4b9166b68023899d41057baf95958 Mon Sep 17 00:00:00 2001
From: NIIBE Yutaka <gniibe@fsij.org>
Date: Fri, 6 Jun 2025 14:13:05 +0900
Subject: [PATCH] agent: Fix for the prefix 0x40 in the point representation.

* agent/pkdecrypt.c (ECC_CURVE25519_INDEX): New.
(ecc_pgp_kem_decap): Handle the prefix 0x40 for Curve25519.

--

GnuPG-bug-id: 7676
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
---
 agent/pkdecrypt.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/agent/pkdecrypt.c b/agent/pkdecrypt.c
index d712e7f28..99896939b 100644
--- a/agent/pkdecrypt.c
+++ b/agent/pkdecrypt.c
@@ -43,6 +43,9 @@ struct ecc_params
   int scalar_reverse;
 };
 
+/* The first entry must be Curve25519, to handle the prefix of 0x40 in
+   OpenPGP. */
+#define ECC_CURVE25519_INDEX 0
 static const struct ecc_params ecc_table[] =
   {
     {
@@ -484,6 +487,13 @@ ecc_pgp_kem_decap (ctrl_t ctrl, gcry_sexp_t s_skey0,
     }
   *r_ecc = ecc;
 
+  if (ecc == &ecc_table[ECC_CURVE25519_INDEX]
+      && ecc_point_len == ecc->point_len + 1 && *ecc_ct == 0x40)
+    {
+      ecc_ct++;
+      ecc_point_len--;
+    }
+
   if (ecc->point_len != ecc_point_len)
     {
       if (opt.verbose)
-- 
2.30.2

openSUSE Build Service is sponsored by