Compare commits

...

1 Commits
c9-beta ... c10

Author SHA1 Message Date
c4b7336347 import UBI libfido2-1.14.0-7.el10 2025-05-14 14:44:34 +00:00
7 changed files with 510 additions and 88 deletions

4
.gitignore vendored
View File

@ -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

View File

@ -1,2 +0,0 @@
f3de6c8076212a660ae069ad9b07fb13b80d96ce SOURCES/libfido2-1.13.0.tar.gz
d0eb754013fec3fc6dfdb27926527c5eb2880fb0 SOURCES/libfido2-1.13.0.tar.gz.sig

35
01-fix-credman-leak.patch Normal file
View File

@ -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

View File

@ -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);

View File

@ -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 <dbelyavs@redhat.com> - 1.13.0-2
- rebuilt
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 1.14.0-7
- Bump release for October 2024 mass rebuild:
Resolves: RHEL-64018
* Wed Apr 19 2023 Dmitry Belyavskiy <dbelyavs@redhat.com> - 1.13.0-1
- Upgrade to 1.13
Resolves: rhbz#2122193
* Wed Oct 23 2024 Dmitry Belyavskiy <dbelyavs@redhat.com> - 1.14.0-6
- Fix memory leak in credman
Resolves: RHEL-35253
* Tue Aug 17 2021 Dmitry Belyavskiy <dbelyavs@redhat.com> - 1.6.0-9
- rebuilt
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 1.14.0-5
- Bump release for June 2024 mass rebuild
* Mon Aug 16 2021 Dmitry Belyavskiy <dbelyavs@redhat.com> - 1.6.0-8
- rebuilt
* Mon Feb 05 2024 Gary Buhrmaster <gary.buhrmaster@gmail.com> - 1.14.0-4
- Rebuilt for libcbor 0.11.0
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 1.6.0-7
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.14.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Jun 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.6.0-6
- Rebuilt for RHEL 9 BETA for openssl 3.0
Related: rhbz#1971065
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.14.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jun 04 2021 Dmitry Belyavskiy <dbelyavs@redhat.com> - 1.6.0-5
- rebuilt
* Mon Nov 13 2023 Gary Buhrmaster <gary.buhrmaster@gmail.com> - 1.14.0-1
- Update to 1.14.0 release ( resolves: rhbz#2249531 )
* Tue May 25 2021 Dmitry Belyavskiy <dbelyavs@redhat.com> - 1.6.0-4
- OpenSSL 3.0 compatibility. Related: rhbz#1961051
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.6.0-3
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Tue Mar 07 2023 Gary Buhrmaster <gary.buhrmaster@gmail.com> - 1.13.0-2
- Rebuilt for libcbor 0.10.2
* Tue Feb 21 2023 Gary Buhrmaster <gary.buhrmaster@gmail.com> - 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 <gary.buhrmaster@gmail.com> - 1.12.0-5
- Fix sources file for keyring move
* Fri Feb 10 2023 Gary Buhrmaster <gary.buhrmaster@gmail.com> - 1.12.0-4
- Move keyring to SCM per packaging guidelines
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.12.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Sat Nov 12 2022 Gary Buhrmaster <gary.buhrmaster@gmail.com> - 1.12.0-2
- exclude (future invalid crypto policy) test (resolves: rhbz#2141852)
* Fri Sep 23 2022 Gary Buhrmaster <gary.buhrmaster@gmail.com> - 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 <releng@fedoraproject.org> - 1.11.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Sun Jul 17 2022 Gary Buhrmaster <gary.buhrmaster@gmail.com> - 1.11.0-2
- Rebuilt for epel8 (resolves: rhbz#2059387)
* Wed May 04 2022 Gary Buhrmaster <gary.buhrmaster@gmail.com> - 1.11.0-1
- 1.11.0 release (resolves: rhbz#2081706)
* Wed Feb 16 2022 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.10.0-3
- Drop dependency on systemd-udev (#2018913)
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.10.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Tue Jan 18 2022 Gary Buhrmaster <gary.buhrmaster@gmail.com> - 1.10.0-1
- 1.10.0 release (#2041621)
* Thu Oct 28 2021 Gary Buhrmaster <gary.buhrmaster@gmail.com> - 1.9.0-1
- 1.9.0 release (#2018007)
* Fri Sep 17 2021 Gary Buhrmaster <gary.buhrmaster@gmail.com> - 1.8.0-4
- migrate from BR: foo-devel to BR: pkgconfig(foo)
* Wed Sep 15 2021 Gary Buhrmaster <gary.buhrmaster@gmail.com> - 1.8.0-3
- Apply upstream patches for OpenSSL 3.0
* Tue Sep 14 2021 Sahana Prasad <sahana@redhat.com> - 1.8.0-2
- Rebuilt with OpenSSL 3.0.0
* Fri Jul 23 2021 Gary Buhrmaster <gary.buhrmaster@gmail.com> 1.8.0-1
- 1.8.0 release (#1985131)
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Thu Apr 01 2021 Gary Buhrmaster <gary.buhrmaster@gmail.com> 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 <releng@fedoraproject.org> - 1.6.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

2
sources Normal file
View File

@ -0,0 +1,2 @@
SHA512 (libfido2-1.14.0.tar.gz) = 83454b0db0cc8546f377d0dd59f95785fe6b73cf28e499a6182a6ece4b7bce17c3e750155262adf71f339ec0b3b6c3d3d64a07b01c8428b4b91de97ae768f0e6
SHA512 (libfido2-1.14.0.tar.gz.sig) = c9ef3cf01d842ed6125a54ebe6a27e6d2beddb0df5aea4de5fdc868a27f049c9fafc9c3270bebea267b0a65ab03dca37251c17010d46ca7d2f0e4a4816c3ea29

View File

@ -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 <ludvig.michaelsson@gmail.com>
Comment: Ludvig Michaelsson <ludvig.michaelsson@yubico.com>
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-----