From 21a37d94d31a518e8940b1a8f0d0a9aa5580ae1d Mon Sep 17 00:00:00 2001
From: importbot <releng@rockylinux.org>
Date: Fri, 27 Sep 2024 21:58:49 +0000
Subject: [PATCH] import clevis-21-1.el10

---
 .clevis.metadata                              |  2 +-
 ...neous-sast-fixes-clevis-luks-udisk-2.patch | 56 -------------------
 SPECS/clevis.spec                             | 26 +++++++--
 3 files changed, 23 insertions(+), 61 deletions(-)
 delete mode 100644 SOURCES/0001-Include-miscellaneous-sast-fixes-clevis-luks-udisk-2.patch

diff --git a/.clevis.metadata b/.clevis.metadata
index d353097..4797be4 100644
--- a/.clevis.metadata
+++ b/.clevis.metadata
@@ -1 +1 @@
-e4c280b5b6cc8876d2e2e4d6ea864168be44c0cf0ad2bc2d2e065b896e4fab1e  SOURCES/clevis-20.tar.xz
+a0388a544c77139dc751cdbf66bdd38fc29c43f9e81a1cdfd119c84109ffca3f  SOURCES/clevis-21.tar.xz
diff --git a/SOURCES/0001-Include-miscellaneous-sast-fixes-clevis-luks-udisk-2.patch b/SOURCES/0001-Include-miscellaneous-sast-fixes-clevis-luks-udisk-2.patch
deleted file mode 100644
index 263166d..0000000
--- a/SOURCES/0001-Include-miscellaneous-sast-fixes-clevis-luks-udisk-2.patch
+++ /dev/null
@@ -1,56 +0,0 @@
---- clevis-20.old/src/luks/udisks2/clevis-luks-udisks2.c	2024-03-08 09:35:37.000000000 +0100
-+++ clevis-20/src/luks/udisks2/clevis-luks-udisks2.c	2024-05-21 10:04:15.301469592 +0200
-@@ -264,8 +264,10 @@
- 
- error:
-     g_list_free_full(ctx.lst, g_free);
--    g_main_loop_unref(ctx.loop);
--    g_object_unref(ctx.clt);
-+    if (ctx.loop) 
-+        g_main_loop_unref(ctx.loop);
-+    if (ctx.clt) 
-+        g_object_unref(ctx.clt);
-     close(sock);
-     return exit_status;
- }
-@@ -299,12 +301,12 @@
-     safeclose(&pair[0]);
- }
- 
--static ssize_t
--recover_key(const pkt_t *jwe, char *out, size_t max, uid_t uid, gid_t gid)
-+static uint32_t
-+recover_key(const pkt_t *jwe, char *out, int32_t max, uid_t uid, gid_t gid)
- {
-     int push[2] = { -1, -1 };
-     int pull[2] = { -1, -1 };
--    ssize_t bytes = 0;
-+    int32_t bytes = 0;
-     pid_t chld = 0;
- 
-     if (pipe(push) != 0)
-@@ -379,12 +381,18 @@
-     }
- 
-     bytes = 0;
--    for (ssize_t block = 1; block > 0; bytes += block) {
--        block = read(pull[PIPE_RD], &out[bytes], max - bytes);
--        if (block < 0) {
--            kill(chld, SIGTERM);
--            goto error;
--        }
-+    ssize_t block = 0;
-+    while (max > 0 && max > bytes) {
-+       do {
-+           block = read(pull[PIPE_RD], &out[bytes], max - bytes);
-+       } while (block < 0 && errno == EINTR);
-+       if (block < 0 || block < INT32_MIN || block > INT32_MAX) {
-+           kill(chld, SIGTERM);
-+           goto error;
-+       }
-+       if (block == 0)
-+           break;
-+       bytes += block;
-     }
- 
-     safeclose(&pull[PIPE_RD]);
diff --git a/SPECS/clevis.spec b/SPECS/clevis.spec
index 54a43dd..72a049c 100644
--- a/SPECS/clevis.spec
+++ b/SPECS/clevis.spec
@@ -1,15 +1,15 @@
 ## START: Set by rpmautospec
-## (rpmautospec version 0.6.3)
+## (rpmautospec version 0.7.2)
 ## RPMAUTOSPEC: autorelease, autochangelog
 %define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
-    release_number = 4;
+    release_number = 1;
     base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
     print(release_number + base_release_number - 1);
 }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
 ## END: Set by rpmautospec
 
 Name:           clevis
-Version:        20
+Version:        21
 Release:        %autorelease
 Summary:        Automated decryption framework
 
@@ -17,7 +17,6 @@ License:        GPL-3.0-or-later
 URL:            https://github.com/latchset/%{name}
 Source0:        https://github.com/latchset/%{name}/releases/download/v%{version}/%{name}-%{version}.tar.xz
 Source1:        clevis.sysusers
-Patch1:         0001-Include-miscellaneous-sast-fixes-clevis-luks-udisk-2.patch
 
 BuildRequires:  git-core
 BuildRequires:  gcc
@@ -45,6 +44,8 @@ BuildRequires:  openssl
 BuildRequires:  diffutils
 BuildRequires:  cryptsetup
 BuildRequires:  jq
+BuildRequires:  pcsc-lite
+BuildRequires:  opensc
 
 Requires:       tpm2-tools >= 4.0.0
 Requires:       coreutils
@@ -54,6 +55,8 @@ Requires:       jq
 Requires(pre):  shadow-utils
 Requires(post): systemd
 Requires:       clevis-pin-tpm2
+Requires:       pcsc-lite
+Requires:       opensc
 
 %description
 Clevis is a framework for automated decryption. It allows you to encrypt
@@ -144,15 +147,20 @@ exit 0
 %{_bindir}/%{name}-decrypt-tpm2
 %{_bindir}/%{name}-decrypt-sss
 %{_bindir}/%{name}-decrypt-null
+%{_bindir}/%{name}-decrypt-pkcs11
 %{_bindir}/%{name}-decrypt
 %{_bindir}/%{name}-encrypt-tang
 %{_bindir}/%{name}-encrypt-tpm2
 %{_bindir}/%{name}-encrypt-sss
 %{_bindir}/%{name}-encrypt-null
+%{_bindir}/%{name}-encrypt-pkcs11
+%{_bindir}/%{name}-pkcs11-afunix-socket-unlock
+%{_bindir}/%{name}-pkcs11-common
 %{_bindir}/%{name}
 %{_mandir}/man1/%{name}-encrypt-tang.1*
 %{_mandir}/man1/%{name}-encrypt-tpm2.1*
 %{_mandir}/man1/%{name}-encrypt-sss.1*
+%{_mandir}/man1/%{name}-encrypt-pkcs11.1*
 %{_mandir}/man1/%{name}-decrypt.1*
 %{_mandir}/man1/%{name}.1*
 %{_sysusersdir}/clevis.conf
@@ -180,8 +188,12 @@ exit 0
 %files systemd
 %{_libexecdir}/%{name}-luks-askpass
 %{_libexecdir}/%{name}-luks-unlocker
+%{_libexecdir}/%{name}-luks-pkcs11-askpass
+%{_libexecdir}/%{name}-luks-pkcs11-askpin
 %{_unitdir}/%{name}-luks-askpass.path
 %{_unitdir}/%{name}-luks-askpass.service
+%{_unitdir}/%{name}-luks-pkcs11-askpass.service
+%{_unitdir}/%{name}-luks-pkcs11-askpass.socket
 
 %files dracut
 %{_prefix}/lib/dracut/modules.d/60%{name}
@@ -189,6 +201,9 @@ exit 0
 %{_prefix}/lib/dracut/modules.d/60%{name}-pin-sss/module-setup.sh
 %{_prefix}/lib/dracut/modules.d/60%{name}-pin-tang/module-setup.sh
 %{_prefix}/lib/dracut/modules.d/60%{name}-pin-tpm2/module-setup.sh
+%{_prefix}/lib/dracut/modules.d/60%{name}-pin-pkcs11/module-setup.sh
+%{_prefix}/lib/dracut/modules.d/60%{name}-pin-pkcs11/%{name}-pkcs11-prehook.sh
+%{_prefix}/lib/dracut/modules.d/60%{name}-pin-pkcs11/%{name}-pkcs11-hook.sh
 
 %files udisks2
 %{_sysconfdir}/xdg/autostart/%{name}-luks-udisks2.desktop
@@ -199,6 +214,9 @@ systemctl preset %{name}-luks-askpass.path >/dev/null 2>&1 || :
 
 %changelog
 ## START: Generated by rpmautospec
+* Thu Sep 26 2024 Sergio Arroutbi <sarroutb@redhat.com> - 21-1
+- Rebase to clevis-21 upstream version
+
 * Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 20-4
 - Bump release for June 2024 mass rebuild
 
-- 
GitLab