From c4b733634748a824d34e8b6d73d7d2da21108d15 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Wed, 14 May 2025 14:44:34 +0000 Subject: [PATCH] import UBI libfido2-1.14.0-7.el10 --- .gitignore | 4 +- .libfido2.metadata | 2 - 01-fix-credman-leak.patch | 35 ++ SOURCES/001-skip-sha1-tests.patch | 21 - SPECS/libfido2.spec => libfido2.spec | 154 +++++-- sources | 2 + ...-gpgkeys.asc => yubico-release-gpgkeys.asc | 380 +++++++++++++++++- 7 files changed, 510 insertions(+), 88 deletions(-) delete mode 100644 .libfido2.metadata create mode 100644 01-fix-credman-leak.patch delete mode 100644 SOURCES/001-skip-sha1-tests.patch rename SPECS/libfido2.spec => libfido2.spec (55%) create mode 100644 sources rename SOURCES/yubico-release-gpgkeys.asc => yubico-release-gpgkeys.asc (92%) diff --git a/.gitignore b/.gitignore index 1f993db..f8188aa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -SOURCES/libfido2-1.13.0.tar.gz -SOURCES/libfido2-1.13.0.tar.gz.sig +libfido2-1.14.0.tar.gz +libfido2-1.14.0.tar.gz.sig diff --git a/.libfido2.metadata b/.libfido2.metadata deleted file mode 100644 index 45f1782..0000000 --- a/.libfido2.metadata +++ /dev/null @@ -1,2 +0,0 @@ -f3de6c8076212a660ae069ad9b07fb13b80d96ce SOURCES/libfido2-1.13.0.tar.gz -d0eb754013fec3fc6dfdb27926527c5eb2880fb0 SOURCES/libfido2-1.13.0.tar.gz.sig diff --git a/01-fix-credman-leak.patch b/01-fix-credman-leak.patch new file mode 100644 index 0000000..31b9010 --- /dev/null +++ b/01-fix-credman-leak.patch @@ -0,0 +1,35 @@ +diff --git a/tools/credman.c b/tools/credman.c +index a0a3149d..9f6072f7 100644 +--- a/tools/credman.c ++++ b/tools/credman.c +@@ -119,6 +119,7 @@ print_rk(const fido_credman_rk_t *rk, size_t idx) + char *user_id = NULL; + const char *type; + const char *prot; ++ int r = -1; + + if ((cred = fido_credman_rk(rk, idx)) == NULL) { + warnx("fido_credman_rk"); +@@ -128,7 +129,7 @@ print_rk(const fido_credman_rk_t *rk, size_t idx) + &id) < 0 || base64_encode(fido_cred_user_id_ptr(cred), + fido_cred_user_id_len(cred), &user_id) < 0) { + warnx("output error"); +- return -1; ++ goto out; + } + + type = cose_string(fido_cred_type(cred)); +@@ -137,10 +138,12 @@ print_rk(const fido_credman_rk_t *rk, size_t idx) + printf("%02u: %s %s %s %s %s\n", (unsigned)idx, id, + fido_cred_display_name(cred), user_id, type, prot); + ++ r = 0; ++out: + free(user_id); + free(id); + +- return 0; ++ return r; + } + + int diff --git a/SOURCES/001-skip-sha1-tests.patch b/SOURCES/001-skip-sha1-tests.patch deleted file mode 100644 index 5afd659..0000000 --- a/SOURCES/001-skip-sha1-tests.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -up libfido2-1.13.0/regress/cred.c.xxx libfido2-1.13.0/regress/cred.c ---- libfido2-1.13.0/regress/cred.c.xxx 2023-04-20 10:39:04.083354483 +0200 -+++ libfido2-1.13.0/regress/cred.c 2023-04-20 10:41:26.145545556 +0200 -@@ -2107,7 +2107,7 @@ valid_tpm_rs256_cred(void) - assert(fido_cred_set_uv(c, FIDO_OPT_TRUE) == FIDO_OK); - assert(fido_cred_set_fmt(c, "tpm") == FIDO_OK); - assert(fido_cred_set_attstmt(c, attstmt_tpm_rs256, sizeof(attstmt_tpm_rs256)) == FIDO_OK); -- assert(fido_cred_verify(c) == FIDO_OK); -+ /* assert(fido_cred_verify(c) == FIDO_OK); */ - assert(fido_cred_prot(c) == 0); - assert(fido_cred_pubkey_len(c) == sizeof(pubkey_tpm_rs256)); - assert(memcmp(fido_cred_pubkey_ptr(c), pubkey_tpm_rs256, sizeof(pubkey_tpm_rs256)) == 0); -@@ -2132,7 +2132,7 @@ valid_tpm_es256_cred(void) - assert(fido_cred_set_uv(c, FIDO_OPT_TRUE) == FIDO_OK); - assert(fido_cred_set_fmt(c, "tpm") == FIDO_OK); - assert(fido_cred_set_attstmt(c, attstmt_tpm_es256, sizeof(attstmt_tpm_es256)) == FIDO_OK); -- assert(fido_cred_verify(c) == FIDO_OK); -+ /* assert(fido_cred_verify(c) == FIDO_OK); */ - assert(fido_cred_prot(c) == 0); - assert(fido_cred_pubkey_len(c) == sizeof(pubkey_tpm_es256)); - assert(memcmp(fido_cred_pubkey_ptr(c), pubkey_tpm_es256, sizeof(pubkey_tpm_es256)) == 0); diff --git a/SPECS/libfido2.spec b/libfido2.spec similarity index 55% rename from SPECS/libfido2.spec rename to libfido2.spec index 77f0eaa..88b96cd 100644 --- a/SPECS/libfido2.spec +++ b/libfido2.spec @@ -1,27 +1,25 @@ Name: libfido2 -Version: 1.13.0 -Release: 2%{?dist} +Version: 1.14.0 +Release: 7%{?dist} Summary: FIDO2 library -License: BSD +License: BSD-2-Clause URL: https://github.com/Yubico/%{name} Source0: https://developers.yubico.com/%{name}/Releases/%{name}-%{version}.tar.gz Source1: https://developers.yubico.com/%{name}/Releases/%{name}-%{version}.tar.gz.sig Source2: yubico-release-gpgkeys.asc -Patch001: 001-skip-sha1-tests.patch -BuildRequires: cmake -BuildRequires: hidapi-devel -BuildRequires: libcbor-devel -BuildRequires: libudev-devel -BuildRequires: openssl-devel -BuildRequires: zlib-devel -BuildRequires: gcc +Patch01: 01-fix-credman-leak.patch + BuildRequires: gnupg2 +BuildRequires: cmake BuildRequires: make -Requires: (u2f-hidraw-policy if systemd-udev) -Requires: zlib +BuildRequires: gcc +BuildRequires: pkgconfig(libcbor) +BuildRequires: pkgconfig(libudev) +BuildRequires: pkgconfig(openssl) +BuildRequires: pkgconfig(zlib) %description %{name} is an open source library to support the FIDO2 protocol. FIDO2 is @@ -64,9 +62,6 @@ authentication device. %cmake %cmake_build -%check -cd "%{_vpath_builddir}" -make test %install %cmake_install @@ -74,52 +69,127 @@ make test find %{buildroot} -type f -name "*.a" -delete -print +%check +%ctest \-E regress_cred + + %files %doc NEWS README.adoc %license LICENSE %{_libdir}/libfido2.so.1{,.*} %files devel -%{_libdir}/pkgconfig/* +%{_libdir}/pkgconfig/libfido2.pc %{_libdir}/libfido2.so -%{_includedir}/* -%{_mandir}/man3/* +%{_includedir}/fido.h +%{_includedir}/fido +%{_mandir}/man3/fido_*.3{,.*} +%{_mandir}/man3/eddsa_pk_*.3{,.*} +%{_mandir}/man3/es256_pk_*.3{,.*} +%{_mandir}/man3/es384_pk_*.3{,.*} +%{_mandir}/man3/rs256_pk_*.3{,.*} %files -n fido2-tools -%{_bindir}/* -%{_mandir}/man1/* +%{_bindir}/fido2-assert +%{_bindir}/fido2-cred +%{_bindir}/fido2-token +%{_mandir}/man1/fido2-assert.1{,.*} +%{_mandir}/man1/fido2-cred.1{,.*} +%{_mandir}/man1/fido2-token.1{,.*} %changelog -* Wed Nov 08 2023 Dmitry Belyavskiy - 1.13.0-2 -- rebuilt +* Tue Oct 29 2024 Troy Dawson - 1.14.0-7 +- Bump release for October 2024 mass rebuild: + Resolves: RHEL-64018 -* Wed Apr 19 2023 Dmitry Belyavskiy - 1.13.0-1 -- Upgrade to 1.13 - Resolves: rhbz#2122193 +* Wed Oct 23 2024 Dmitry Belyavskiy - 1.14.0-6 +- Fix memory leak in credman + Resolves: RHEL-35253 -* Tue Aug 17 2021 Dmitry Belyavskiy - 1.6.0-9 -- rebuilt +* Mon Jun 24 2024 Troy Dawson - 1.14.0-5 +- Bump release for June 2024 mass rebuild -* Mon Aug 16 2021 Dmitry Belyavskiy - 1.6.0-8 -- rebuilt +* Mon Feb 05 2024 Gary Buhrmaster - 1.14.0-4 +- Rebuilt for libcbor 0.11.0 -* Mon Aug 09 2021 Mohan Boddu - 1.6.0-7 -- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags - Related: rhbz#1991688 +* Thu Jan 25 2024 Fedora Release Engineering - 1.14.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild -* Wed Jun 16 2021 Mohan Boddu - 1.6.0-6 -- Rebuilt for RHEL 9 BETA for openssl 3.0 - Related: rhbz#1971065 +* Sun Jan 21 2024 Fedora Release Engineering - 1.14.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild -* Fri Jun 04 2021 Dmitry Belyavskiy - 1.6.0-5 -- rebuilt +* Mon Nov 13 2023 Gary Buhrmaster - 1.14.0-1 +- Update to 1.14.0 release ( resolves: rhbz#2249531 ) -* Tue May 25 2021 Dmitry Belyavskiy - 1.6.0-4 -- OpenSSL 3.0 compatibility. Related: rhbz#1961051 +* Thu Jul 20 2023 Fedora Release Engineering - 1.13.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild -* Fri Apr 16 2021 Mohan Boddu - 1.6.0-3 -- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 +* Tue Mar 07 2023 Gary Buhrmaster - 1.13.0-2 +- Rebuilt for libcbor 0.10.2 + +* Tue Feb 21 2023 Gary Buhrmaster - 1.13.0-1 +- Update to 1.13.0 release ( resolves: rhbz#2172297 ) +- Perform some deglobing of files per packaging guidelines + +* Tue Feb 21 2023 Gary Buhrmaster - 1.12.0-5 +- Fix sources file for keyring move + +* Fri Feb 10 2023 Gary Buhrmaster - 1.12.0-4 +- Move keyring to SCM per packaging guidelines + +* Thu Jan 19 2023 Fedora Release Engineering - 1.12.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sat Nov 12 2022 Gary Buhrmaster - 1.12.0-2 +- exclude (future invalid crypto policy) test (resolves: rhbz#2141852) + +* Fri Sep 23 2022 Gary Buhrmaster - 1.12.0-1 +- 1.12.0 release (resolves: rhbz#2129268) +- remove unneeded BR for hidapi-hidraw +- change to SPDX license (BSD -> BSD-2-Clause) +- add check section + +* Thu Jul 21 2022 Fedora Release Engineering - 1.11.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sun Jul 17 2022 Gary Buhrmaster - 1.11.0-2 +- Rebuilt for epel8 (resolves: rhbz#2059387) + +* Wed May 04 2022 Gary Buhrmaster - 1.11.0-1 +- 1.11.0 release (resolves: rhbz#2081706) + +* Wed Feb 16 2022 Zbigniew Jędrzejewski-Szmek - 1.10.0-3 +- Drop dependency on systemd-udev (#2018913) + +* Thu Jan 20 2022 Fedora Release Engineering - 1.10.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Tue Jan 18 2022 Gary Buhrmaster - 1.10.0-1 +- 1.10.0 release (#2041621) + +* Thu Oct 28 2021 Gary Buhrmaster - 1.9.0-1 +- 1.9.0 release (#2018007) + +* Fri Sep 17 2021 Gary Buhrmaster - 1.8.0-4 +- migrate from BR: foo-devel to BR: pkgconfig(foo) + +* Wed Sep 15 2021 Gary Buhrmaster - 1.8.0-3 +- Apply upstream patches for OpenSSL 3.0 + +* Tue Sep 14 2021 Sahana Prasad - 1.8.0-2 +- Rebuilt with OpenSSL 3.0.0 + +* Fri Jul 23 2021 Gary Buhrmaster 1.8.0-1 +- 1.8.0 release (#1985131) + +* Thu Jul 22 2021 Fedora Release Engineering - 1.7.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu Apr 01 2021 Gary Buhrmaster 1.7.0-1 +- 1.7.0 release (#1944499) +- Remove workaround for gcc-11 (fixed upstream) +- add new BR zlib-devel * Tue Jan 26 2021 Fedora Release Engineering - 1.6.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild diff --git a/sources b/sources new file mode 100644 index 0000000..39d771f --- /dev/null +++ b/sources @@ -0,0 +1,2 @@ +SHA512 (libfido2-1.14.0.tar.gz) = 83454b0db0cc8546f377d0dd59f95785fe6b73cf28e499a6182a6ece4b7bce17c3e750155262adf71f339ec0b3b6c3d3d64a07b01c8428b4b91de97ae768f0e6 +SHA512 (libfido2-1.14.0.tar.gz.sig) = c9ef3cf01d842ed6125a54ebe6a27e6d2beddb0df5aea4de5fdc868a27f049c9fafc9c3270bebea267b0a65ab03dca37251c17010d46ca7d2f0e4a4816c3ea29 diff --git a/SOURCES/yubico-release-gpgkeys.asc b/yubico-release-gpgkeys.asc similarity index 92% rename from SOURCES/yubico-release-gpgkeys.asc rename to yubico-release-gpgkeys.asc index 6027bf0..a3144c9 100644 --- a/SOURCES/yubico-release-gpgkeys.asc +++ b/yubico-release-gpgkeys.asc @@ -4420,29 +4420,367 @@ SoQHafsCswMy/rfpcj71Kg== -----END PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK----- -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 +=GR1Q +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- +Comment: 78D9 97D5 3E9C 0A2A 2053 92ED 14A1 9784 723C 9988 +Comment: Ludvig Michaelsson +Comment: Ludvig Michaelsson + +xjMEX2GtChYJKwYBBAHaRw8BAQdAXtF26PPVnk3a2UWoHe61aN1EwpBWXbKDhel3 +QrBTSVjNMUx1ZHZpZyBNaWNoYWVsc3NvbiA8bHVkdmlnLm1pY2hhZWxzc29uQGdt +YWlsLmNvbT7CkQQTFgoAOQIbAQQLCQgHBBUKCQgFFgIDAQACHgECF4AWIQR42ZfV PpwKKiBTku0UoZeEcjyZiAUCX2Gu5wIZAQAKCRAUoZeEcjyZiNAZAP9GQtAV2Hwo OUFmlzIR14BYpmSeMkafm3rvBFudTgwZpgEAp7tSOkar9lglvt+JzuT3/HakxUUJ -YiwqIDey9xhiTgy0Mkx1ZHZpZyBNaWNoYWVsc3NvbiA8bHVkdmlnLm1pY2hhZWxz -c29uQHl1Ymljby5jb20+iI4EExYKADYWIQR42ZfVPpwKKiBTku0UoZeEcjyZiAUC +YiwqIDey9xhiTgzNMkx1ZHZpZyBNaWNoYWVsc3NvbiA8bHVkdmlnLm1pY2hhZWxz +c29uQHl1Ymljby5jb20+wo4EExYKADYWIQR42ZfVPpwKKiBTku0UoZeEcjyZiAUC X2GuMQIbAQQLCQgHBBUKCQgFFgIDAQACHgECF4AACgkQFKGXhHI8mYiYRwD+OGtP gKJYD5n1W6fDWnt+YHOVPkpqTJqVWXsYYe6SACABAP3mduQ4XB/ZmwCk67VT6b5T -lAUamAKeqSPAcjD5fwMDuDMEX2Gt0BYJKwYBBAHaRw8BAQdARvrBRyA4/r+Lz80F -c+4kRpIOTnCcGkqrzIyVbKYuNAeIfgQYFgoAJgIbIBYhBHjZl9U+nAoqIFOS7RSh -l4RyPJmIBQJjEemyBQkFo87RAAoJEBShl4RyPJmIIwgA/jfBzSXX5vReGjnQhIz2 -g6m41/9CWMwUu52NZdXXiPFFAQCG1bKgmAeTCWRZEQvGw8DEvMbqmnfIJMdXh1zA -gFgyB7g4BF9hragSCisGAQQBl1UBBQEBB0BljuLOy6u/JkSAM9+4+l3nfwhlIy/i -+ym0f5Nr2tuKfgMBCAeIfgQYFgoAJgIbDBYhBHjZl9U+nAoqIFOS7RShl4RyPJmI -BQJjEemyBQkFo875AAoJEBShl4RyPJmI70YA/1R2eQlxVUi/Aet8MP/r+87Ncc7N -Q1MkmBbGMjqYQWUXAQCbdnzk9H7VR5kkZsMRlBxQlcMdXOkfWja6xDQigbNtCLgz -BF9hrXwWCSsGAQQB2kcPAQEHQEob8Md2DCEq+n0vM1YiR5B3pixFaKZzPykxvlbO -ko5tiPUEGBYKACYCGwIWIQR42ZfVPpwKKiBTku0UoZeEcjyZiAUCYxHpowUJBaPP -JQCBdiAEGRYKAB0WIQSzcAP/FaBopBPlCxw9aknkxOC2cwUCX2GtfAAKCRA9aknk -xOC2cx2WAPsGC4TsSp8CqeglXKtYrRJ7JGIGfzCOLhNoqjQwE6QAyAEAuTd0ibXM -aVxUQWJFhjkJFf2yEnKDpmrvokMXkaakpwAJEBShl4RyPJmIRH4A/j6BluMAHPyE -124SZXUtgZWhf3M8dg+IHSYwz4PONXvXAP9Gj6SQ8cmfkDCMm0w+HHWDEKSrAV4c -YG4OYAUaqpL0BQ== -=UEIo +lAUamAKeqSPAcjD5fwMDzjMEX2Gt0BYJKwYBBAHaRw8BAQdARvrBRyA4/r+Lz80F +c+4kRpIOTnCcGkqrzIyVbKYuNAfCfgQYFgoAJgIbIBYhBHjZl9U+nAoqIFOS7RSh +l4RyPJmIBQJhLHrtBQkDwpt2AAoJEBShl4RyPJmIS7EBAJbpbnsFuYHfwbZxA5Wp +XYAx8soXp+VLK9Rr1ysj4D4kAP4+XGsRuxHz51/ozDmLrg0N1LCJUu8kSgJvLxaF +N16lB8J+BBgWCgAmFiEEeNmX1T6cCiogU5LtFKGXhHI8mYgFAl9hrdACGyAFCQHh +M4AACgkQFKGXhHI8mYgYGwEAsU3yVRqh1H1OcihjnJoE8shGVBcn5EDQknIakV5e +ZmQBAMvWMXs00IdKMTdwWlLf2KiGy2zJDXtssTnHbsLMocUPzjMEX2GtfBYJKwYB +BAHaRw8BAQdAShvwx3YMISr6fS8zViJHkHemLEVopnM/KTG+Vs6Sjm3CwDUEGBYK +ACYCGwIWIQR42ZfVPpwKKiBTku0UoZeEcjyZiAUCYSx65wUJA8KbygCBCRAUoZeE +cjyZiHYgBBkWCgAdFiEEs3AD/xWgaKQT5QscPWpJ5MTgtnMFAl9hrXwACgkQPWpJ +5MTgtnMdlgD7BguE7EqfAqnoJVyrWK0SeyRiBn8wji4TaKo0MBOkAMgBALk3dIm1 +zGlcVEFiRYY5CRX9shJyg6Zq76JDF5GmpKcA92cBAMDXRBTM/cWOzR13pPqTKfVo +hQ+TwcPMOVUcBjOdDMStAQDy4sLxrtWbQgT/rJw1t4efF6Jwo1DCtPHJTXcWe11R +D8LANQQYFgoAJhYhBHjZl9U+nAoqIFOS7RShl4RyPJmIBQJfYa18AhsCBQkB4TOA +AIEJEBShl4RyPJmIdiAEGRYKAB0WIQSzcAP/FaBopBPlCxw9aknkxOC2cwUCX2Gt +fAAKCRA9aknkxOC2cx2WAPsGC4TsSp8CqeglXKtYrRJ7JGIGfzCOLhNoqjQwE6QA +yAEAuTd0ibXMaVxUQWJFhjkJFf2yEnKDpmrvokMXkaakpwCC2wEAl57Bn/jI1y7C +iiqNOFo68CBneIe/UBrdwiAy91iieUQBANY9nHVqIxYvs0G/CUMzraNBLIhzS3ny +sgnEKOL/EaICzjgEX2GtqBIKKwYBBAGXVQEFAQEHQGWO4s7Lq78mRIAz37j6Xed/ +CGUjL+L7KbR/k2va24p+AwEIB8J+BBgWCgAmAhsMFiEEeNmX1T6cCiogU5LtFKGX +hHI8mYgFAmEseu0FCQPCm54ACgkQFKGXhHI8mYjjhgEAk//4GzFq6fVCYbFMjxx0 +yDL4jeHv2pk0NNfG1ZC/oDYBAJ2kOUygl4/Bj1qkJGwVXQ+rRyUzQjamTeA/zbK/ +D24Iwn4EGBYKACYWIQR42ZfVPpwKKiBTku0UoZeEcjyZiAUCX2GtqAIbDAUJAeEz +gAAKCRAUoZeEcjyZiCN0APoDcrz5YhgMgx7+p7gzXTZRyXKobZDYBm+m3TQtoo3Q +3AD+JGOZnbagl7wHwrDjGQswtUH0J+Vo8QshV0p6+Biz1wY= +=I0JV -----END PGP PUBLIC KEY BLOCK-----