Package: gost-crypto-dkms
Version: 0.3.2-2
Severity: important
Dear Maintainer,
gost-crypto fails to build against Linux 5.6:
...
CC [M] /home/ubuntu/gost-crypto/gost-crypto-0.3.2/gost28147_basic.o
/home/ubuntu/gost-crypto/gost-crypto-0.3.2/gost28147_basic.c: In function
‘crypto_gost28147_set_key’:
/home/ubuntu/gost-crypto/gost-crypto-0.3.2/gost28147_basic.c:103:29: error:
‘CRYPTO_TFM_RES_BAD_KEY_LEN’ undeclared (first use in this function); did you
mean ‘CRYPTO_TFM_NEED_KEY’?
103 | crypto_tfm_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| CRYPTO_TFM_NEED_KEY
/home/ubuntu/gost-crypto/gost-crypto-0.3.2/gost28147_basic.c:103:29: note: each
undeclared identifier is reported only once for each function it appears in
/home/ubuntu/gost-crypto/gost-crypto-0.3.2/gost28147_basic.c: In function
‘gost28147imit_setkey’:
/home/ubuntu/gost-crypto/gost-crypto-0.3.2/gost28147_basic.c:316:31: error:
‘CRYPTO_TFM_RES_BAD_KEY_LEN’ undeclared (first use in this function); did you
mean ‘CRYPTO_TFM_NEED_KEY’?
316 | crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| CRYPTO_TFM_NEED_KEY
make[2]: *** [scripts/Makefile.build:276:
/home/ubuntu/gost-crypto/gost-crypto-0.3.2/gost28147_basic.o] Error 1
...
The attached debdiff fixes it.
-- System Information:
Debian Release: bullseye/sid
APT prefers focal-updates
APT policy: (500, 'focal-updates'), (500, 'focal-security'), (500,
'focal-proposed'), (500, 'focal'), (100, 'focal-backports')
Architecture: amd64 (x86_64)
Kernel: Linux 5.4.0-31-generic (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL
set to C.UTF-8), LANGUAGE=en_US:en (charmap=UTF-8) (ignored: LC_ALL set to
C.UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages gost-crypto-dkms depends on:
ii dkms 2.8.1-5ubuntu1
gost-crypto-dkms recommends no packages.
gost-crypto-dkms suggests no packages.
diff -Nru gost-crypto-0.3.2/debian/changelog gost-crypto-0.3.2/debian/changelog
--- gost-crypto-0.3.2/debian/changelog 2019-08-05 01:15:18.000000000 +0000
+++ gost-crypto-0.3.2/debian/changelog 2020-05-14 09:15:50.000000000 +0000
@@ -1,3 +1,9 @@
+gost-crypto (0.3.2-3) unstable; urgency=medium
+
+ * Fix build for Linux 5.6.
+
+ -- Paolo Pisati <[email protected]> Thu, 14 May 2020 09:15:50 +0000
+
gost-crypto (0.3.2-2) unstable; urgency=medium
* d/control: bump Standards-Version to 4.4.0 (no changes needed)
diff -Nru
gost-crypto-0.3.2/debian/patches/0001-Linux-5.6-garbage-collect-CRYPTO_TFM_RES_BAD_KEY_LEN.patch
gost-crypto-0.3.2/debian/patches/0001-Linux-5.6-garbage-collect-CRYPTO_TFM_RES_BAD_KEY_LEN.patch
---
gost-crypto-0.3.2/debian/patches/0001-Linux-5.6-garbage-collect-CRYPTO_TFM_RES_BAD_KEY_LEN.patch
1970-01-01 00:00:00.000000000 +0000
+++
gost-crypto-0.3.2/debian/patches/0001-Linux-5.6-garbage-collect-CRYPTO_TFM_RES_BAD_KEY_LEN.patch
2020-05-14 09:15:28.000000000 +0000
@@ -0,0 +1,93 @@
+From 7754f7c84e6330a9c0918a4534fedfd1095295c7 Mon Sep 17 00:00:00 2001
+From: Paolo Pisati <[email protected]>
+Date: Thu, 14 May 2020 09:11:04 +0000
+Subject: [PATCH] Linux 5.6: garbage collect CRYPTO_TFM_RES_BAD_KEY_LEN flag
+
+commit 674f368a952c48ede71784935a799a5205b92b6c "crypto: remove
+CRYPTO_TFM_RES_BAD_KEY_LEN" in Linux 5.6 removed the above flag since it wasn't
+enforced anywhere (and thus useless) and any external modules now using it end
+up FTBFS.
+
+Signed-off-by: Paolo Pisati <[email protected]>
+---
+ gost28147_basic.c | 14 +++++---------
+ kuznyechik_generic.c | 4 +---
+ magma_generic.c | 4 +---
+ 3 files changed, 7 insertions(+), 15 deletions(-)
+
+diff --git a/gost28147_basic.c b/gost28147_basic.c
+index 18fa75b..f524519 100644
+--- a/gost28147_basic.c
++++ b/gost28147_basic.c
+@@ -89,9 +89,9 @@ EXPORT_SYMBOL_GPL(gost28147_param_TC26_Z);
+ * @key_len: The size of the key.
+ * @param: GOST parameters to be used.
+ *
+- * Returns 0 on success, on failure the %CRYPTO_TFM_RES_BAD_KEY_LEN flag in
tfm
+- * is set. &crypto_gost28147_ctx _must_ be the private data embedded in @tfm
+- * which is retrieved with crypto_tfm_ctx().
++ * Returns 0 on success. &crypto_gost28147_ctx _must_ be
++ * the private data embedded in @tfm which is retrieved
++ * with crypto_tfm_ctx().
+ */
+ int crypto_gost28147_set_key(struct crypto_tfm *tfm, const u8 *in_key,
+ unsigned int key_len, const struct gost28147_param *param)
+@@ -99,10 +99,8 @@ int crypto_gost28147_set_key(struct crypto_tfm *tfm, const
u8 *in_key,
+ struct crypto_gost28147_ctx *ctx = crypto_tfm_ctx(tfm);
+ int i;
+
+- if (key_len != GOST28147_KEY_SIZE) {
+- crypto_tfm_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
++ if (key_len != GOST28147_KEY_SIZE)
+ return -EINVAL;
+- };
+
+ for (i = 0; i < GOST28147_KEY_SIZE / 4; i++, in_key += 4)
+ ctx->key[i] = get_unaligned_le32(in_key);
+@@ -312,10 +310,8 @@ static int gost28147imit_setkey(struct crypto_shash *tfm,
const u8 *key,
+ struct crypto_gost28147imit_ctx *ctx = crypto_shash_ctx(tfm);
+ int i;
+
+- if (key_len != GOST28147IMIT_KEY_SIZE) {
+- crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
++ if (key_len != GOST28147IMIT_KEY_SIZE)
+ return -EINVAL;
+- };
+
+ for (i = 0; i < GOST28147IMIT_KEY_SIZE / 4; i++, key += 4)
+ ctx->key[i] = get_unaligned_le32(key);
+diff --git a/kuznyechik_generic.c b/kuznyechik_generic.c
+index 538b52f..f72ba6d 100644
+--- a/kuznyechik_generic.c
++++ b/kuznyechik_generic.c
+@@ -169,10 +169,8 @@ static int kuznyechik_set_key(struct crypto_tfm *tfm,
const u8 *in_key,
+ u32 *flags = &tfm->crt_flags;
+ unsigned int i;
+
+- if (key_len != KUZNYECHIK_KEY_SIZE) {
+- *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
++ if (key_len != KUZNYECHIK_KEY_SIZE)
+ return -EINVAL;
+- };
+
+ memcpy(ctx->key, in_key, 32);
+ subkey(ctx->key + 32, ctx->key, 0);
+diff --git a/magma_generic.c b/magma_generic.c
+index 1b1532e..f2d8a71 100644
+--- a/magma_generic.c
++++ b/magma_generic.c
+@@ -26,10 +26,8 @@ static int magma_set_key(struct crypto_tfm *tfm, const u8
*in_key,
+ u32 *flags = &tfm->crt_flags;
+ int i;
+
+- if (key_len != MAGMA_KEY_SIZE) {
+- *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
++ if (key_len != MAGMA_KEY_SIZE)
+ return -EINVAL;
+- };
+
+ for (i = 0; i < MAGMA_KEY_SIZE / 4; i++, in_key += 4)
+ ctx->key[i] = get_unaligned_be32(in_key);
+--
+2.25.1
+
diff -Nru gost-crypto-0.3.2/debian/patches/series
gost-crypto-0.3.2/debian/patches/series
--- gost-crypto-0.3.2/debian/patches/series 1970-01-01 00:00:00.000000000
+0000
+++ gost-crypto-0.3.2/debian/patches/series 2020-05-14 09:15:47.000000000
+0000
@@ -0,0 +1 @@
+0001-Linux-5.6-garbage-collect-CRYPTO_TFM_RES_BAD_KEY_LEN.patch