From b6b735edab036e4992872ef3d44b357fb9281ca8 Mon Sep 17 00:00:00 2001
From: NIIBE Yutaka <gniibe@fsij.org>
Date: Mon, 15 Nov 2021 11:40:41 +0900
Subject: [PATCH] scd:openpgp: Support longer data for INTERNAL_AUTHENTICATE.

* scd/app-openpgp.c (do_auth): Use extended Lc, when supported.

--

GnuPG-bug-id: 5682
Co-authored-by: Klas Lindfors
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
---
 scd/app-openpgp.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c
index 2090ef820..2b8e780ab 100644
--- a/scd/app-openpgp.c
+++ b/scd/app-openpgp.c
@@ -4738,6 +4738,14 @@ do_auth (app_t app, ctrl_t ctrl, const char *keyidstr,
           exmode = 1;    /* Use extended length.  */
           le_value = app->app_local->keyattr[2].rsa.n_bits / 8;
         }
+      else if (indatalen > 255)
+        {
+          if (!app->app_local->cardcap.ext_lc_le)
+            return gpg_error (GPG_ERR_TOO_LARGE);
+
+          exmode = 1;
+          le_value = 0;
+        }
       else
         {
           exmode = 0;