forked from pool/libgcrypt
Accepting request 1116818 from home:pmonrealgonzalez:branches:devel:libraries:c_c++
- POWER: performance enhancements for cryptography [jsc#PED-5088] * Optimize Chacha20 and Poly1305 for PPC P10 LE: [T6006] - Chacha20/poly1305: Optimized chacha20/poly1305 for P10 operation [rC88fe7ac33eb4] - ppc: enable P10 assembly with ENABLE_FORCE_SOFT_HWFEATURES on arch-3.00 [rC2c5e5ab6843d] * Add patches: - libgcrypt-Chacha20-poly1305-Optimized-chacha20-poly1305.patch - libgcrypt-ppc-enable-P10-assembly-with-ENABLE_FORCE_SOF.patch OBS-URL: https://build.opensuse.org/request/show/1116818 OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/libgcrypt?expand=0&rev=170
This commit is contained in:
parent
20cf449281
commit
30ec5cbd47
1993
libgcrypt-Chacha20-poly1305-Optimized-chacha20-poly1305.patch
Normal file
1993
libgcrypt-Chacha20-poly1305-Optimized-chacha20-poly1305.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,76 @@
|
||||
commit 2c5e5ab6843d747c4b877d2c6f47226f61e9ff14
|
||||
Author: Jussi Kivilinna <jussi.kivilinna@iki.fi>
|
||||
Date: Sun Jun 12 21:51:34 2022 +0300
|
||||
|
||||
ppc enable P10 assembly with ENABLE_FORCE_SOFT_HWFEATURES on arch 3.00
|
||||
|
||||
* cipher/chacha20.c (chacha20_do_setkey) [USE_PPC_VEC]: Enable
|
||||
P10 assembly for HWF_PPC_ARCH_3_00 if ENABLE_FORCE_SOFT_HWFEATURES is
|
||||
defined.
|
||||
* cipher/poly1305.c (poly1305_init) [POLY1305_USE_PPC_VEC]: Likewise.
|
||||
* cipher/rijndael.c (do_setkey) [USE_PPC_CRYPTO_WITH_PPC9LE]: Likewise.
|
||||
---
|
||||
|
||||
This change allows testing P10 implementations with P9 and with QEMU-PPC.
|
||||
|
||||
GnuPG-bug-id: 6006
|
||||
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
|
||||
|
||||
Index: libgcrypt-1.10.2/cipher/chacha20.c
|
||||
===================================================================
|
||||
--- libgcrypt-1.10.2.orig/cipher/chacha20.c
|
||||
+++ libgcrypt-1.10.2/cipher/chacha20.c
|
||||
@@ -484,6 +484,11 @@ chacha20_do_setkey (CHACHA20_context_t *
|
||||
ctx->use_ppc = (features & HWF_PPC_ARCH_2_07) != 0;
|
||||
# ifndef WORDS_BIGENDIAN
|
||||
ctx->use_p10 = (features & HWF_PPC_ARCH_3_10) != 0;
|
||||
+# ifdef ENABLE_FORCE_SOFT_HWFEATURES
|
||||
+ /* HWF_PPC_ARCH_3_10 above is used as soft HW-feature indicator for P10.
|
||||
+ * Actual implementation works with HWF_PPC_ARCH_3_00 also. */
|
||||
+ ctx->use_p10 |= (features & HWF_PPC_ARCH_3_00) != 0;
|
||||
+# endif
|
||||
# endif
|
||||
#endif
|
||||
#ifdef USE_S390X_VX
|
||||
Index: libgcrypt-1.10.2/cipher/poly1305.c
|
||||
===================================================================
|
||||
--- libgcrypt-1.10.2.orig/cipher/poly1305.c
|
||||
+++ libgcrypt-1.10.2/cipher/poly1305.c
|
||||
@@ -90,11 +90,19 @@ static void poly1305_init (poly1305_cont
|
||||
const byte key[POLY1305_KEYLEN])
|
||||
{
|
||||
POLY1305_STATE *st = &ctx->state;
|
||||
+ unsigned int features = _gcry_get_hw_features ();
|
||||
|
||||
#ifdef POLY1305_USE_PPC_VEC
|
||||
- ctx->use_p10 = (_gcry_get_hw_features () & HWF_PPC_ARCH_3_10) != 0;
|
||||
+ ctx->use_p10 = (features & HWF_PPC_ARCH_3_10) != 0;
|
||||
+# ifdef ENABLE_FORCE_SOFT_HWFEATURES
|
||||
+ /* HWF_PPC_ARCH_3_10 above is used as soft HW-feature indicator for P10.
|
||||
+ * Actual implementation works with HWF_PPC_ARCH_3_00 also. */
|
||||
+ ctx->use_p10 |= (features & HWF_PPC_ARCH_3_00) != 0;
|
||||
+# endif
|
||||
#endif
|
||||
|
||||
+ (void)features;
|
||||
+
|
||||
ctx->leftover = 0;
|
||||
|
||||
st->h[0] = 0;
|
||||
Index: libgcrypt-1.10.2/cipher/rijndael.c
|
||||
===================================================================
|
||||
--- libgcrypt-1.10.2.orig/cipher/rijndael.c
|
||||
+++ libgcrypt-1.10.2/cipher/rijndael.c
|
||||
@@ -605,6 +605,12 @@ do_setkey (RIJNDAEL_context *ctx, const
|
||||
bulk_ops->xts_crypt = _gcry_aes_ppc9le_xts_crypt;
|
||||
if (hwfeatures & HWF_PPC_ARCH_3_10) /* for P10 */
|
||||
bulk_ops->gcm_crypt = _gcry_aes_p10le_gcm_crypt;
|
||||
+# ifdef ENABLE_FORCE_SOFT_HWFEATURES
|
||||
+ /* HWF_PPC_ARCH_3_10 above is used as soft HW-feature indicator for P10.
|
||||
+ * Actual implementation works with HWF_PPC_ARCH_3_00 also. */
|
||||
+ if (hwfeatures & HWF_PPC_ARCH_3_00)
|
||||
+ bulk_ops->gcm_crypt = _gcry_aes_p10le_gcm_crypt;
|
||||
+# endif
|
||||
}
|
||||
#endif
|
||||
#ifdef USE_PPC_CRYPTO
|
@ -1,3 +1,16 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 3 12:58:41 UTC 2023 - Pedro Monreal <pmonreal@suse.com>
|
||||
|
||||
- POWER: performance enhancements for cryptography [jsc#PED-5088]
|
||||
* Optimize Chacha20 and Poly1305 for PPC P10 LE: [T6006]
|
||||
- Chacha20/poly1305: Optimized chacha20/poly1305 for
|
||||
P10 operation [rC88fe7ac33eb4]
|
||||
- ppc: enable P10 assembly with ENABLE_FORCE_SOFT_HWFEATURES
|
||||
on arch-3.00 [rC2c5e5ab6843d]
|
||||
* Add patches:
|
||||
- libgcrypt-Chacha20-poly1305-Optimized-chacha20-poly1305.patch
|
||||
- libgcrypt-ppc-enable-P10-assembly-with-ENABLE_FORCE_SOF.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon May 22 11:32:53 UTC 2023 - Pedro Monreal <pmonreal@suse.com>
|
||||
|
||||
|
@ -48,6 +48,9 @@ Patch102: libgcrypt-FIPS-SLI-hash-mac.patch
|
||||
Patch103: libgcrypt-jitterentropy-3.4.0.patch
|
||||
#PATCH-FIX-SUSE bsc#1202117 FIPS: Get most of the entropy from rndjent_poll
|
||||
Patch104: libgcrypt-FIPS-rndjent_poll.patch
|
||||
# POWER patches [jsc#PED-5088] POWER performance enhancements for cryptography
|
||||
Patch200: libgcrypt-Chacha20-poly1305-Optimized-chacha20-poly1305.patch
|
||||
Patch201: libgcrypt-ppc-enable-P10-assembly-with-ENABLE_FORCE_SOF.patch
|
||||
BuildRequires: automake >= 1.14
|
||||
BuildRequires: libgpg-error-devel >= 1.27
|
||||
BuildRequires: libtool
|
||||
|
Loading…
Reference in New Issue
Block a user