diff --git a/.gitignore b/.gitignore
index 1d48086..6e86933 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,7 @@
+SOURCES/fbia32.efi
+SOURCES/fbx64.efi
+SOURCES/mmia32.efi
+SOURCES/mmx64.efi
 SOURCES/shimaa64.efi
 SOURCES/shimia32.efi
 SOURCES/shimx64.efi
diff --git a/.shim.metadata b/.shim.metadata
index 24b7aab..1a350b4 100644
--- a/.shim.metadata
+++ b/.shim.metadata
@@ -1,3 +1,7 @@
-8ab193ad7addd71e4a820081f36d47e5ef727d28 SOURCES/shimaa64.efi
-d3178fb0a2d662e2457e4a5cd13d1224e2aac1c2 SOURCES/shimia32.efi
-9fb692b46fc70fd07a9acbbabc8e1c50d0e9a481 SOURCES/shimx64.efi
+21ce4720933ec31c6cfd42e514fb847991119021 SOURCES/fbia32.efi
+c14235e6e3a56a68c546c8926cd576cfcf146be9 SOURCES/fbx64.efi
+e8617d7a23490f16f417393246717b12966e2d35 SOURCES/mmia32.efi
+d2dbb8f8a2d701937a8d0547a9b15ea9974eaf33 SOURCES/mmx64.efi
+750bd7932437b1fb6610c233f69db1b70d67fab1 SOURCES/shimaa64.efi
+cc04b4590187538696ce427a9c12af535c74747c SOURCES/shimia32.efi
+ed57e6896e32b745c57c18ccfb7c985c892230bc SOURCES/shimx64.efi
diff --git a/SOURCES/BOOTIA32.CSV b/SOURCES/BOOTIA32.CSV
index 4e658b2..9343624 100644
Binary files a/SOURCES/BOOTIA32.CSV and b/SOURCES/BOOTIA32.CSV differ
diff --git a/SOURCES/BOOTX64.CSV b/SOURCES/BOOTX64.CSV
index 7692a93..77b070b 100644
Binary files a/SOURCES/BOOTX64.CSV and b/SOURCES/BOOTX64.CSV differ
diff --git a/SOURCES/fbaa64.efi b/SOURCES/fbaa64.efi
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/SOURCES/fbaa64.efi
diff --git a/SOURCES/mmaa64.efi b/SOURCES/mmaa64.efi
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/SOURCES/mmaa64.efi
diff --git a/SOURCES/shim.rpmmacros b/SOURCES/shim.rpmmacros
index f477f25..177650f 100644
--- a/SOURCES/shim.rpmmacros
+++ b/SOURCES/shim.rpmmacros
@@ -13,9 +13,19 @@
 %global shimefix64 %{expand:%{SOURCE22}}
 #%%global shimefiarm %%{expand:%%{SOURCE23}
 
+%global fbefiaa64 %{expand:%{SOURCE30}}
+%global fbefiia32 %{expand:%{SOURCE31}}
+%global fbefix64 %{expand:%{SOURCE32}}
+#%%global fbefiarm %%{expand:%%{SOURCE33}
+
+%global mmefiaa64 %{expand:%{SOURCE40}}
+%global mmefiia32 %{expand:%{SOURCE41}}
+%global mmefix64 %{expand:%{SOURCE42}}
+#%%global mmefiarm %%{expand:%%{SOURCE43}
+
 %global shimveraa64 15-7.el8_1
-%global shimveria32 15.4-4.el8_1
-%global shimverx64 15.4-4.el8_1
+%global shimveria32 15.5-1.el8
+%global shimverx64 15.5-1.el8
 #%%global shimverarm 15-1.el8
 
 %global shimdiraa64 %{_datadir}/shim/%{shimveraa64}/aa64
@@ -36,6 +46,10 @@
 %global shimveralt %{expand:%{shimver%{?efi_alt_arch}}}
 %global shimdir %{expand:%{shimdir%{efi_arch}}}
 %global shimdiralt %{expand:%{shimdir%{?efi_alt_arch}}}
+%global fbefi %{expand:%{fbefi%{efi_arch}}}
+%global fbefialt %{expand:%{fbefi%{?efi_alt_arch}}}
+%global mmefi %{expand:%{mmefi%{efi_arch}}}
+%global mmefialt %{expand:%{mmefi%{?efi_alt_arch}}}
 
 %global unsignednone shim-unsigned-none
 %global unsigned %{expand:%%{unsigned%{efi_arch}}}
@@ -68,15 +82,17 @@ version signed by the UEFI signing service.				\
 
 # -a <efiarch>
 # -i <input>
-%define hash(a:i:d:)							\
-	pesign -i %{-i*} -h -P > shim.hash				\
-	read file0 hash0 < shim.hash					\
-	read file1 hash1 < %{-d*}/shim%{-a*}.hash			\
-	if ! [ "$hash0" = "$hash1" ]; then				\
-		echo Invalid signature\! > /dev/stderr			\
-		echo $hash0 vs $hash1					\
-		exit 1							\
-	fi								\
+%define hash(a:i:d:)								\
+	if [ 0%{?_unsigned_test_build:%{_unsigned_test_build}} -ne 0 ] ; then	\
+		pesign -i %{-i*} -h -P > shim.hash				\
+		read file0 hash0 < shim.hash					\
+		read file1 hash1 < %{-d*}/shim%{-a*}.hash			\
+		if ! [ "$hash0" = "$hash1" ] ; then				\
+			echo Invalid signature\! > /dev/stderr			\
+			echo $hash0 vs $hash1					\
+			exit 1							\
+		fi								\
+	fi									\
 	%{nil}
 
 # -i <input>
@@ -88,9 +104,25 @@ version signed by the UEFI signing service.				\
 # -b <binary prefix>
 # -a <efiarch>
 # -i <input>
-%define distrosign(b:a:d:)						\
-	cp -av %{-d*}/%{-b*}%{-a*}.efi %{-b*}%{-a*}-unsigned.efi	\
-	%{expand:%%sign -i %{-b*}%{-a*}-unsigned.efi -o %{-b*}%{-a*}-signed.efi -n redhatsecureboot501 -a %{SOURCE2} -c %{SOURCE1} }\
+%define distrosign(b:a:d:)							\
+	if [ 0%{?_unsigned_test_build:%{_unsigned_test_build}} -ne 0 ] ; then	\
+		if [ "%{-b*}%{-a*}" = "shim%{efi_arch}" ] ; then		\
+			cp -av "%{shimefi}" %{-b*}%{-a*}-unsigned.efi		\
+		elif [ "%{-b*}%{-a*}" = "shim%{efi_alt_arch}" ] ; then		\
+			cp -av "%{shimefialt}" %{-b*}%{-a*}-unsigned.efi	\
+		elif [ "%{-b*}%{-a*}" = "mm%{efi_arch}" ] ; then		\
+			cp -av "%{mmefi}" %{-b*}%{-a*}-unsigned.efi		\
+		elif [ "%{-b*}%{-a*}" = "mm%{efi_alt_arch}" ] ; then		\
+			cp -av "%{mmefialt}" %{-b*}%{-a*}-unsigned.efi		\
+		elif [ "%{-b*}%{-a*}" = "fb%{efi_arch}" ] ; then		\
+			cp -av "%{fbefi}" %{-b*}%{-a*}-unsigned.efi		\
+		elif [ "%{-b*}%{-a*}" = "fb%{efi_alt_arch}" ] ; then		\
+			cp -av "%{fbefialt}" %{-b*}%{-a*}-unsigned.efi		\
+		fi								\
+	else									\
+		cp -av %{-d*}/%{-b*}%{-a*}.efi %{-b*}%{-a*}-unsigned.efi	\
+	fi									\
+	%{expand:%%sign -i %{-b*}%{-a*}-unsigned.efi -o %{-b*}%{-a*}-signed.efi -n redhatsecureboot501 -a %{SOURCE2} -c %{SOURCE1} } \
 	%{nil}
 
 # -a <efiarch>
@@ -98,16 +130,18 @@ version signed by the UEFI signing service.				\
 # -b <1|0> # signed by this builder?
 # -c <1|0> # signed by UEFI CA?
 # -i <shimARCH.efi>
+# -d /usr/share dir for this build (full path)
 %define define_build(a:A:b:c:i:d:)					\
 if [ "%{-c*}" = "yes-temporarily-disabled-20180723" ]; then		\
 	%{expand:%%hash -i %{-i*} -a %{-a*} -d %{-d*}}			\
 fi									\
 cp %{-i*} shim%{-a*}.efi						\
-if [ "%{-b*}" = "yes" ]; then						\
+if [ "%{-b*}" = "yes" ] ; then						\
 	%{expand:%%distrosign -b shim -a %{-a*} -d %{-d*}}		\
 	mv shim%{-a*}-signed.efi shim%{-a*}-%{efi_vendor}.efi		\
 fi									\
-if [ "%{-c*}" = "no" ]; then						\
+if [ "%{-c*}" = "no" ] ||						\
+   [ 0%{?_unsigned_test_build:%{_unsigned_test_build}} -ne 0 ] ; then	\
 	cp shim%{-a*}-%{efi_vendor}.efi shim%{-a*}.efi			\
 fi									\
 %{expand:%%distrosign -b mm -a %{-a*} -d %{-d*}}			\
diff --git a/SPECS/shim.spec b/SPECS/shim.spec
index e73f31f..93cc4ba 100644
--- a/SPECS/shim.spec
+++ b/SPECS/shim.spec
@@ -1,6 +1,6 @@
 Name:		shim
-Version:	15.4
-Release:	2%{?dist}
+Version:	15.5
+Release:	2.el8
 Summary:	First-stage UEFI bootloader
 License:	BSD
 URL:		https://github.com/rhboot/shim/
@@ -21,12 +21,20 @@ Source2:	redhatsecurebootca5.cer
 # match, 1 and 11 match, ...
 Source10:	BOOTAA64.CSV
 Source20:	shimaa64.efi
+Source30:	mmaa64.efi
+Source40:	fbaa64.efi
 Source11:	BOOTIA32.CSV
 Source21:	shimia32.efi
+Source31:	mmia32.efi
+Source41:	fbia32.efi
 Source12:	BOOTX64.CSV
 Source22:	shimx64.efi
+Source32:	mmx64.efi
+Source42:	fbx64.efi
 #Source13:	BOOTARM.CSV
 #Source23:	shimarm.efi
+#Source33:	mmarm.efi
+#Source43:	fbarm.efi
 
 %include %{SOURCE0}
 
@@ -37,6 +45,8 @@ BuildRequires:	pesign >= 0.112-20.fc27
 # (shim 16+) by making the unsigned packages all provide "shim-unsigned", so
 # we can just BuildRequires that.
 %ifarch x86_64
+# BuildRequires:	%% {unsignedx64} = %% {shimverx64}
+# BuildRequires:	%% {unsignedia32} = %% {shimveria32}
 BuildRequires:	%{unsignedx64} = %{shimverx64}
 BuildRequires:	%{unsignedia32} = %{shimveria32}
 %endif
@@ -63,6 +73,7 @@ rm -rf shim-%{version}
 mkdir shim-%{version}
 
 %build
+export PS4='${LINENO}: '
 
 cd shim-%{version}
 %if %{efi_has_alt_arch}
@@ -101,27 +112,27 @@ install -m 0700 %{shimefi} $RPM_BUILD_ROOT%{efi_esp_dir}/shim.efi
 %endif
 
 %changelog
-* Tue Apr 06 2021 Peter Jones <pjones@redhat.com> - 15.4-2
-- Fix build-deps on our shim-unsigned-* packages.
-  Related: CVE-2020-14372 (and others)
-
-* Mon Apr 05 2021 Peter Jones <pjones@redhat.com> - 15.4-1
-- Update to shim 15.4
-  - Support for revocations via the ".sbat" section and SBAT EFI variable
-  - A new unit test framework and a bunch of unit tests
-  - No external gnu-efi dependency
-  - Better CI
-  Resolves: CVE-2020-14372
-  Resolves: CVE-2020-25632
-  Resolves: CVE-2020-25647
-  Resolves: CVE-2020-27749
-  Resolves: CVE-2020-27779
-  Resolves: CVE-2021-20225
-  Resolves: CVE-2021-20233
+* Wed Apr 20 2022 Peter Jones <pjones@redhat.com> - 15.5-2.el8
+- Include the actual signed shim binaries.
+  Resolves: rhbz#1970632
+  Resolves: rhbz#1982071
+  Resolves: rhbz#2000946
+  Resolves: rhbz#2002265
+
+* Tue Apr 19 2022 Peter Jones <pjones@redhat.com> - 15.5-1
+- Update to shim-15.5
+  Resolves: rhbz#1970632
+  Resolves: rhbz#1982071
+  Resolves: rhbz#2000946
+  Resolves: rhbz#2002265
+
+* Mon Sep 21 2020 Javier Martinez Canillas <javierm@redhat.com> - 15-16
+- Fix an incorrect allocation size
+  Resolves: rhbz#1877253
 
 * Fri Jul 31 2020 Peter Jones <pjones@redhat.com> - 15-15
 - Update once again for new signed shim builds.
-  Resolves: rhbz#1862231
+  Resolves: rhbz#1861977
 
 * Tue Jul 28 2020 Peter Jones <pjones@redhat.com> - 15-14
 - Get rid of our %%dist hack for now.
@@ -136,7 +147,9 @@ install -m 0700 %{shimefi} $RPM_BUILD_ROOT%{efi_esp_dir}/shim.efi
 
 * Thu Jun 11 2020 Javier Martinez Canillas <javierm@redhat.com> - 15-12
 - Fix firmware update bug in aarch64 caused by shim ignoring arguments
+  Resolves: rhbz#1830871
 - Fix a shim crash when attempting to netboot
+  Resolves: rhbz#1795654
 
 * Fri Jun 07 2019 Javier Martinez Canillas <javierm@redhat.com> - 15-11
 - Update the shim-unsigned-aarch64 version number