diff options
author | Conrad Kostecki <conrad@kostecki.com> | 2018-07-08 00:47:08 +0200 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2018-07-12 00:18:04 +0200 |
commit | c638678c995810739309b8582e90a3957bc98615 (patch) | |
tree | aba4fd0d303a5eba8cbc3c110656c2ea6d9cce9c /app-crypt/sbsigntools | |
parent | dev-python/pytest: Remove obsolete logic (diff) | |
download | gentoo-c638678c995810739309b8582e90a3957bc98615.tar.gz gentoo-c638678c995810739309b8582e90a3957bc98615.tar.bz2 gentoo-c638678c995810739309b8582e90a3957bc98615.zip |
app-crypt/sbsigntool: renamed to app-crypt/sbsigntools
Also changed all required dependencies.
Package-Manager: Portage-2.3.41, Repoman-2.3.9
Closes: https://github.com/gentoo/gentoo/pull/9112
Diffstat (limited to 'app-crypt/sbsigntools')
-rw-r--r-- | app-crypt/sbsigntools/Manifest | 3 | ||||
-rw-r--r-- | app-crypt/sbsigntools/files/0002-image.c-clear-image-variable.patch | 29 | ||||
-rw-r--r-- | app-crypt/sbsigntools/files/0003-Fix-for-multi-sign.patch | 39 | ||||
-rw-r--r-- | app-crypt/sbsigntools/files/sbsigntools-0.9.1-openssl-1.1.0-compat.patch | 152 | ||||
-rw-r--r-- | app-crypt/sbsigntools/metadata.xml | 10 | ||||
-rw-r--r-- | app-crypt/sbsigntools/sbsigntools-0.6-r2.ebuild | 43 | ||||
-rw-r--r-- | app-crypt/sbsigntools/sbsigntools-0.9.1-r1.ebuild | 51 |
7 files changed, 327 insertions, 0 deletions
diff --git a/app-crypt/sbsigntools/Manifest b/app-crypt/sbsigntools/Manifest new file mode 100644 index 000000000000..a054ddc31c94 --- /dev/null +++ b/app-crypt/sbsigntools/Manifest @@ -0,0 +1,3 @@ +DIST sbsigntool-0.8-ccan.tar.gz 113537 BLAKE2B 8fbf27463d30c1895930628a145be2d521ae4f6adb7af3299bf2f5f4319fd643df0a07347ef6851bd41d233af4c3fc5f77002771af1c43aa0f20665aef2390b8 SHA512 6857096879f116f1802eb6b44789cbea7bb24440bc0f16503aeadf5f276fa45943f322f844dbb9abee717655205d82b830143be3a7f4424fd4146b9360674a09 +DIST sbsigntool_0.6.orig.tar.gz 212375 BLAKE2B fab9141c7fbfa01ec24f975503ac83be4ae0664251a1311afb3d95124fec3750ce20a5ffab35b6965d4ee4585ab4ee91f25ae49488214a983b6fc006071d0968 SHA512 ed314d1cb7278cf5f27d4c3cd17f2195678419a7f9e47770429b6f95df35f7df035331e60c45970183ddd9b150a9b752f876c777929598b0525872b3255af95c +DIST sbsigntools-0.9.1.tar.gz 56497 BLAKE2B 22791bd4b490f36963a19e82da3ce7b93a56d948bf44d1ffdb62fa3291a3f815b2c19d68f9180b607c2b1438f656367ec1f9002f0b1225734d16a9aadc6d20ec SHA512 ae16232327c098bbc60a9701185d856d851cb7fa8f62be64d3c8f75c8b274b8521fcc4212226189def05db980690878ee6ac9a9b418166c92442aaf35e790d29 diff --git a/app-crypt/sbsigntools/files/0002-image.c-clear-image-variable.patch b/app-crypt/sbsigntools/files/0002-image.c-clear-image-variable.patch new file mode 100644 index 000000000000..dfe183e66cd2 --- /dev/null +++ b/app-crypt/sbsigntools/files/0002-image.c-clear-image-variable.patch @@ -0,0 +1,29 @@ +From 21e984fa9d93a760cc03f5d9d13d023809227df2 Mon Sep 17 00:00:00 2001 +From: James Bottomley <JBottomley@Parallels.com> +Date: Thu, 11 Apr 2013 21:12:17 -0700 +Subject: image.c: clear image variable + +Not zeroing the image after talloc occasionally leads to a segfault because +the programme thinks it has a signature when in reality it just has a junk +pointer and segfaults. + +Signed-off-by: James Bottomley <JBottomley@Parallels.com> +--- + src/image.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/image.c b/src/image.c +index cc55791..10eba0e 100644 +--- a/src/image.c ++++ b/src/image.c +@@ -401,6 +401,7 @@ struct image *image_load(const char *filename) + return NULL; + } + ++ memset(image, 0, sizeof(*image)); + rc = fileio_read_file(image, filename, &image->buf, &image->size); + if (rc) + goto err; +-- +1.8.2.1 + diff --git a/app-crypt/sbsigntools/files/0003-Fix-for-multi-sign.patch b/app-crypt/sbsigntools/files/0003-Fix-for-multi-sign.patch new file mode 100644 index 000000000000..f42c69616d13 --- /dev/null +++ b/app-crypt/sbsigntools/files/0003-Fix-for-multi-sign.patch @@ -0,0 +1,39 @@ +From e58a528ef57e53008222f238cce7c326a14572e2 Mon Sep 17 00:00:00 2001 +From: James Bottomley <JBottomley@Parallels.com> +Date: Mon, 30 Sep 2013 19:25:37 -0700 +Subject: [PATCH 4/4] Fix for multi-sign + +The new Tianocore multi-sign code fails now for images signed with +sbsigntools. The reason is that we don't actually align the signature table, +we just slap it straight after the binary data. Unfortunately, the new +multi-signature code checks that our alignment offsets are correct and fails +the signature for this reason. Fix by adding junk to the end of the image to +align the signature section. + +Signed-off-by: James Bottomley <JBottomley@Parallels.com> +--- + src/image.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/src/image.c b/src/image.c +index 10eba0e..519e288 100644 +--- a/src/image.c ++++ b/src/image.c +@@ -385,7 +385,13 @@ static int image_find_regions(struct image *image) + + /* record the size of non-signature data */ + r = &image->checksum_regions[image->n_checksum_regions - 1]; +- image->data_size = (r->data - (void *)image->buf) + r->size; ++ /* ++ * The new Tianocore multisign does a stricter check of the signatures ++ * in particular, the signature table must start at an aligned offset ++ * fix this by adding bytes to the end of the text section (which must ++ * be included in the hash) ++ */ ++ image->data_size = align_up((r->data - (void *)image->buf) + r->size, 8); + + return 0; + } +-- +1.8.4 + diff --git a/app-crypt/sbsigntools/files/sbsigntools-0.9.1-openssl-1.1.0-compat.patch b/app-crypt/sbsigntools/files/sbsigntools-0.9.1-openssl-1.1.0-compat.patch new file mode 100644 index 000000000000..2f9364f246ee --- /dev/null +++ b/app-crypt/sbsigntools/files/sbsigntools-0.9.1-openssl-1.1.0-compat.patch @@ -0,0 +1,152 @@ +diff --git a/src/fileio.c b/src/fileio.c +index 032eb1e..09bc3aa 100644 +--- a/src/fileio.c ++++ b/src/fileio.c +@@ -40,6 +40,7 @@ + #include <openssl/pem.h> + #include <openssl/err.h> + #include <openssl/engine.h> ++#include <openssl/ui.h> + + #include <ccan/talloc/talloc.h> + #include <ccan/read_write_all/read_write_all.h> +diff --git a/src/idc.c b/src/idc.c +index 236cefd..6d87bd4 100644 +--- a/src/idc.c ++++ b/src/idc.c +@@ -238,7 +238,11 @@ struct idc *IDC_get(PKCS7 *p7, BIO *bio) + + /* extract the idc from the signed PKCS7 'other' data */ + str = p7->d.sign->contents->d.other->value.asn1_string; ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + idcbuf = buf = ASN1_STRING_data(str); ++#else ++ idcbuf = buf = ASN1_STRING_get0_data(str); ++#endif + idc = d2i_IDC(NULL, &buf, ASN1_STRING_length(str)); + + /* If we were passed a BIO, write the idc data, minus type and length, +@@ -289,7 +293,11 @@ int IDC_check_hash(struct idc *idc, struct image *image) + } + + /* check hash against the one we calculated from the image */ ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + buf = ASN1_STRING_data(str); ++#else ++ buf = ASN1_STRING_get0_data(str); ++#endif + if (memcmp(buf, sha, sizeof(sha))) { + fprintf(stderr, "Hash doesn't match image\n"); + fprintf(stderr, " got: %s\n", sha256_str(buf)); +diff --git a/src/sbattach.c b/src/sbattach.c +index a0c01b8..e89a23e 100644 +--- a/src/sbattach.c ++++ b/src/sbattach.c +@@ -231,6 +231,7 @@ int main(int argc, char **argv) + return EXIT_FAILURE; + } + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + ERR_load_crypto_strings(); + OpenSSL_add_all_digests(); + OPENSSL_config(NULL); +@@ -239,6 +240,7 @@ int main(int argc, char **argv) + * module isn't present). In either case ignore the errors + * (malloc will cause other failures out lower down */ + ERR_clear_error(); ++#endif + + image = image_load(image_filename); + if (!image) { +diff --git a/src/sbkeysync.c b/src/sbkeysync.c +index 7b17f40..419b1e7 100644 +--- a/src/sbkeysync.c ++++ b/src/sbkeysync.c +@@ -208,7 +208,11 @@ static int x509_key_parse(struct key *key, uint8_t *data, size_t len) + goto out; + + key->id_len = ASN1_STRING_length(serial); ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + key->id = talloc_memdup(key, ASN1_STRING_data(serial), key->id_len); ++#else ++ key->id = talloc_memdup(key, ASN1_STRING_get0_data(serial), key->id_len); ++#endif + + key->description = talloc_array(key, char, description_len); + X509_NAME_oneline(X509_get_subject_name(x509), +@@ -927,6 +931,7 @@ int main(int argc, char **argv) + return EXIT_FAILURE; + } + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + ERR_load_crypto_strings(); + OpenSSL_add_all_digests(); + OpenSSL_add_all_ciphers(); +@@ -936,6 +941,7 @@ int main(int argc, char **argv) + * module isn't present). In either case ignore the errors + * (malloc will cause other failures out lower down */ + ERR_clear_error(); ++#endif + + ctx->filesystem_keys = init_keyset(ctx); + ctx->firmware_keys = init_keyset(ctx); +diff --git a/src/sbsign.c b/src/sbsign.c +index ff1fdfd..78d8d64 100644 +--- a/src/sbsign.c ++++ b/src/sbsign.c +@@ -188,6 +188,7 @@ int main(int argc, char **argv) + + talloc_steal(ctx, ctx->image); + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + ERR_load_crypto_strings(); + OpenSSL_add_all_digests(); + OpenSSL_add_all_ciphers(); +@@ -197,6 +198,7 @@ int main(int argc, char **argv) + * module isn't present). In either case ignore the errors + * (malloc will cause other failures out lower down */ + ERR_clear_error(); ++#endif + if (engine) + pkey = fileio_read_engine_key(engine, keyfilename); + else +diff --git a/src/sbvarsign.c b/src/sbvarsign.c +index 7dcbe51..9319c8b 100644 +--- a/src/sbvarsign.c ++++ b/src/sbvarsign.c +@@ -509,6 +509,7 @@ int main(int argc, char **argv) + return EXIT_FAILURE; + } + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + /* initialise openssl */ + OpenSSL_add_all_digests(); + OpenSSL_add_all_ciphers(); +@@ -519,6 +520,7 @@ int main(int argc, char **argv) + * module isn't present). In either case ignore the errors + * (malloc will cause other failures out lower down */ + ERR_clear_error(); ++#endif + + /* set up the variable signing context */ + varname = argv[optind]; +diff --git a/src/sbverify.c b/src/sbverify.c +index 3920d91..d0b203a 100644 +--- a/src/sbverify.c ++++ b/src/sbverify.c +@@ -250,6 +250,7 @@ int main(int argc, char **argv) + verbose = false; + detached_sig_filename = NULL; + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + OpenSSL_add_all_digests(); + ERR_load_crypto_strings(); + OPENSSL_config(NULL); +@@ -258,6 +259,7 @@ int main(int argc, char **argv) + * module isn't present). In either case ignore the errors + * (malloc will cause other failures out lower down */ + ERR_clear_error(); ++#endif + + for (;;) { + int idx; diff --git a/app-crypt/sbsigntools/metadata.xml b/app-crypt/sbsigntools/metadata.xml new file mode 100644 index 000000000000..20001d6eb7ad --- /dev/null +++ b/app-crypt/sbsigntools/metadata.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>tamiko@gentoo.org</email> + </maintainer> + <upstream> + <remote-id type="launchpad">ubuntu</remote-id> + </upstream> +</pkgmetadata> diff --git a/app-crypt/sbsigntools/sbsigntools-0.6-r2.ebuild b/app-crypt/sbsigntools/sbsigntools-0.6-r2.ebuild new file mode 100644 index 000000000000..519693684dce --- /dev/null +++ b/app-crypt/sbsigntools/sbsigntools-0.6-r2.ebuild @@ -0,0 +1,43 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI="5" + +MY_PN="${PN::-1}" + +inherit eutils toolchain-funcs + +DESCRIPTION="Utilities for signing and verifying files for UEFI Secure Boot" +HOMEPAGE="https://launchpad.net/ubuntu/+source/sbsigntool" +SRC_URI="https://launchpad.net/ubuntu/+archive/primary/+files/${MY_PN}_${PV}.orig.tar.gz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="amd64 x86" +IUSE="" + +RDEPEND=" + dev-libs/openssl:0= + sys-apps/util-linux" +DEPEND="${RDEPEND} + sys-apps/help2man + sys-boot/gnu-efi + sys-libs/binutils-libs + virtual/pkgconfig" + +S="${WORKDIR}/${MY_PN}-${PV}" + +src_prepare() { + local iarch + case ${ARCH} in + ia64) iarch=ia64 ;; + x86) iarch=ia32 ;; + amd64) iarch=x86_64 ;; + *) die "unsupported architecture: ${ARCH}" ;; + esac + sed -i "/^EFI_ARCH=/s:=.*:=${iarch}:" configure || die + sed -i 's/-m64$/& -march=x86-64/' tests/Makefile.in || die + sed -i "/^AR /s:=.*:= $(tc-getAR):" lib/ccan/Makefile.in || die #481480 + epatch "${FILESDIR}"/0002-image.c-clear-image-variable.patch + epatch "${FILESDIR}"/0003-Fix-for-multi-sign.patch +} diff --git a/app-crypt/sbsigntools/sbsigntools-0.9.1-r1.ebuild b/app-crypt/sbsigntools/sbsigntools-0.9.1-r1.ebuild new file mode 100644 index 000000000000..f87b1609d9d3 --- /dev/null +++ b/app-crypt/sbsigntools/sbsigntools-0.9.1-r1.ebuild @@ -0,0 +1,51 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI="6" + +MY_PN="${PN::-1}" + +inherit eutils autotools + +DESCRIPTION="Utilities for signing and verifying files for UEFI Secure Boot" +HOMEPAGE="https://git.kernel.org/cgit/linux/kernel/git/jejb/sbsigntools.git/" +SRC_URI="https://git.kernel.org/pub/scm/linux/kernel/git/jejb/${PN}.git/snapshot/${P}.tar.gz + https://dev.gentoo.org/~tamiko/distfiles/${MY_PN}-0.8-ccan.tar.gz" + +LICENSE="GPL-3 LGPL-3 LGPL-2.1 CC0-1.0" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="" + +RDEPEND=" + dev-libs/openssl:0= + sys-apps/util-linux" +DEPEND="${RDEPEND} + sys-apps/help2man + sys-boot/gnu-efi + sys-libs/binutils-libs + virtual/pkgconfig" + +PATCHES=( + "${FILESDIR}"/${P}-openssl-1.1.0-compat.patch +) + +src_prepare() { + mv "${WORKDIR}"/lib/ccan "${S}"/lib || die "mv failed" + rmdir "${WORKDIR}"/lib || die "rmdir failed" + + local iarch + case ${ARCH} in + amd64) iarch=x86_64 ;; + arm64) iarch=aarch64 ;; + ia64) iarch=ia64 ;; + x86) iarch=ia32 ;; + *) die "unsupported architecture: ${ARCH}" ;; + esac + sed -i "/^EFI_ARCH=/s:=.*:=${iarch}:" configure.ac || die + sed -i 's/-m64$/& -march=x86-64/' tests/Makefile.am || die + sed -i "/^AR /s:=.*:= $(tc-getAR):" lib/ccan/Makefile.in || die #481480 + + default + eautoreconf +} |