196 lines
5.9 KiB
Diff
196 lines
5.9 KiB
Diff
|
From 89ed4a7d1fc1e1164c9f4ad2f0f8a3d1c0f7d90e Mon Sep 17 00:00:00 2001
|
||
|
From: Peter Jones <pjones@redhat.com>
|
||
|
Date: Mon, 3 Feb 2020 13:47:08 -0500
|
||
|
Subject: [PATCH 81/86] Add the beginnings of our security library.
|
||
|
|
||
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||
|
---
|
||
|
src/Android.mk | 5 ++++-
|
||
|
src/Makefile | 20 +++++++++++++++-----
|
||
|
src/efisec.h | 15 +++++++++++++++
|
||
|
src/efisec.pc.in | 11 +++++++++++
|
||
|
src/include/efivar/efisec.h | 17 +++++++++++++++++
|
||
|
src/libefisec.map.in | 7 +++++++
|
||
|
src/sec.c | 16 ++++++++++++++++
|
||
|
7 files changed, 85 insertions(+), 6 deletions(-)
|
||
|
create mode 100644 src/efisec.h
|
||
|
create mode 100644 src/efisec.pc.in
|
||
|
create mode 100644 src/include/efivar/efisec.h
|
||
|
create mode 100644 src/libefisec.map.in
|
||
|
create mode 100644 src/sec.c
|
||
|
|
||
|
diff --git a/src/Android.mk b/src/Android.mk
|
||
|
index f6af87c51ac..5a06137aa21 100644
|
||
|
--- a/src/Android.mk
|
||
|
+++ b/src/Android.mk
|
||
|
@@ -46,9 +46,12 @@ LIBEFIVAR_SOURCES := \
|
||
|
lib.c \
|
||
|
vars.c
|
||
|
|
||
|
+LIBEFISEC_SOURCES := \
|
||
|
+ sec.c
|
||
|
+
|
||
|
include $(LOCAL_PATH)/include/version.mk
|
||
|
|
||
|
-LOCAL_SRC_FILES := $(LIBEFIBOOT_SOURCES) $(LIBEFIVAR_SOURCES)
|
||
|
+LOCAL_SRC_FILES := $(LIBEFIBOOT_SOURCES) $(LIBEFIVAR_SOURCES) $(LIBEFISEC_SOURCES)
|
||
|
LOCAL_CFLAGS := -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -std=gnu11 -DLIBEFIVAR_VERSION=$(VERSION) -Wno-missing-field-initializers
|
||
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
|
||
|
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_C_INCLUDES) $(LOCAL_C_INCLUDES)/efivar $(local-generated-sources-dir)
|
||
|
diff --git a/src/Makefile b/src/Makefile
|
||
|
index b0ef8ec29a5..883e058facf 100644
|
||
|
--- a/src/Makefile
|
||
|
+++ b/src/Makefile
|
||
|
@@ -5,14 +5,16 @@ include $(TOPDIR)/src/include/version.mk
|
||
|
include $(TOPDIR)/src/include/rules.mk
|
||
|
include $(TOPDIR)/src/include/defaults.mk
|
||
|
|
||
|
-LIBTARGETS=libefivar.so libefiboot.so
|
||
|
-STATICLIBTARGETS=libefivar.a libefiboot.a
|
||
|
+LIBTARGETS=libefivar.so libefiboot.so libefisec.so
|
||
|
+STATICLIBTARGETS=libefivar.a libefiboot.a libefisec.a
|
||
|
BINTARGETS=efivar
|
||
|
STATICBINTARGETS=efivar-static
|
||
|
-PCTARGETS=efivar.pc efiboot.pc
|
||
|
+PCTARGETS=efivar.pc efiboot.pc efisec.pc
|
||
|
TARGETS=$(LIBTARGETS) $(BINTARGETS) $(PCTARGETS)
|
||
|
STATICTARGETS=$(STATICLIBTARGETS) $(STATICBINTARGETS)
|
||
|
|
||
|
+LIBEFISEC_SOURCES = sec.c
|
||
|
+LIBEFISEC_OBJECTS = $(patsubst %.c,%.o,$(LIBEFISEC_SOURCES))
|
||
|
LIBEFIBOOT_SOURCES = crc32.c creator.c disk.c gpt.c loadopt.c path-helpers.c \
|
||
|
linux.c $(sort $(wildcard linux-*.c))
|
||
|
LIBEFIBOOT_OBJECTS = $(patsubst %.c,%.o,$(LIBEFIBOOT_SOURCES))
|
||
|
@@ -23,8 +25,9 @@ LIBEFIVAR_OBJECTS = $(patsubst %.S,%.o,$(patsubst %.c,%.o,$(LIBEFIVAR_SOURCES)))
|
||
|
EFIVAR_SOURCES = efivar.c
|
||
|
GENERATED_SOURCES = include/efivar/efivar-guids.h guid-symbols.c
|
||
|
MAKEGUIDS_SOURCES = makeguids.c guid.c
|
||
|
-ALL_SOURCES=$(LIBEFIBOOT_SOURCES) $(LIBEFIVAR_SOURCES) $(MAKEGUIDS_SOURCES) \
|
||
|
- $(sort $(wildcard include/efivar/*.h)) $(GENERATED_SOURCES) $(EFIVAR_SOURCES)
|
||
|
+ALL_SOURCES=$(LIBEFISEC_SOURCES) $(LIBEFIBOOT_SOURCES) $(LIBEFIVAR_SOURCES) \
|
||
|
+ $(MAKEGUIDS_SOURCES) $(GENERATED_SOURCES) $(EFIVAR_SOURCES) \
|
||
|
+ $(sort $(wildcard include/efivar/*.h))
|
||
|
|
||
|
$(call deps-of,$(ALL_SOURCES)) : | deps
|
||
|
-include $(call deps-of,$(ALL_SOURCES))
|
||
|
@@ -86,6 +89,12 @@ libefiboot.so : | libefiboot.map libefivar.so
|
||
|
libefiboot.so : LIBS=efivar
|
||
|
libefiboot.so : MAP=libefiboot.map
|
||
|
|
||
|
+libefisec.a : $(patsubst %.o,%.static.o,$(LIBEFISEC_OBJECTS))
|
||
|
+
|
||
|
+libefisec.so : $(LIBEFISEC_OBJECTS)
|
||
|
+libefisec.so : | libefisec.map
|
||
|
+libefisec.so : MAP=libefisec.map
|
||
|
+
|
||
|
deps : $(ALL_SOURCES)
|
||
|
@$(MAKE) -f $(SRCDIR)/include/deps.mk deps SOURCES="$(ALL_SOURCES)"
|
||
|
|
||
|
@@ -116,6 +125,7 @@ test : all
|
||
|
.PHONY: test deps abiclean abixml
|
||
|
.SECONDARY : libefivar.so.1.$(VERSION) libefivar.so.1
|
||
|
.SECONDARY : libefiboot.so.1.$(VERSION) libefiboot.so.1
|
||
|
+.SECONDARY : libefisec.so.1.$(VERSION) libefisec.so.1
|
||
|
.SECONDARY : include/efivar/efivar-guids.h guid-symbols.c
|
||
|
.INTERMEDIATE : guids.bin names.bin
|
||
|
.PRECIOUS : guid-symbols.o makeguids
|
||
|
diff --git a/src/efisec.h b/src/efisec.h
|
||
|
new file mode 100644
|
||
|
index 00000000000..15d0f6d10e2
|
||
|
--- /dev/null
|
||
|
+++ b/src/efisec.h
|
||
|
@@ -0,0 +1,15 @@
|
||
|
+// SPDX-License-Identifier: LGPL-2.1-or-later
|
||
|
+/*
|
||
|
+ * efisec.h
|
||
|
+ * Copyright 2018 Peter Jones <pjones@redhat.com>
|
||
|
+ */
|
||
|
+
|
||
|
+#ifndef PRIVATE_EFISEC_H_
|
||
|
+#define PRIVATE_EFISEC_H_
|
||
|
+
|
||
|
+#include "efivar.h"
|
||
|
+#include <efivar/efisec.h>
|
||
|
+
|
||
|
+#endif /* !PRIVATE_EFISEC_H_ */
|
||
|
+
|
||
|
+// vim:fenc=utf-8:tw=75:noet
|
||
|
diff --git a/src/efisec.pc.in b/src/efisec.pc.in
|
||
|
new file mode 100644
|
||
|
index 00000000000..d3d75aac509
|
||
|
--- /dev/null
|
||
|
+++ b/src/efisec.pc.in
|
||
|
@@ -0,0 +1,11 @@
|
||
|
+prefix=@@PREFIX@@
|
||
|
+exec_prefix=@@EXEC_PREFIX@@
|
||
|
+libdir=@@LIBDIR@@
|
||
|
+includedir=@@INCLUDEDIR@@
|
||
|
+
|
||
|
+Name: efisec
|
||
|
+Description: UEFI Security Features
|
||
|
+Version: @@VERSION@@
|
||
|
+Libs: -L${libdir} -lefivar -lefisec
|
||
|
+Libs.private: -ldl
|
||
|
+Cflags: -I${includedir}/efivar
|
||
|
diff --git a/src/include/efivar/efisec.h b/src/include/efivar/efisec.h
|
||
|
new file mode 100644
|
||
|
index 00000000000..0ee5abe8bfd
|
||
|
--- /dev/null
|
||
|
+++ b/src/include/efivar/efisec.h
|
||
|
@@ -0,0 +1,17 @@
|
||
|
+// SPDX-License-Identifier: LGPL-2.1-or-later
|
||
|
+/*
|
||
|
+ * libefisec - library for the manipulation of EFI boot variables
|
||
|
+ * Copyright 2020 Peter M. Jones <pjones@redhat.com>
|
||
|
+ * Copyright 2020 Red Hat, Inc.
|
||
|
+ */
|
||
|
+#ifndef EFISEC_H
|
||
|
+#define EFISEC_H 1
|
||
|
+
|
||
|
+#include <efivar/efivar.h>
|
||
|
+
|
||
|
+extern uint32_t efi_get_libefisec_version(void)
|
||
|
+ __attribute__((__visibility__("default")));
|
||
|
+
|
||
|
+#endif /* EFISEC_H */
|
||
|
+
|
||
|
+// vim:fenc=utf-8:tw=75:noet
|
||
|
diff --git a/src/libefisec.map.in b/src/libefisec.map.in
|
||
|
new file mode 100644
|
||
|
index 00000000000..2e732cf1d9b
|
||
|
--- /dev/null
|
||
|
+++ b/src/libefisec.map.in
|
||
|
@@ -0,0 +1,7 @@
|
||
|
+libefisec.so.0 {
|
||
|
+ local: *;
|
||
|
+};
|
||
|
+
|
||
|
+LIBEFISEC_1.38 {
|
||
|
+ global: efi_get_libefisec_version;
|
||
|
+} libefisec.so.0;
|
||
|
diff --git a/src/sec.c b/src/sec.c
|
||
|
new file mode 100644
|
||
|
index 00000000000..6b6a70bb784
|
||
|
--- /dev/null
|
||
|
+++ b/src/sec.c
|
||
|
@@ -0,0 +1,16 @@
|
||
|
+// SPDX-License-Identifier: LGPL-2.1-or-later
|
||
|
+/*
|
||
|
+ * sec.c
|
||
|
+ * Copyright 2020 Peter Jones <pjones@redhat.com>
|
||
|
+ *
|
||
|
+ */
|
||
|
+
|
||
|
+#include "efivar.h"
|
||
|
+
|
||
|
+uint32_t PUBLIC
|
||
|
+efi_get_libefisec_version(void)
|
||
|
+{
|
||
|
+ return LIBEFIVAR_VERSION;
|
||
|
+}
|
||
|
+
|
||
|
+// vim:fenc=utf-8:tw=75:noet
|
||
|
--
|
||
|
2.24.1
|
||
|
|