Skip to content

Commit 943a4ad

Browse files
committed
use a single sha1-context
1 parent 771d699 commit 943a4ad

File tree

3 files changed

+24
-21
lines changed

3 files changed

+24
-21
lines changed

Source/codec.cpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,18 @@ static void CodecInitKey(const char* pszPassword)
3535
}
3636

3737
BYTE digest[SHA1HashSize];
38-
SHA1Reset(0);
39-
SHA1Calculate(0, pw, digest);
38+
SHA1Reset(/*0*/);
39+
SHA1Calculate(/*0,*/ pw, digest);
4040
SHA1Clear();
4141
for (unsigned i = 0; i < sizeof(key); ++i)
4242
key[i] ^= digest[i % SHA1HashSize];
4343
memset(pw, 0, sizeof(pw));
4444
memset(digest, 0, sizeof(digest));
45-
for (int n = 0; n < SHA1ContextNum; ++n) {
46-
SHA1Reset(n);
47-
SHA1Calculate(n, &key[sizeof(key) - SHA1BlockSize], NULL);
48-
}
45+
static_assert(SHA1ContextNum == 1, "CodecInitKey must initialize the sha1 contexts.");
46+
// for (int n = 0; n < SHA1ContextNum; ++n) {
47+
SHA1Reset(/*n*/);
48+
SHA1Calculate(/*n,*/ &key[sizeof(key) - SHA1BlockSize], NULL);
49+
// }
4950
memset(key, 0, sizeof(key));
5051
}
5152

@@ -64,11 +65,11 @@ int codec_decode(BYTE* pbSrcDst, DWORD size, const char* pszPassword)
6465
return 0;
6566
for (i = size; i != 0; pbSrcDst += SHA1BlockSize, i -= SHA1BlockSize) {
6667
memcpy(buf, pbSrcDst, SHA1BlockSize);
67-
SHA1Result(0, dst);
68+
SHA1Result(/*0, */dst);
6869
for (int j = 0; j < SHA1BlockSize; j++) {
6970
buf[j] ^= dst[j % SHA1HashSize];
7071
}
71-
SHA1Calculate(0, buf, NULL);
72+
SHA1Calculate(/*0,*/ buf, NULL);
7273
memcpy(pbSrcDst, buf, SHA1BlockSize);
7374
}
7475

@@ -78,7 +79,7 @@ int codec_decode(BYTE* pbSrcDst, DWORD size, const char* pszPassword)
7879
goto error;
7980
}
8081

81-
SHA1Result(0, dst);
82+
SHA1Result(/*0,*/ dst);
8283
if (sig->checksum != *(uint32_t*)dst) {
8384
goto error;
8485
}
@@ -116,8 +117,8 @@ void codec_encode(BYTE* pbSrcDst, DWORD size, DWORD encodedSize, const char* psz
116117
memcpy(buf, pbSrcDst, chunk);
117118
if (chunk < SHA1BlockSize)
118119
memset(buf + chunk, 0, SHA1BlockSize - chunk);
119-
SHA1Result(0, dst);
120-
SHA1Calculate(0, buf, NULL);
120+
SHA1Result(/*0,*/ dst);
121+
SHA1Calculate(/*0,*/ buf, NULL);
121122
for (int i = 0; i < SHA1BlockSize; i++) {
122123
buf[i] ^= dst[i % SHA1HashSize];
123124
}
@@ -126,7 +127,7 @@ void codec_encode(BYTE* pbSrcDst, DWORD size, DWORD encodedSize, const char* psz
126127
size -= chunk;
127128
}
128129
memset(buf, 0, sizeof(buf));
129-
SHA1Result(0, dst);
130+
SHA1Result(/*0,*/ dst);
130131
sig = (CodecSignature*)pbSrcDst;
131132
sig->error = 0;
132133
sig->unused = 0;

Source/sha.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,10 @@ void SHA1Clear()
132132
memset(sgSHA1, 0, sizeof(sgSHA1));
133133
}
134134

135-
void SHA1Result(int n, BYTE Message_Digest[SHA1HashSize])
135+
void SHA1Result(/*int n,*/ BYTE Message_Digest[SHA1HashSize])
136136
{
137137
DWORD* Message_Digest_Block;
138-
int i;
138+
int i, n = 0;
139139

140140
assert(Message_Digest != NULL);
141141
Message_Digest_Block = (DWORD*)Message_Digest;
@@ -145,15 +145,17 @@ void SHA1Result(int n, BYTE Message_Digest[SHA1HashSize])
145145
}
146146
}
147147

148-
void SHA1Calculate(int n, const BYTE* data, BYTE Message_Digest[SHA1HashSize])
148+
void SHA1Calculate(/*int n,*/ const BYTE* data, BYTE Message_Digest[SHA1HashSize])
149149
{
150+
int n = 0;
150151
SHA1Input(&sgSHA1[n], data, SHA1BlockSize);
151152
if (Message_Digest != NULL)
152-
SHA1Result(n, Message_Digest);
153+
SHA1Result(/*n,*/ Message_Digest);
153154
}
154155

155-
void SHA1Reset(int n)
156+
void SHA1Reset(/*int n*/)
156157
{
158+
int n = 0;
157159
SHA1Init(&sgSHA1[n]);
158160
}
159161

Source/sha.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ DEVILUTION_BEGIN_NAMESPACE
1212
extern "C" {
1313
#endif
1414

15-
#define SHA1ContextNum 3
15+
#define SHA1ContextNum 1
1616
#define SHA1HashSize 20
1717
#define SHA1BlockSize 64
1818

1919
void SHA1Clear();
20-
void SHA1Result(int n, BYTE Message_Digest[SHA1HashSize]);
21-
void SHA1Calculate(int n, const BYTE* data, BYTE Message_Digest[SHA1HashSize]);
22-
void SHA1Reset(int n);
20+
void SHA1Result(/*int n, */BYTE Message_Digest[SHA1HashSize]);
21+
void SHA1Calculate(/*int n, */const BYTE* data, BYTE Message_Digest[SHA1HashSize]);
22+
void SHA1Reset(/*int n*/);
2323

2424
#ifdef __cplusplus
2525
}

0 commit comments

Comments
 (0)