mirror of
https://abf.rosa.ru/djam/kernel-6.1.git
synced 2025-02-25 00:02:55 +00:00
Verify that modules are signed (multithreaded)
This commit is contained in:
parent
3a8564ce81
commit
f05348d4fa
1 changed files with 31 additions and 1 deletions
32
kernel.spec
32
kernel.spec
|
@ -4,7 +4,7 @@
|
|||
%define sublevel 7
|
||||
|
||||
# Release number. Increase this before a rebuild.
|
||||
%define rpmrel 5
|
||||
%define rpmrel 6
|
||||
%define fullrpmrel %{rpmrel}
|
||||
|
||||
%define rpmtag %{disttag}
|
||||
|
@ -63,6 +63,7 @@
|
|||
%define certs_dir_rnd %{src_dir}/certs_%{vendor}_rnd
|
||||
%define certs_signing_key_rnd %{certs_dir_rnd}/signing_key.pem
|
||||
%define certs_key_config_rnd %{certs_dir_rnd}/x509.genkey
|
||||
%define certs_verify_tmp %{certs_dir_rnd}/verify.tmp
|
||||
# %%certs_email_rnd expansion has bashisms
|
||||
%define _buildshell /bin/bash
|
||||
# On ABF, %%packager == $username <$email>
|
||||
|
@ -249,6 +250,8 @@ BuildRequires: pkgconfig(libcrypto)
|
|||
%if %{enhanced_security}
|
||||
# To generate keys
|
||||
BuildRequires: openssl
|
||||
# To verify signatures (find, xargs, hexdump)
|
||||
BuildRequires: findutils util-linux
|
||||
%endif
|
||||
|
||||
# might be useful too:
|
||||
|
@ -1003,6 +1006,33 @@ cd %src_dir
|
|||
rm -rf %{buildroot}
|
||||
cp -a %{temp_root} %{buildroot}
|
||||
|
||||
%if %{enhanced_security}
|
||||
# Multithreaded verification that every kernel module
|
||||
# has a signature attached to it
|
||||
mkdir -p "%{certs_dir_rnd}"
|
||||
echo 0 > %{certs_verify_tmp}
|
||||
_verify_signature(){
|
||||
if [ -z "$1" ] || [ ! -f "$1" ]; then return; fi
|
||||
if hexdump -C "$1" | awk -F '|' '{print $2}' | tr -d '\n' | \
|
||||
grep -q '~Module signature appended~'
|
||||
then
|
||||
echo $(($(cat %{certs_verify_tmp})+1)) > %{certs_verify_tmp}
|
||||
else
|
||||
echo "ERROR: Module $1 has no signature attached to it!"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
export -f _verify_signature
|
||||
find %{target_modules} -name '*.ko' -print0 | sort -u | \
|
||||
xargs --null -P "$(nproc)" -I {} "$SHELL" -x -c '_verify_signature "{}"'
|
||||
if [ "$(cat %{certs_verify_tmp})" -lt 1 ]; then
|
||||
echo "ERROR: seems that signatures of none modules were verified!"
|
||||
exit 1
|
||||
fi
|
||||
cat %{certs_verify_tmp}
|
||||
rm -f %{certs_verify_tmp}
|
||||
%endif
|
||||
|
||||
# compressing modules
|
||||
%if %{build_modxz}
|
||||
find %{target_modules} -name "*.ko" | %kxargs xz -6e
|
||||
|
|
Loading…
Add table
Reference in a new issue