Browse code

Replace 7zip sha256 with clam sha256

Steve Morgan authored on 2013/10/10 07:14:33
Showing 4 changed files
1 1
deleted file mode 100755
... ...
@@ -1,204 +0,0 @@
1
-/* Crypto/Sha256.c -- SHA-256 Hash
2
-2010-06-11 : Igor Pavlov : Public domain
3
-This code is based on public domain code from Wei Dai's Crypto++ library. */
4
-
5
-#include "RotateDefs.h"
6
-#include "Sha256.h"
7
-
8
-/* define it for speed optimization */
9
-/* #define _SHA256_UNROLL */
10
-/* #define _SHA256_UNROLL2 */
11
-
12
-void Sha256_Init(CSha256 *p)
13
-{
14
-  p->state[0] = 0x6a09e667;
15
-  p->state[1] = 0xbb67ae85;
16
-  p->state[2] = 0x3c6ef372;
17
-  p->state[3] = 0xa54ff53a;
18
-  p->state[4] = 0x510e527f;
19
-  p->state[5] = 0x9b05688c;
20
-  p->state[6] = 0x1f83d9ab;
21
-  p->state[7] = 0x5be0cd19;
22
-  p->count = 0;
23
-}
24
-
25
-#define S0(x) (rotrFixed(x, 2) ^ rotrFixed(x,13) ^ rotrFixed(x, 22))
26
-#define S1(x) (rotrFixed(x, 6) ^ rotrFixed(x,11) ^ rotrFixed(x, 25))
27
-#define s0(x) (rotrFixed(x, 7) ^ rotrFixed(x,18) ^ (x >> 3))
28
-#define s1(x) (rotrFixed(x,17) ^ rotrFixed(x,19) ^ (x >> 10))
29
-
30
-#define blk0(i) (W[i] = data[i])
31
-#define blk2(i) (W[i&15] += s1(W[(i-2)&15]) + W[(i-7)&15] + s0(W[(i-15)&15]))
32
-
33
-#define Ch(x,y,z) (z^(x&(y^z)))
34
-#define Maj(x,y,z) ((x&y)|(z&(x|y)))
35
-
36
-#define a(i) T[(0-(i))&7]
37
-#define b(i) T[(1-(i))&7]
38
-#define c(i) T[(2-(i))&7]
39
-#define d(i) T[(3-(i))&7]
40
-#define e(i) T[(4-(i))&7]
41
-#define f(i) T[(5-(i))&7]
42
-#define g(i) T[(6-(i))&7]
43
-#define h(i) T[(7-(i))&7]
44
-
45
-
46
-#ifdef _SHA256_UNROLL2
47
-
48
-#define R(a,b,c,d,e,f,g,h, i) h += S1(e) + Ch(e,f,g) + K[i+j] + (j?blk2(i):blk0(i));\
49
-  d += h; h += S0(a) + Maj(a, b, c)
50
-
51
-#define RX_8(i) \
52
-  R(a,b,c,d,e,f,g,h, i); \
53
-  R(h,a,b,c,d,e,f,g, i+1); \
54
-  R(g,h,a,b,c,d,e,f, i+2); \
55
-  R(f,g,h,a,b,c,d,e, i+3); \
56
-  R(e,f,g,h,a,b,c,d, i+4); \
57
-  R(d,e,f,g,h,a,b,c, i+5); \
58
-  R(c,d,e,f,g,h,a,b, i+6); \
59
-  R(b,c,d,e,f,g,h,a, i+7)
60
-
61
-#else
62
-
63
-#define R(i) h(i) += S1(e(i)) + Ch(e(i),f(i),g(i)) + K[i+j] + (j?blk2(i):blk0(i));\
64
-  d(i) += h(i); h(i) += S0(a(i)) + Maj(a(i), b(i), c(i))
65
-
66
-#ifdef _SHA256_UNROLL
67
-
68
-#define RX_8(i) R(i+0); R(i+1); R(i+2); R(i+3); R(i+4); R(i+5); R(i+6); R(i+7);
69
-
70
-#endif
71
-
72
-#endif
73
-
74
-static const UInt32 K[64] = {
75
-  0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
76
-  0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
77
-  0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
78
-  0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
79
-  0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
80
-  0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
81
-  0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
82
-  0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
83
-  0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
84
-  0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
85
-  0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
86
-  0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
87
-  0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
88
-  0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
89
-  0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
90
-  0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
91
-};
92
-
93
-static void Sha256_Transform(UInt32 *state, const UInt32 *data)
94
-{
95
-  UInt32 W[16];
96
-  unsigned j;
97
-  #ifdef _SHA256_UNROLL2
98
-  UInt32 a,b,c,d,e,f,g,h;
99
-  a = state[0];
100
-  b = state[1];
101
-  c = state[2];
102
-  d = state[3];
103
-  e = state[4];
104
-  f = state[5];
105
-  g = state[6];
106
-  h = state[7];
107
-  #else
108
-  UInt32 T[8];
109
-  for (j = 0; j < 8; j++)
110
-    T[j] = state[j];
111
-  #endif
112
-
113
-  for (j = 0; j < 64; j += 16)
114
-  {
115
-    #if defined(_SHA256_UNROLL) || defined(_SHA256_UNROLL2)
116
-    RX_8(0); RX_8(8);
117
-    #else
118
-    unsigned i;
119
-    for (i = 0; i < 16; i++) { R(i); }
120
-    #endif
121
-  }
122
-
123
-  #ifdef _SHA256_UNROLL2
124
-  state[0] += a;
125
-  state[1] += b;
126
-  state[2] += c;
127
-  state[3] += d;
128
-  state[4] += e;
129
-  state[5] += f;
130
-  state[6] += g;
131
-  state[7] += h;
132
-  #else
133
-  for (j = 0; j < 8; j++)
134
-    state[j] += T[j];
135
-  #endif
136
-  
137
-  /* Wipe variables */
138
-  /* memset(W, 0, sizeof(W)); */
139
-  /* memset(T, 0, sizeof(T)); */
140
-}
141
-
142
-#undef S0
143
-#undef S1
144
-#undef s0
145
-#undef s1
146
-
147
-static void Sha256_WriteByteBlock(CSha256 *p)
148
-{
149
-  UInt32 data32[16];
150
-  unsigned i;
151
-  for (i = 0; i < 16; i++)
152
-    data32[i] =
153
-      ((UInt32)(p->buffer[i * 4    ]) << 24) +
154
-      ((UInt32)(p->buffer[i * 4 + 1]) << 16) +
155
-      ((UInt32)(p->buffer[i * 4 + 2]) <<  8) +
156
-      ((UInt32)(p->buffer[i * 4 + 3]));
157
-  Sha256_Transform(p->state, data32);
158
-}
159
-
160
-void Sha256_Update(CSha256 *p, const Byte *data, size_t size)
161
-{
162
-  UInt32 curBufferPos = (UInt32)p->count & 0x3F;
163
-  while (size > 0)
164
-  {
165
-    p->buffer[curBufferPos++] = *data++;
166
-    p->count++;
167
-    size--;
168
-    if (curBufferPos == 64)
169
-    {
170
-      curBufferPos = 0;
171
-      Sha256_WriteByteBlock(p);
172
-    }
173
-  }
174
-}
175
-
176
-void Sha256_Final(CSha256 *p, Byte *digest)
177
-{
178
-  UInt64 lenInBits = (p->count << 3);
179
-  UInt32 curBufferPos = (UInt32)p->count & 0x3F;
180
-  unsigned i;
181
-  p->buffer[curBufferPos++] = 0x80;
182
-  while (curBufferPos != (64 - 8))
183
-  {
184
-    curBufferPos &= 0x3F;
185
-    if (curBufferPos == 0)
186
-      Sha256_WriteByteBlock(p);
187
-    p->buffer[curBufferPos++] = 0;
188
-  }
189
-  for (i = 0; i < 8; i++)
190
-  {
191
-    p->buffer[curBufferPos++] = (Byte)(lenInBits >> 56);
192
-    lenInBits <<= 8;
193
-  }
194
-  Sha256_WriteByteBlock(p);
195
-
196
-  for (i = 0; i < 8; i++)
197
-  {
198
-    *digest++ = (Byte)(p->state[i] >> 24);
199
-    *digest++ = (Byte)(p->state[i] >> 16);
200
-    *digest++ = (Byte)(p->state[i] >> 8);
201
-    *digest++ = (Byte)(p->state[i]);
202
-  }
203
-  Sha256_Init(p);
204
-}
... ...
@@ -10,6 +10,9 @@ EXTERN_C_BEGIN
10 10
 
11 11
 #define SHA256_DIGEST_SIZE 32
12 12
 
13
+#define __USE_CLAM_SHA256_FOR_7Z__
14
+
15
+#ifndef __USE_CLAM_SHA256_FOR_7Z__
13 16
 typedef struct
14 17
 {
15 18
   UInt32 state[8];
... ...
@@ -20,7 +23,13 @@ typedef struct
20 20
 void Sha256_Init(CSha256 *p);
21 21
 void Sha256_Update(CSha256 *p, const Byte *data, size_t size);
22 22
 void Sha256_Final(CSha256 *p, Byte *digest);
23
-
23
+#else
24
+#include "sha256.h"
25
+#define CSha256 SHA256_CTX
26
+#define Sha256_Init sha256_init
27
+#define Sha256_Update sha256_update
28
+#define Sha256_Final sha256_final
29
+#endif
24 30
 EXTERN_C_END
25 31
 
26 32
 #endif
... ...
@@ -325,7 +325,6 @@ libclamav_la_SOURCES = \
325 325
 	7z/XzCrc64.h \
326 326
 	7z/XzDec.c \
327 327
 	7z/XzIn.c \
328
-	7z/Sha256.c \
329 328
 	7z/Sha256.h \
330 329
 	7z/Delta.c \
331 330
 	7z/Delta.h \
... ...
@@ -159,7 +159,7 @@ am_libclamav_la_OBJECTS = libclamav_la-matcher-ac.lo \
159 159
 	libclamav_la-Ppmd7.lo libclamav_la-Ppmd7Dec.lo \
160 160
 	libclamav_la-Xz.lo libclamav_la-XzCrc64.lo \
161 161
 	libclamav_la-XzDec.lo libclamav_la-XzIn.lo \
162
-	libclamav_la-Sha256.lo libclamav_la-Delta.lo \
162
+	libclamav_la-Delta.lo \
163 163
 	libclamav_la-BraIA64.lo libclamav_la-CpuArch.lo \
164 164
 	libclamav_la-7zCrcOpt.lo libclamav_la-explode.lo \
165 165
 	libclamav_la-textnorm.lo libclamav_la-dlp.lo \
... ...
@@ -684,7 +684,7 @@ libclamav_la_SOURCES = clamav.h matcher-ac.c matcher-ac.h matcher-bm.c \
684 684
 	7z/Bra.c 7z/Bra.h 7z/Bra86.c 7z/CpuArch.h 7z/Lzma2Dec.c \
685 685
 	7z/Lzma2Dec.h 7z/LzmaDec.c 7z/LzmaDec.h 7z/Ppmd.h 7z/Ppmd7.c \
686 686
 	7z/Ppmd7.h 7z/Ppmd7Dec.c 7z/Types.h 7z/Xz.c 7z/Xz.h \
687
-	7z/XzCrc64.c 7z/XzCrc64.h 7z/XzDec.c 7z/XzIn.c 7z/Sha256.c \
687
+	7z/XzCrc64.c 7z/XzCrc64.h 7z/XzDec.c 7z/XzIn.c  \
688 688
 	7z/Sha256.h 7z/Delta.c 7z/Delta.h 7z/Alloc.h 7z/BraIA64.c \
689 689
 	7z/CpuArch.c 7z/CpuArch.h 7z/7zCrcOpt.c 7z/RotateDefs.h \
690 690
 	explode.c explode.h textnorm.c textnorm.h dlp.c dlp.h \
... ...
@@ -906,7 +906,6 @@ distclean-compile:
906 906
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libclamav_la-LzmaDec.Plo@am__quote@
907 907
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libclamav_la-Ppmd7.Plo@am__quote@
908 908
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libclamav_la-Ppmd7Dec.Plo@am__quote@
909
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libclamav_la-Sha256.Plo@am__quote@
910 909
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libclamav_la-Xz.Plo@am__quote@
911 910
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libclamav_la-XzCrc64.Plo@am__quote@
912 911
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libclamav_la-XzDec.Plo@am__quote@
... ...
@@ -1719,13 +1718,6 @@ libclamav_la-XzIn.lo: 7z/XzIn.c
1719 1719
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1720 1720
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libclamav_la_CFLAGS) $(CFLAGS) -c -o libclamav_la-XzIn.lo `test -f '7z/XzIn.c' || echo '$(srcdir)/'`7z/XzIn.c
1721 1721
 
1722
-libclamav_la-Sha256.lo: 7z/Sha256.c
1723
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libclamav_la_CFLAGS) $(CFLAGS) -MT libclamav_la-Sha256.lo -MD -MP -MF $(DEPDIR)/libclamav_la-Sha256.Tpo -c -o libclamav_la-Sha256.lo `test -f '7z/Sha256.c' || echo '$(srcdir)/'`7z/Sha256.c
1724
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libclamav_la-Sha256.Tpo $(DEPDIR)/libclamav_la-Sha256.Plo
1725
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='7z/Sha256.c' object='libclamav_la-Sha256.lo' libtool=yes @AMDEPBACKSLASH@
1726
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1727
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libclamav_la_CFLAGS) $(CFLAGS) -c -o libclamav_la-Sha256.lo `test -f '7z/Sha256.c' || echo '$(srcdir)/'`7z/Sha256.c
1728
-
1729 1722
 libclamav_la-Delta.lo: 7z/Delta.c
1730 1723
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libclamav_la_CFLAGS) $(CFLAGS) -MT libclamav_la-Delta.lo -MD -MP -MF $(DEPDIR)/libclamav_la-Delta.Tpo -c -o libclamav_la-Delta.lo `test -f '7z/Delta.c' || echo '$(srcdir)/'`7z/Delta.c
1731 1724
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libclamav_la-Delta.Tpo $(DEPDIR)/libclamav_la-Delta.Plo