FreeBSD Bugzilla – Attachment 214775 Details for
Bug 200142
[exp-run] [patch] Make liblzma use libmd
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Updated patch against -HEAD
D24805.patch (text/plain), 9.77 KB, created by
Xin LI
on 2020-05-23 10:00:34 UTC
(
hide
)
Description:
Updated patch against -HEAD
Filename:
MIME Type:
Creator:
Xin LI
Created:
2020-05-23 10:00:34 UTC
Size:
9.77 KB
patch
obsolete
>From 2f6c0259c2ab351640c1bab7ca27e2f0343566ba Mon Sep 17 00:00:00 2001 >From: Xin Li <delphij@FreeBSD.org> >Date: Sun, 10 May 2020 20:00:49 -0700 >Subject: [PATCH] liblzma: Make liblzma use libmd implementation of SHA256. > >PR: 200142 >Differential Revision: https://reviews.freebsd.org/D24805 >--- > contrib/xz/src/liblzma/check/sha256.c | 196 -------------------------- > lib/liblzma/Makefile | 16 +-- > lib/liblzma/Symbol.map | 3 - > lib/liblzma/config.h | 9 +- > share/mk/src.libnames.mk | 2 +- > 5 files changed, 12 insertions(+), 214 deletions(-) > delete mode 100644 contrib/xz/src/liblzma/check/sha256.c > >diff --git a/contrib/xz/src/liblzma/check/sha256.c b/contrib/xz/src/liblzma/check/sha256.c >deleted file mode 100644 >index 5eede5ce05bc..000000000000 >--- a/contrib/xz/src/liblzma/check/sha256.c >+++ /dev/null >@@ -1,196 +0,0 @@ >-/////////////////////////////////////////////////////////////////////////////// >-// >-/// \file sha256.c >-/// \brief SHA-256 >-/// >-/// \todo Crypto++ has x86 ASM optimizations. They use SSE so if they >-/// are imported to liblzma, SSE instructions need to be used >-/// conditionally to keep the code working on older boxes. >-// >-// This code is based on the code found from 7-Zip, which has a modified >-// version of the SHA-256 found from Crypto++ <http://www.cryptopp.com/>. >-// The code was modified a little to fit into liblzma. >-// >-// Authors: Kevin Springle >-// Wei Dai >-// Igor Pavlov >-// Lasse Collin >-// >-// This file has been put into the public domain. >-// You can do whatever you want with this file. >-// >-/////////////////////////////////////////////////////////////////////////////// >- >-#include "check.h" >- >-// Rotate a uint32_t. GCC can optimize this to a rotate instruction >-// at least on x86. >-static inline uint32_t >-rotr_32(uint32_t num, unsigned amount) >-{ >- return (num >> amount) | (num << (32 - amount)); >-} >- >-#define blk0(i) (W[i] = conv32be(data[i])) >-#define blk2(i) (W[i & 15] += s1(W[(i - 2) & 15]) + W[(i - 7) & 15] \ >- + s0(W[(i - 15) & 15])) >- >-#define Ch(x, y, z) (z ^ (x & (y ^ z))) >-#define Maj(x, y, z) ((x & (y ^ z)) + (y & z)) >- >-#define a(i) T[(0 - i) & 7] >-#define b(i) T[(1 - i) & 7] >-#define c(i) T[(2 - i) & 7] >-#define d(i) T[(3 - i) & 7] >-#define e(i) T[(4 - i) & 7] >-#define f(i) T[(5 - i) & 7] >-#define g(i) T[(6 - i) & 7] >-#define h(i) T[(7 - i) & 7] >- >-#define R(i, j, blk) \ >- h(i) += S1(e(i)) + Ch(e(i), f(i), g(i)) + SHA256_K[i + j] + blk; \ >- d(i) += h(i); \ >- h(i) += S0(a(i)) + Maj(a(i), b(i), c(i)) >-#define R0(i) R(i, 0, blk0(i)) >-#define R2(i) R(i, j, blk2(i)) >- >-#define S0(x) rotr_32(x ^ rotr_32(x ^ rotr_32(x, 9), 11), 2) >-#define S1(x) rotr_32(x ^ rotr_32(x ^ rotr_32(x, 14), 5), 6) >-#define s0(x) (rotr_32(x ^ rotr_32(x, 11), 7) ^ (x >> 3)) >-#define s1(x) (rotr_32(x ^ rotr_32(x, 2), 17) ^ (x >> 10)) >- >- >-static const uint32_t SHA256_K[64] = { >- 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, >- 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, >- 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, >- 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, >- 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, >- 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, >- 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, >- 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, >- 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, >- 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, >- 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, >- 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, >- 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, >- 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, >- 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, >- 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2, >-}; >- >- >-static void >-transform(uint32_t state[8], const uint32_t data[16]) >-{ >- uint32_t W[16]; >- uint32_t T[8]; >- >- // Copy state[] to working vars. >- memcpy(T, state, sizeof(T)); >- >- // The first 16 operations unrolled >- R0( 0); R0( 1); R0( 2); R0( 3); >- R0( 4); R0( 5); R0( 6); R0( 7); >- R0( 8); R0( 9); R0(10); R0(11); >- R0(12); R0(13); R0(14); R0(15); >- >- // The remaining 48 operations partially unrolled >- for (unsigned int j = 16; j < 64; j += 16) { >- R2( 0); R2( 1); R2( 2); R2( 3); >- R2( 4); R2( 5); R2( 6); R2( 7); >- R2( 8); R2( 9); R2(10); R2(11); >- R2(12); R2(13); R2(14); R2(15); >- } >- >- // Add the working vars back into state[]. >- state[0] += a(0); >- state[1] += b(0); >- state[2] += c(0); >- state[3] += d(0); >- state[4] += e(0); >- state[5] += f(0); >- state[6] += g(0); >- state[7] += h(0); >-} >- >- >-static void >-process(lzma_check_state *check) >-{ >- transform(check->state.sha256.state, check->buffer.u32); >- return; >-} >- >- >-extern void >-lzma_sha256_init(lzma_check_state *check) >-{ >- static const uint32_t s[8] = { >- 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, >- 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19, >- }; >- >- memcpy(check->state.sha256.state, s, sizeof(s)); >- check->state.sha256.size = 0; >- >- return; >-} >- >- >-extern void >-lzma_sha256_update(const uint8_t *buf, size_t size, lzma_check_state *check) >-{ >- // Copy the input data into a properly aligned temporary buffer. >- // This way we can be called with arbitrarily sized buffers >- // (no need to be multiple of 64 bytes), and the code works also >- // on architectures that don't allow unaligned memory access. >- while (size > 0) { >- const size_t copy_start = check->state.sha256.size & 0x3F; >- size_t copy_size = 64 - copy_start; >- if (copy_size > size) >- copy_size = size; >- >- memcpy(check->buffer.u8 + copy_start, buf, copy_size); >- >- buf += copy_size; >- size -= copy_size; >- check->state.sha256.size += copy_size; >- >- if ((check->state.sha256.size & 0x3F) == 0) >- process(check); >- } >- >- return; >-} >- >- >-extern void >-lzma_sha256_finish(lzma_check_state *check) >-{ >- // Add padding as described in RFC 3174 (it describes SHA-1 but >- // the same padding style is used for SHA-256 too). >- size_t pos = check->state.sha256.size & 0x3F; >- check->buffer.u8[pos++] = 0x80; >- >- while (pos != 64 - 8) { >- if (pos == 64) { >- process(check); >- pos = 0; >- } >- >- check->buffer.u8[pos++] = 0x00; >- } >- >- // Convert the message size from bytes to bits. >- check->state.sha256.size *= 8; >- >- check->buffer.u64[(64 - 8) / 8] = conv64be(check->state.sha256.size); >- >- process(check); >- >- for (size_t i = 0; i < 8; ++i) >- check->buffer.u32[i] = conv32be(check->state.sha256.state[i]); >- >- return; >-} >diff --git a/lib/liblzma/Makefile b/lib/liblzma/Makefile >index 9dd773514844..63424bd3dcc2 100644 >--- a/lib/liblzma/Makefile >+++ b/lib/liblzma/Makefile >@@ -78,8 +78,7 @@ SRCS+= common.c \ > .PATH: ${LZMADIR}/check > SRCS+= check.c \ > crc32_table.c \ >- crc64_table.c \ >- sha256.c >+ crc64_table.c > .if defined(MACHINE_ARCH) && ${MACHINE_ARCH} == "i386" > SRCS+= crc32_x86.S \ > crc64_x86.S >@@ -125,11 +124,11 @@ SRCS+= simple_coder.c \ > > .PATH: ${LZMADIR} > >-VERSION_MAJOR!= awk '$$1 == "\#define" && $$2 == "LZMA_VERSION_MAJOR" {print $$3 } ' \ >+VERSION_MAJOR!= sed -n '/define.*LZMA_VERSION_MAJOR/{s,[^0-9.],,gp;q;}' \ > ${LZMADIR}/api/lzma/version.h >-VERSION_MINOR!= awk '$$1 == "\#define" && $$2 == "LZMA_VERSION_MINOR" {print $$3 } ' \ >+VERSION_MINOR!= sed -n '/define.*LZMA_VERSION_MINOR/{s,[^0-9.],,gp;q;}' \ > ${LZMADIR}/api/lzma/version.h >-VERSION_PATCH!= awk '$$1 == "\#define" && $$2 == "LZMA_VERSION_PATCH" {print $$3 } ' \ >+VERSION_PATCH!= sed -n '/define.*LZMA_VERSION_PATCH/{s,[^0-9.],,gp;q;}' \ > ${LZMADIR}/api/lzma/version.h > > WARNS?= 3 >@@ -147,7 +146,7 @@ CFLAGS+= -DHAVE_CONFIG_H \ > -I${LZMADIR}/simple \ > -I${LZMADIR:H}/common > >-LIBADD+= pthread >+LIBADD+= md pthread > > VERSION_DEF= ${.CURDIR}/Versions.def > SYMBOL_MAPS= ${.CURDIR}/Symbol.map >@@ -160,10 +159,11 @@ FILESDIR= ${LIBDATADIR}/pkgconfig > > liblzma.pc: liblzma.pc.in > sed -e 's,@prefix@,/usr,g ; \ >- s,@exec_prefix@,/usr,g ; \ >+ s,@exec_prefix@,/usr,g ; \ > s,@libdir@,/usr/lib,g ; \ > s,@includedir@,/usr/include,g ; \ >- s,@PACKAGE_URL@,http://tukaani.org/xz/,g ; \ >+ s,@LIBS@,-pthread -lmd,g ; \ >+ s,@PACKAGE_URL@,https://tukaani.org/xz/,g ; \ > s,@PACKAGE_VERSION@,${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH},g ; \ > s,@PTHREAD_CFLAGS@,,g ; \ > s,@PTHREAD_LIBS@,,g' ${.ALLSRC} > ${.TARGET} >diff --git a/lib/liblzma/Symbol.map b/lib/liblzma/Symbol.map >index c2976253b979..f49f29f24987 100644 >--- a/lib/liblzma/Symbol.map >+++ b/lib/liblzma/Symbol.map >@@ -180,9 +180,6 @@ XZprivate_1.0 { > lzma_raw_coder_memusage; > lzma_raw_decoder_init; > lzma_raw_encoder_init; >- lzma_sha256_finish; >- lzma_sha256_init; >- lzma_sha256_update; > lzma_simple_arm_decoder_init; > lzma_simple_arm_encoder_init; > lzma_simple_armthumb_decoder_init; >diff --git a/lib/liblzma/config.h b/lib/liblzma/config.h >index 613d928b7802..f674cbf66fdb 100644 >--- a/lib/liblzma/config.h >+++ b/lib/liblzma/config.h >@@ -211,16 +211,13 @@ > /* #undef HAVE_SHA256INIT */ > > /* Define to 1 if the system has the type `SHA256_CTX'. */ >-/* FreeBSD - disabled libmd SHA256 for now */ >-/* #undef HAVE_SHA256_CTX */ >+#define HAVE_SHA256_CTX 1 > > /* Define to 1 if you have the <sha256.h> header file. */ >-/* FreeBSD - disabled libmd SHA256 for now */ >-/* #undef HAVE_SHA256_H */ >+#define HAVE_SHA256_H 1 > > /* Define to 1 if you have the `SHA256_Init' function. */ >-/* FreeBSD - disabled libmd SHA256 for now */ >-/* #undef HAVE_SHA256_INIT */ >+#define HAVE_SHA256_INIT 1 > > /* Define to 1 if the system has the type `SHA2_CTX'. */ > /* #undef HAVE_SHA2_CTX */ >diff --git a/share/mk/src.libnames.mk b/share/mk/src.libnames.mk >index b827dafb5065..626c203c13de 100644 >--- a/share/mk/src.libnames.mk >+++ b/share/mk/src.libnames.mk >@@ -350,7 +350,7 @@ _DP_heimipcs= heimbase roken pthread > _DP_kafs5= asn1 krb5 roken > _DP_krb5+= asn1 com_err crypt crypto hx509 roken wind heimbase heimipcc > _DP_gssapi_krb5+= gssapi krb5 crypto roken asn1 com_err >-_DP_lzma= pthread >+_DP_lzma= md pthread > _DP_ucl= m > _DP_vmmapi= util > _DP_opencsd= cxxrt >-- >2.26.2 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 200142
:
156677
|
214505
| 214775 |
214776
|
215029