Skip to content

Commit 25153ea

Browse files
committed
More cleanup
1 parent 9f395f5 commit 25153ea

File tree

1 file changed

+21
-23
lines changed

1 file changed

+21
-23
lines changed

Library/Ark/ProtectedFileStream.cs

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,9 @@ public override long Position
5555
}
5656

5757
/// <summary>
58-
/// Constructs a new offset stream on the given base stream with the given offset and length.
58+
/// Constructs a new protected file stream from the given base stream.
5959
/// </summary>
6060
/// <param name="package">The base stream</param>
61-
/// <param name="offset">Offset into the base stream where this stream starts</param>
62-
/// <param name="length">Number of bytes in this stream</param>
6361
public ProtectedFileStream(Stream package)
6462
{
6563
this.pkg = package;
@@ -68,7 +66,7 @@ public ProtectedFileStream(Stream package)
6866
package.Seek(-size, SeekOrigin.End);
6967
var metadata = new byte[size];
7068
package.Read(metadata, 0, size);
71-
initialKey = init_prot_data(metadata);
69+
initialKey = CalculateKeyByte(metadata);
7270

7371
data_offset = 0;
7472
Length = package.Length - size;
@@ -131,7 +129,7 @@ public override long Seek(long offset, SeekOrigin origin)
131129
return _position;
132130
}
133131

134-
private static uint rol(uint value, int count)
132+
private static uint RotL(uint value, int count)
135133
{
136134
const int bits = 32;
137135
count %= bits;
@@ -147,7 +145,7 @@ private static byte BYTE(int num, uint value)
147145
return (byte)(value >> (num * 8));
148146
}
149147

150-
private static uint mangle(byte[] bytes, int offset, int count)
148+
private static uint Mangle(byte[] bytes, int offset, int count)
151149
{
152150
var mangled = 0U;
153151
for(var i = 0; i < count; i++)
@@ -157,22 +155,22 @@ private static uint mangle(byte[] bytes, int offset, int count)
157155
return mangled;
158156
}
159157

160-
private static uint collapse(uint value)
158+
private static uint Fold(uint value)
161159
{
162160
return (uint)(BYTE(0, value) + BYTE(1, value) + BYTE(2, value) + BYTE(3, value));
163161
}
164162

165-
public static uint do_hash(byte[] key, int offset, long count)
163+
private static uint Hash(byte[] key, int offset, long count)
166164
{
167165
uint tmp;
168166

169167
byte counter = 0;
170168
var seed = 0xE3AFEC21;
171169
for (var i = 0L; i < count; i++)
172170
{
173-
tmp = (key[offset + i] ^ collapse(seed));
171+
tmp = (key[offset + i] ^ Fold(seed));
174172
key[offset + i] = (byte)tmp;
175-
seed = rol((tmp | ((tmp | ((tmp | (tmp << 8)) << 8)) << 8)) + rol(seed, (int)(tmp & 0x1F)), 1);
173+
seed = RotL((tmp | ((tmp | ((tmp | (tmp << 8)) << 8)) << 8)) + RotL(seed, (int)(tmp & 0x1F)), 1);
176174
if (counter > 16)
177175
{
178176
seed = (2 * seed);
@@ -183,22 +181,22 @@ public static uint do_hash(byte[] key, int offset, long count)
183181
return seed;
184182
}
185183

186-
public static byte init_prot_data(byte[] metadata)
184+
private static byte CalculateKeyByte(byte[] metadata)
187185
{
188186
var word_0xE = BitConverter.ToUInt16(metadata, 0xE);
189187

190-
byte mangled = (byte)collapse(
191-
mangle(metadata, 4, 9) +
192-
mangle(metadata, 0, 4) +
193-
mangle(metadata, 13, 1) +
194-
mangle(metadata, 16, 4) +
195-
(word_0xE == 0 ? 0 : mangle(metadata, 24, word_0xE)));
196-
197-
do_hash(metadata, 24, word_0xE);
198-
do_hash(metadata, 13, 1);
199-
do_hash(metadata, 16, 4);
200-
do_hash(metadata, 0, 4);
201-
do_hash(metadata, 4, 9);
188+
byte mangled = (byte)Fold(
189+
Mangle(metadata, 4, 9) +
190+
Mangle(metadata, 0, 4) +
191+
Mangle(metadata, 13, 1) +
192+
Mangle(metadata, 16, 4) +
193+
Mangle(metadata, 24, word_0xE));
194+
195+
Hash(metadata, 24, word_0xE);
196+
Hash(metadata, 13, 1);
197+
Hash(metadata, 16, 4);
198+
Hash(metadata, 0, 4);
199+
Hash(metadata, 4, 9);
202200

203201
return (byte)(metadata[5] ^ mangled);
204202
}

0 commit comments

Comments
 (0)