Name:     cryptsetup
Version:  2.3.3
Release:  6
Summary:  Utility used to conveniently set up disk encryption
License:  GPLv2+ and LGPLv2+
URL:      https://gitlab.com/cryptsetup/cryptsetup
Source0:  https://www.kernel.org/pub/linux/utils/cryptsetup/v2.3/cryptsetup-%{version}.tar.xz

Patch1:  0001-cryptsetup-add-system-library-paths.patch
Patch2:  0002-fix-compat-test.patch
Patch3:  0003-Check-segment-gaps-regardless-of-heap-space.patch
Patch4:  0004-Fix-posible-buffer-overflows-in-LUKS-conversion.patch
Patch5:  0005-Fix-a-memleak-in-blockwise-test.patch
Patch6:  0006-CVE-2021-4122.patch

BuildRequires: openssl-devel, popt-devel, device-mapper-devel,  gcc
BuildRequires: libuuid-devel, json-c-devel, libargon2-devel, libpwquality-devel, libblkid-devel
Requires:      libpwquality >= 1.2.0

Provides:      %{name}-luks = %{version}-%{release}
Obsoletes:     %{name}-luks < 1.4.0
Provides:      %{name}-libs %{name}-libs%{?_isa}
Obsoletes:     %{name}-libs
Obsoletes:     python2-%{name} < 2.1.0
Obsoletes:     %{name}-python3 < 2.1.0

%description
cryptsetup is a utility used to conveniently set up disk encryption based
on the DMCrypt kernel module.

%package   devel
Summary:   Including header files and library for the developing of cryptsetup
Requires:  %{name} = %{version}-%{release}
Requires:  pkgconfig
Provides:  cryptsetup-luks-devel = %{version}-%{release}
Obsoletes: cryptsetup-luks-devel < 1.4.0

%description devel
This contains dynamic libraries and header files for the developing of cryptsetup.

%package   -n veritysetup
Summary:   Utility for setting up disk verification
Requires:  %{name} = %{version}-%{release}

%description -n veritysetup
It contains a utility for setting up disk verification.

%package   -n integritysetup
Summary:   Utility for setting up dm-integrity volumes
Requires:  %{name} = %{version}-%{release}

%description -n integritysetup
It contains a utility for setting up dm-integrity volumes.

%package reencrypt
Summary:   Utility for reencryption encrypted disks
Requires:  %{name} = %{version}-%{release}

%description reencrypt
It contains a utility for reencryption encrypted disks.

%package    help
Summary:    Including man files for cryptsetup
BuildArch:  noarch
Requires:   man

%description help
This contains man files for the using of cryptsetup.

%prep
%autosetup -n %{name}-%{version} -p1

%build
%configure --enable-fips --enable-pwquality --enable-libargon2 --with-crypto_backend=openssl
%make_build

%check
make check

%install
%make_install
%find_lang cryptsetup

%post -n cryptsetup -p /sbin/ldconfig

%postun -n cryptsetup -p /sbin/ldconfig

%files -f cryptsetup.lang
%license COPYING COPYING.LGPL AUTHORS
%doc docs/*
%{_sbindir}/cryptsetup
%{_libdir}/libcryptsetup.so.*
%{_tmpfilesdir}/cryptsetup.conf
%ghost %dir /run/cryptsetup
%exclude %{_libdir}/*.la

%files devel
%doc docs/examples/*
%{_libdir}/libcryptsetup.so
%{_includedir}/libcryptsetup.h
%{_libdir}/pkgconfig/libcryptsetup.pc

%files -n veritysetup
%{_sbindir}/veritysetup

%files -n integritysetup
%{_sbindir}/integritysetup

%files reencrypt
%doc %attr(644,-,-)misc/dracut_90reencrypt
%{_sbindir}/cryptsetup-reencrypt

%files help
%{_mandir}/man8/*

%changelog
* Mon Jan 24 2022 yanglongakang <yanglongkang@huawei.com> - 2.3.3-6
- Fix CVE-2021-4122

* Fri Jul 30 2021 chenyanpanHW <chenyanpan@huawei.com> - 2.3.3-5
- DESC: delete -S git from %autosetup, and delete BuildRequires git

* Thu Jul 1 2021 yanglongkang <yanglongkang@huawei.com> - 2.3.3-4
- add buildrequire gcc
  add make check
  backport upstream patches to solve several problems -epoch2

* Sat Jul 18 2020 Ruijun Ge <geruijun@huawei.com> - 2.3.3-1
- update to 2.3.3 version

* Mon Apr 13 2020 wangjufeng <wangjufeng@huawei.com> - 2.3.1-1
- Type:enhancemnet
- ID:NA
- SUG:NA
- DESC:Update to cryptsetup 2.3.1.

* Wed Aug 28 2019 zhanghaibo <ted.zhang@huawei.com> - 2.0.4-2
- Type:enhancemnet
- ID:NA
- SUG:NA
- DESC:openEuler Debranding

* Wed Aug 21 2019 renxudong<renxudong1@huawei.com> - 2.0.4-1.h3
- Type:bugfix
- ID:NA
- SUG:NA
- DESC:fix blockwise-compat and compat-test

* Mon May 6 2019 hanzhijun<hanzhijun1@huawei.com> - 2.0.4-1.h2
- Type:bugfix
- ID:NA
- SUG:NA
- DESC:fix blockwise-compat and compat-test

* Thu Apr 18 2019 wangxiao<wangxiao65@huawei.com> - 2.0.4-1.h1
- Type:bugfix
- ID:NA
- SUG:restart
- DESC:Emit error message for converting inactive keyslot.
       Move blkid scan after device context initialization.
       Add blkid scan when attemting to open plain device.
       Wiping empty device should not fail.
       Do not copy buffer if read fails.
       Do not fail if device is smaller than requested wipe size.
       Do not print error for used device twice.
       Fix issues found by Coverity scan.
       Properly propagate error from AF diffuse function.
       Check for device size and sector size misalignment.
       Fix a possible NULL pointer in opt_type.
       Upstream fixes to bundled Argon2 code.
- Package init
