Skip to content

Commit 9f395f5

Browse files
committed
Remove unnecessary complexity
1 parent 3d1566b commit 9f395f5

File tree

1 file changed

+10
-21
lines changed

1 file changed

+10
-21
lines changed

Library/Ark/ProtectedFileStream.cs

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public class ProtectedFileStream : Stream
3737

3838
private Stream pkg;
3939
private long data_offset;
40-
private byte[] metadata;
40+
private byte initialKey;
4141
private byte key;
4242

4343
private long _position;
@@ -66,9 +66,9 @@ public ProtectedFileStream(Stream package)
6666
package.Seek(-36, SeekOrigin.End);
6767
var size = package.ReadInt32LE();
6868
package.Seek(-size, SeekOrigin.End);
69-
metadata = new byte[size];
69+
var metadata = new byte[size];
7070
package.Read(metadata, 0, size);
71-
init_prot_data(metadata);
71+
initialKey = init_prot_data(metadata);
7272

7373
data_offset = 0;
7474
Length = package.Length - size;
@@ -89,7 +89,7 @@ public override int Read(byte[] buffer, int offset, int count)
8989
{
9090
byte tmp = buffer[offset+i];
9191
buffer[offset+i] ^= key;
92-
key = (byte)((metadata[5] ^ tmp) - _position);
92+
key = (byte)((initialKey ^ tmp) - _position);
9393
_position++;
9494
}
9595
return bytes_read;
@@ -121,11 +121,11 @@ public override long Seek(long offset, SeekOrigin origin)
121121
if(_position > 0)
122122
{
123123
pkg.Position = data_offset + _position - 1;
124-
key = (byte)((metadata[5] ^ pkg.ReadByte()) - _position + 1);
124+
key = (byte)((initialKey ^ pkg.ReadByte()) - _position + 1);
125125
}
126126
else if(_position == 0)
127127
{
128-
key = metadata[5];
128+
key = initialKey;
129129
}
130130

131131
return _position;
@@ -183,35 +183,24 @@ public static uint do_hash(byte[] key, int offset, long count)
183183
return seed;
184184
}
185185

186-
public static void init_prot_data(byte[] metadata)
186+
public static byte init_prot_data(byte[] metadata)
187187
{
188188
var word_0xE = BitConverter.ToUInt16(metadata, 0xE);
189-
uint size = (uint)metadata.Length;
190-
191-
var mangled_24 = 0U;
192-
if (word_0xE != 0)
193-
{
194-
mangled_24 = mangle(metadata, 24, word_0xE);
195-
}
196189

197190
byte mangled = (byte)collapse(
198191
mangle(metadata, 4, 9) +
199192
mangle(metadata, 0, 4) +
200193
mangle(metadata, 13, 1) +
201-
mangle(metadata, 16, 4) +
202-
mangled_24);
194+
mangle(metadata, 16, 4) +
195+
(word_0xE == 0 ? 0 : mangle(metadata, 24, word_0xE)));
203196

204197
do_hash(metadata, 24, word_0xE);
205198
do_hash(metadata, 13, 1);
206199
do_hash(metadata, 16, 4);
207200
do_hash(metadata, 0, 4);
208201
do_hash(metadata, 4, 9);
209202

210-
metadata[20] = BYTE(0, size);
211-
metadata[21] = BYTE(1, size);
212-
metadata[22] = BYTE(2, size);
213-
metadata[23] = BYTE(3, size);
214-
metadata[5] ^= mangled;
203+
return (byte)(metadata[5] ^ mangled);
215204
}
216205

217206
#region Not Supported

0 commit comments

Comments
 (0)