dsp_blueprint_parser 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +15 -12
- data/.rspec +3 -3
- data/.rubocop.yml +21 -21
- data/CHANGELOG.md +9 -5
- data/Gemfile +15 -15
- data/Gemfile.lock +69 -66
- data/LICENSE.txt +21 -21
- data/README.md +46 -48
- data/Rakefile +16 -16
- data/bin/console +15 -15
- data/bin/setup +9 -8
- data/dsp_blueprint_parser.gemspec +40 -39
- data/ext/md5f/extconf.rb +2 -2
- data/ext/md5f/md5f.c +311 -311
- data/lib/dsp_blueprint_parser/area.rb +30 -30
- data/lib/dsp_blueprint_parser/binary_reader.rb +46 -46
- data/lib/dsp_blueprint_parser/blueprint_data.rb +69 -69
- data/lib/dsp_blueprint_parser/building.rb +91 -79
- data/lib/dsp_blueprint_parser/building_parser.rb +227 -0
- data/lib/dsp_blueprint_parser/data_sections.rb +41 -40
- data/lib/dsp_blueprint_parser/icon_layout.rb +23 -23
- data/lib/dsp_blueprint_parser/parser.rb +89 -119
- data/lib/dsp_blueprint_parser/version.rb +5 -5
- data/lib/dsp_blueprint_parser.rb +46 -40
- metadata +19 -5
- data/lib/md5f.so +0 -0
data/ext/md5f/md5f.c
CHANGED
|
@@ -1,311 +1,311 @@
|
|
|
1
|
-
#include<stdio.h> // define the header file
|
|
2
|
-
#include <stdlib.h>
|
|
3
|
-
#include <string.h>
|
|
4
|
-
#include "ruby.h"
|
|
5
|
-
|
|
6
|
-
uint A;
|
|
7
|
-
uint B;
|
|
8
|
-
uint C;
|
|
9
|
-
uint D;
|
|
10
|
-
|
|
11
|
-
const int S11 = 7;
|
|
12
|
-
const int S12 = 12;
|
|
13
|
-
const int S13 = 17;
|
|
14
|
-
const int S14 = 22;
|
|
15
|
-
const int S21 = 5;
|
|
16
|
-
const int S22 = 9;
|
|
17
|
-
const int S23 = 14;
|
|
18
|
-
const int S24 = 20;
|
|
19
|
-
const int S31 = 4;
|
|
20
|
-
const int S32 = 11;
|
|
21
|
-
const int S33 = 16;
|
|
22
|
-
const int S34 = 23;
|
|
23
|
-
const int S41 = 6;
|
|
24
|
-
const int S42 = 10;
|
|
25
|
-
const int S43 = 15;
|
|
26
|
-
const int S44 = 21;
|
|
27
|
-
|
|
28
|
-
// ugly, I know
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
uint F(uint x, uint y, uint z)
|
|
32
|
-
{
|
|
33
|
-
return (uint) (((int) x & (int) y) | (~(int) x & (int) z));
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
uint G(uint x, uint y, uint z)
|
|
37
|
-
{
|
|
38
|
-
return (uint) (((int) x & (int) z) | ((int) y & ~(int) z));
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
uint H(uint x, uint y, uint z)
|
|
42
|
-
{
|
|
43
|
-
return x ^ y ^ z;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
uint I(uint x, uint y, uint z)
|
|
47
|
-
{
|
|
48
|
-
return y ^ (x | ~z);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
uint FF(uint a, uint b, uint c, uint d, uint mj, int s, uint ti)
|
|
52
|
-
{
|
|
53
|
-
a = a + F(b, c, d) + mj + ti;
|
|
54
|
-
a = a << s | a >> (32 - s);
|
|
55
|
-
a += b;
|
|
56
|
-
return a;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
uint GG(uint a, uint b, uint c, uint d, uint mj, int s, uint ti)
|
|
60
|
-
{
|
|
61
|
-
a = a + G(b, c, d) + mj + ti;
|
|
62
|
-
a = a << s | a >> (32 - s);
|
|
63
|
-
a += b;
|
|
64
|
-
return a;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
uint HH(uint a, uint b, uint c, uint d, uint mj, int s, uint ti)
|
|
68
|
-
{
|
|
69
|
-
a = a + H(b, c, d) + mj + ti;
|
|
70
|
-
a = a << s | a >> (32 - s);
|
|
71
|
-
a += b;
|
|
72
|
-
return a;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
uint II(uint a, uint b, uint c, uint d, uint mj, int s, uint ti)
|
|
76
|
-
{
|
|
77
|
-
a = a + I(b, c, d) + mj + ti;
|
|
78
|
-
a = a << s | a >> (32 - s);
|
|
79
|
-
a += b;
|
|
80
|
-
return a;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
void MD5_Init()
|
|
84
|
-
{
|
|
85
|
-
A = 1732584193U;
|
|
86
|
-
B = 4024216457U;
|
|
87
|
-
C = 2562383102U;
|
|
88
|
-
D = 271734598U;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
uint * MD5_Append(
|
|
92
|
-
{
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
if (num2 < 56)
|
|
98
|
-
{
|
|
99
|
-
num3 = 55 - num2;
|
|
100
|
-
num4 = length - num2 + 64;
|
|
101
|
-
}
|
|
102
|
-
else if (num2 == 56)
|
|
103
|
-
{
|
|
104
|
-
num3 = 63;
|
|
105
|
-
num1 = 1;
|
|
106
|
-
num4 = length + 8 + 64;
|
|
107
|
-
}
|
|
108
|
-
else
|
|
109
|
-
{
|
|
110
|
-
num3 = 63 - num2 + 56;
|
|
111
|
-
num4 = length + 64 - num2 + 64;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
unsigned char arrayList[num3 + 9 + length];
|
|
115
|
-
unsigned int position = 0;
|
|
116
|
-
|
|
117
|
-
for (size_t i = 0; i < length; i++)
|
|
118
|
-
{
|
|
119
|
-
arrayList[position++] = input[i];
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
if (num1 == 1)
|
|
123
|
-
{
|
|
124
|
-
arrayList[position++] = (unsigned char) 128;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
for (
|
|
128
|
-
{
|
|
129
|
-
arrayList[position++] = (unsigned char) 0;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
long num5 = (long) length * 8L;
|
|
133
|
-
unsigned char num6 = (unsigned char) ((unsigned long) num5 & (unsigned long) 255);
|
|
134
|
-
unsigned char num7 = (unsigned char) ((unsigned long) num5 >> 8 & (unsigned long) 255);
|
|
135
|
-
unsigned char num8 = (unsigned char) ((unsigned long) num5 >> 16 & (unsigned long) 255);
|
|
136
|
-
unsigned char num9 = (unsigned char) ((unsigned long) num5 >> 24 & (unsigned long) 255);
|
|
137
|
-
unsigned char num10 = (unsigned char) ((unsigned long) num5 >> 32 & (unsigned long) 255);
|
|
138
|
-
unsigned char num11 = (unsigned char) ((unsigned long) num5 >> 40 & (unsigned long) 255);
|
|
139
|
-
unsigned char num12 = (unsigned char) ((unsigned long) num5 >> 48 & (unsigned long) 255);
|
|
140
|
-
unsigned char num13 = (unsigned char) ((unsigned long) num5 >> 56);
|
|
141
|
-
arrayList[position++] = num6;
|
|
142
|
-
arrayList[position++] = num7;
|
|
143
|
-
arrayList[position++] = num8;
|
|
144
|
-
arrayList[position++] = num9;
|
|
145
|
-
arrayList[position++] = num10;
|
|
146
|
-
arrayList[position++] = num11;
|
|
147
|
-
arrayList[position++] = num12;
|
|
148
|
-
arrayList[position++] = num13;
|
|
149
|
-
|
|
150
|
-
ArrayLength = num4 / 4;
|
|
151
|
-
uint *numArray = calloc(ArrayLength, sizeof(
|
|
152
|
-
long index1 = 0;
|
|
153
|
-
long index2 = 0;
|
|
154
|
-
for (; index1 < (long) num4; index1 += 4)
|
|
155
|
-
{
|
|
156
|
-
numArray[index2] = (uint) ((int) arrayList[index1] | ((int) arrayList[index1 + 1] << 8) | ((int) arrayList[index1 + 2] << 16) | ((int) arrayList[index1 + 3] << 24));
|
|
157
|
-
++index2;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
return numArray;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
void MD5_Trasform(uint x[])
|
|
164
|
-
{
|
|
165
|
-
for (
|
|
166
|
-
{
|
|
167
|
-
uint a = A;
|
|
168
|
-
uint b = B;
|
|
169
|
-
uint c = C;
|
|
170
|
-
uint d = D;
|
|
171
|
-
a = FF(a, b, c, d, x[index], 7, 3614090360U);
|
|
172
|
-
d = FF(d, a, b, c, x[index + 1], 12, 3906451286U);
|
|
173
|
-
c = FF(c, d, a, b, x[index + 2], 17, 606105819U);
|
|
174
|
-
b = FF(b, c, d, a, x[index + 3], 22, 3250441966U);
|
|
175
|
-
a = FF(a, b, c, d, x[index + 4], 7, 4118548399U);
|
|
176
|
-
d = FF(d, a, b, c, x[index + 5], 12, 1200080426U);
|
|
177
|
-
c = FF(c, d, a, b, x[index + 6], 17, 2821735971U);
|
|
178
|
-
b = FF(b, c, d, a, x[index + 7], 22, 4249261313U);
|
|
179
|
-
a = FF(a, b, c, d, x[index + 8], 7, 1770035416U);
|
|
180
|
-
d = FF(d, a, b, c, x[index + 9], 12, 2336552879U);
|
|
181
|
-
c = FF(c, d, a, b, x[index + 10], 17, 4294925233U);
|
|
182
|
-
b = FF(b, c, d, a, x[index + 11], 22, 2304563134U);
|
|
183
|
-
a = FF(a, b, c, d, x[index + 12], 7, 1805586722U);
|
|
184
|
-
d = FF(d, a, b, c, x[index + 13], 12, 4254626195U);
|
|
185
|
-
c = FF(c, d, a, b, x[index + 14], 17, 2792965006U);
|
|
186
|
-
b = FF(b, c, d, a, x[index + 15], 22, 968099873U);
|
|
187
|
-
a = GG(a, b, c, d, x[index + 1], 5, 4129170786U);
|
|
188
|
-
d = GG(d, a, b, c, x[index + 6], 9, 3225465664U);
|
|
189
|
-
c = GG(c, d, a, b, x[index + 11], 14, 643717713U);
|
|
190
|
-
b = GG(b, c, d, a, x[index], 20, 3384199082U);
|
|
191
|
-
a = GG(a, b, c, d, x[index + 5], 5, 3593408605U);
|
|
192
|
-
d = GG(d, a, b, c, x[index + 10], 9, 38024275U);
|
|
193
|
-
c = GG(c, d, a, b, x[index + 15], 14, 3634488961U);
|
|
194
|
-
b = GG(b, c, d, a, x[index + 4], 20, 3889429448U);
|
|
195
|
-
a = GG(a, b, c, d, x[index + 9], 5, 569495014U);
|
|
196
|
-
d = GG(d, a, b, c, x[index + 14], 9, 3275163606U);
|
|
197
|
-
c = GG(c, d, a, b, x[index + 3], 14, 4107603335U);
|
|
198
|
-
b = GG(b, c, d, a, x[index + 8], 20, 1197085933U);
|
|
199
|
-
a = GG(a, b, c, d, x[index + 13], 5, 2850285829U);
|
|
200
|
-
d = GG(d, a, b, c, x[index + 2], 9, 4243563512U);
|
|
201
|
-
c = GG(c, d, a, b, x[index + 7], 14, 1735328473U);
|
|
202
|
-
b = GG(b, c, d, a, x[index + 12], 20, 2368359562U);
|
|
203
|
-
a = HH(a, b, c, d, x[index + 5], 4, 4294588738U);
|
|
204
|
-
d = HH(d, a, b, c, x[index + 8], 11, 2272392833U);
|
|
205
|
-
c = HH(c, d, a, b, x[index + 11], 16, 1839030562U);
|
|
206
|
-
b = HH(b, c, d, a, x[index + 14], 23, 4259657740U);
|
|
207
|
-
a = HH(a, b, c, d, x[index + 1], 4, 2763975236U);
|
|
208
|
-
d = HH(d, a, b, c, x[index + 4], 11, 1272893353U);
|
|
209
|
-
c = HH(c, d, a, b, x[index + 7], 16, 4139469664U);
|
|
210
|
-
b = HH(b, c, d, a, x[index + 10], 23, 3200236656U);
|
|
211
|
-
a = HH(a, b, c, d, x[index + 13], 4, 681279174U);
|
|
212
|
-
d = HH(d, a, b, c, x[index], 11, 3936430074U);
|
|
213
|
-
c = HH(c, d, a, b, x[index + 3], 16, 3572445317U);
|
|
214
|
-
b = HH(b, c, d, a, x[index + 6], 23, 76029189U);
|
|
215
|
-
a = HH(a, b, c, d, x[index + 9], 4, 3654602809U);
|
|
216
|
-
d = HH(d, a, b, c, x[index + 12], 11, 3873151461U);
|
|
217
|
-
c = HH(c, d, a, b, x[index + 15], 16, 530742520U);
|
|
218
|
-
b = HH(b, c, d, a, x[index + 2], 23, 3299628645U);
|
|
219
|
-
a = II(a, b, c, d, x[index], 6, 4096336452U);
|
|
220
|
-
d = II(d, a, b, c, x[index + 7], 10, 1126891415U);
|
|
221
|
-
c = II(c, d, a, b, x[index + 14], 15, 2878612391U);
|
|
222
|
-
b = II(b, c, d, a, x[index + 5], 21, 4237533241U);
|
|
223
|
-
a = II(a, b, c, d, x[index + 12], 6, 1700485571U);
|
|
224
|
-
d = II(d, a, b, c, x[index + 3], 10, 2399980690U);
|
|
225
|
-
c = II(c, d, a, b, x[index + 10], 15, 4293915773U);
|
|
226
|
-
b = II(b, c, d, a, x[index + 1], 21, 2240044497U);
|
|
227
|
-
a = II(a, b, c, d, x[index + 8], 6, 1873313359U);
|
|
228
|
-
d = II(d, a, b, c, x[index + 15], 10, 4264355552U);
|
|
229
|
-
c = II(c, d, a, b, x[index + 6], 15, 2734768916U);
|
|
230
|
-
b = II(b, c, d, a, x[index + 13], 21, 1309151649U);
|
|
231
|
-
a = II(a, b, c, d, x[index + 4], 6, 4149444226U);
|
|
232
|
-
d = II(d, a, b, c, x[index + 11], 10, 3174756917U);
|
|
233
|
-
c = II(c, d, a, b, x[index + 2], 15, 718787259U);
|
|
234
|
-
b = II(b, c, d, a, x[index + 9], 21, 3951481745U);
|
|
235
|
-
A += a;
|
|
236
|
-
B += b;
|
|
237
|
-
C += c;
|
|
238
|
-
D += d;
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
unsigned char * MD5_Array(
|
|
243
|
-
{
|
|
244
|
-
MD5_Init();
|
|
245
|
-
uint *append = MD5_Append(input, length);
|
|
246
|
-
MD5_Trasform(append);
|
|
247
|
-
uint numArray1[4] = { A, B, C, D};
|
|
248
|
-
|
|
249
|
-
unsigned char *numArray2 = calloc(4 * 4, sizeof(unsigned char));
|
|
250
|
-
|
|
251
|
-
int index1 = 0;
|
|
252
|
-
int index2 = 0;
|
|
253
|
-
while (index1 < 4)
|
|
254
|
-
{
|
|
255
|
-
numArray2[index2] = (unsigned char) (numArray1[index1] & (uint) 255);
|
|
256
|
-
numArray2[index2 + 1] = (unsigned char) (numArray1[index1] >> 8 & (uint) 255);
|
|
257
|
-
numArray2[index2 + 2] = (unsigned char) (numArray1[index1] >> 16 & (uint) 255);
|
|
258
|
-
numArray2[index2 + 3] = (unsigned char) (numArray1[index1] >> 24 & (uint) 255);
|
|
259
|
-
++index1;
|
|
260
|
-
index2 += 4;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
free(append);
|
|
264
|
-
return numArray2;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
{
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
for (
|
|
273
|
-
{
|
|
274
|
-
sprintf(result+2*i, "%.2X", input[i]);
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
return result;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
{
|
|
282
|
-
unsigned char * data = MD5_Array(message, length);
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
free(data);
|
|
286
|
-
return result;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
VALUE
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
void Init_md5f()
|
|
308
|
-
{
|
|
309
|
-
MD5F = rb_define_module("MD5F");
|
|
310
|
-
rb_define_module_function(MD5F, "compute", rb_compute, 1);
|
|
311
|
-
}
|
|
1
|
+
#include <stdio.h> // define the header file
|
|
2
|
+
#include <stdlib.h>
|
|
3
|
+
#include <string.h>
|
|
4
|
+
#include "ruby.h"
|
|
5
|
+
|
|
6
|
+
uint A;
|
|
7
|
+
uint B;
|
|
8
|
+
uint C;
|
|
9
|
+
uint D;
|
|
10
|
+
|
|
11
|
+
const int S11 = 7;
|
|
12
|
+
const int S12 = 12;
|
|
13
|
+
const int S13 = 17;
|
|
14
|
+
const int S14 = 22;
|
|
15
|
+
const int S21 = 5;
|
|
16
|
+
const int S22 = 9;
|
|
17
|
+
const int S23 = 14;
|
|
18
|
+
const int S24 = 20;
|
|
19
|
+
const int S31 = 4;
|
|
20
|
+
const int S32 = 11;
|
|
21
|
+
const int S33 = 16;
|
|
22
|
+
const int S34 = 23;
|
|
23
|
+
const int S41 = 6;
|
|
24
|
+
const int S42 = 10;
|
|
25
|
+
const int S43 = 15;
|
|
26
|
+
const int S44 = 21;
|
|
27
|
+
|
|
28
|
+
// ugly, I know
|
|
29
|
+
size_t ArrayLength = 0;
|
|
30
|
+
|
|
31
|
+
uint F(uint x, uint y, uint z)
|
|
32
|
+
{
|
|
33
|
+
return (uint) (((int) x & (int) y) | (~(int) x & (int) z));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
uint G(uint x, uint y, uint z)
|
|
37
|
+
{
|
|
38
|
+
return (uint) (((int) x & (int) z) | ((int) y & ~(int) z));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
uint H(uint x, uint y, uint z)
|
|
42
|
+
{
|
|
43
|
+
return x ^ y ^ z;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
uint I(uint x, uint y, uint z)
|
|
47
|
+
{
|
|
48
|
+
return y ^ (x | ~z);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
uint FF(uint a, uint b, uint c, uint d, uint mj, int s, uint ti)
|
|
52
|
+
{
|
|
53
|
+
a = a + F(b, c, d) + mj + ti;
|
|
54
|
+
a = a << s | a >> (32 - s);
|
|
55
|
+
a += b;
|
|
56
|
+
return a;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
uint GG(uint a, uint b, uint c, uint d, uint mj, int s, uint ti)
|
|
60
|
+
{
|
|
61
|
+
a = a + G(b, c, d) + mj + ti;
|
|
62
|
+
a = a << s | a >> (32 - s);
|
|
63
|
+
a += b;
|
|
64
|
+
return a;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
uint HH(uint a, uint b, uint c, uint d, uint mj, int s, uint ti)
|
|
68
|
+
{
|
|
69
|
+
a = a + H(b, c, d) + mj + ti;
|
|
70
|
+
a = a << s | a >> (32 - s);
|
|
71
|
+
a += b;
|
|
72
|
+
return a;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
uint II(uint a, uint b, uint c, uint d, uint mj, int s, uint ti)
|
|
76
|
+
{
|
|
77
|
+
a = a + I(b, c, d) + mj + ti;
|
|
78
|
+
a = a << s | a >> (32 - s);
|
|
79
|
+
a += b;
|
|
80
|
+
return a;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
void MD5_Init()
|
|
84
|
+
{
|
|
85
|
+
A = 1732584193U;
|
|
86
|
+
B = 4024216457U;
|
|
87
|
+
C = 2562383102U;
|
|
88
|
+
D = 271734598U;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
uint * MD5_Append(char* input, size_t length)
|
|
92
|
+
{
|
|
93
|
+
size_t num1 = 1;
|
|
94
|
+
size_t num2 = length % 64;
|
|
95
|
+
size_t num3;
|
|
96
|
+
size_t num4 = 0;
|
|
97
|
+
if (num2 < 56)
|
|
98
|
+
{
|
|
99
|
+
num3 = 55 - num2;
|
|
100
|
+
num4 = length - num2 + 64;
|
|
101
|
+
}
|
|
102
|
+
else if (num2 == 56)
|
|
103
|
+
{
|
|
104
|
+
num3 = 63;
|
|
105
|
+
num1 = 1;
|
|
106
|
+
num4 = length + 8 + 64;
|
|
107
|
+
}
|
|
108
|
+
else
|
|
109
|
+
{
|
|
110
|
+
num3 = 63 - num2 + 56;
|
|
111
|
+
num4 = length + 64 - num2 + 64;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
unsigned char arrayList[num3 + 9 + length];
|
|
115
|
+
unsigned int position = 0;
|
|
116
|
+
|
|
117
|
+
for (size_t i = 0; i < length; i++)
|
|
118
|
+
{
|
|
119
|
+
arrayList[position++] = input[i];
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (num1 == 1)
|
|
123
|
+
{
|
|
124
|
+
arrayList[position++] = (unsigned char) 128;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
for (size_t index = 0; index < num3; ++index)
|
|
128
|
+
{
|
|
129
|
+
arrayList[position++] = (unsigned char) 0;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
long num5 = (long) length * 8L;
|
|
133
|
+
unsigned char num6 = (unsigned char) ((unsigned long) num5 & (unsigned long) 255);
|
|
134
|
+
unsigned char num7 = (unsigned char) ((unsigned long) num5 >> 8 & (unsigned long) 255);
|
|
135
|
+
unsigned char num8 = (unsigned char) ((unsigned long) num5 >> 16 & (unsigned long) 255);
|
|
136
|
+
unsigned char num9 = (unsigned char) ((unsigned long) num5 >> 24 & (unsigned long) 255);
|
|
137
|
+
unsigned char num10 = (unsigned char) ((unsigned long) num5 >> 32 & (unsigned long) 255);
|
|
138
|
+
unsigned char num11 = (unsigned char) ((unsigned long) num5 >> 40 & (unsigned long) 255);
|
|
139
|
+
unsigned char num12 = (unsigned char) ((unsigned long) num5 >> 48 & (unsigned long) 255);
|
|
140
|
+
unsigned char num13 = (unsigned char) ((unsigned long) num5 >> 56);
|
|
141
|
+
arrayList[position++] = num6;
|
|
142
|
+
arrayList[position++] = num7;
|
|
143
|
+
arrayList[position++] = num8;
|
|
144
|
+
arrayList[position++] = num9;
|
|
145
|
+
arrayList[position++] = num10;
|
|
146
|
+
arrayList[position++] = num11;
|
|
147
|
+
arrayList[position++] = num12;
|
|
148
|
+
arrayList[position++] = num13;
|
|
149
|
+
|
|
150
|
+
ArrayLength = num4 / 4;
|
|
151
|
+
uint *numArray = calloc(ArrayLength, sizeof(size_t));
|
|
152
|
+
long index1 = 0;
|
|
153
|
+
long index2 = 0;
|
|
154
|
+
for (; index1 < (long) num4; index1 += 4)
|
|
155
|
+
{
|
|
156
|
+
numArray[index2] = (uint) ((int) arrayList[index1] | ((int) arrayList[index1 + 1] << 8) | ((int) arrayList[index1 + 2] << 16) | ((int) arrayList[index1 + 3] << 24));
|
|
157
|
+
++index2;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return numArray;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
void MD5_Trasform(uint x[])
|
|
164
|
+
{
|
|
165
|
+
for (size_t index = 0; index < ArrayLength; index += 16)
|
|
166
|
+
{
|
|
167
|
+
uint a = A;
|
|
168
|
+
uint b = B;
|
|
169
|
+
uint c = C;
|
|
170
|
+
uint d = D;
|
|
171
|
+
a = FF(a, b, c, d, x[index], 7, 3614090360U);
|
|
172
|
+
d = FF(d, a, b, c, x[index + 1], 12, 3906451286U);
|
|
173
|
+
c = FF(c, d, a, b, x[index + 2], 17, 606105819U);
|
|
174
|
+
b = FF(b, c, d, a, x[index + 3], 22, 3250441966U);
|
|
175
|
+
a = FF(a, b, c, d, x[index + 4], 7, 4118548399U);
|
|
176
|
+
d = FF(d, a, b, c, x[index + 5], 12, 1200080426U);
|
|
177
|
+
c = FF(c, d, a, b, x[index + 6], 17, 2821735971U);
|
|
178
|
+
b = FF(b, c, d, a, x[index + 7], 22, 4249261313U);
|
|
179
|
+
a = FF(a, b, c, d, x[index + 8], 7, 1770035416U);
|
|
180
|
+
d = FF(d, a, b, c, x[index + 9], 12, 2336552879U);
|
|
181
|
+
c = FF(c, d, a, b, x[index + 10], 17, 4294925233U);
|
|
182
|
+
b = FF(b, c, d, a, x[index + 11], 22, 2304563134U);
|
|
183
|
+
a = FF(a, b, c, d, x[index + 12], 7, 1805586722U);
|
|
184
|
+
d = FF(d, a, b, c, x[index + 13], 12, 4254626195U);
|
|
185
|
+
c = FF(c, d, a, b, x[index + 14], 17, 2792965006U);
|
|
186
|
+
b = FF(b, c, d, a, x[index + 15], 22, 968099873U);
|
|
187
|
+
a = GG(a, b, c, d, x[index + 1], 5, 4129170786U);
|
|
188
|
+
d = GG(d, a, b, c, x[index + 6], 9, 3225465664U);
|
|
189
|
+
c = GG(c, d, a, b, x[index + 11], 14, 643717713U);
|
|
190
|
+
b = GG(b, c, d, a, x[index], 20, 3384199082U);
|
|
191
|
+
a = GG(a, b, c, d, x[index + 5], 5, 3593408605U);
|
|
192
|
+
d = GG(d, a, b, c, x[index + 10], 9, 38024275U);
|
|
193
|
+
c = GG(c, d, a, b, x[index + 15], 14, 3634488961U);
|
|
194
|
+
b = GG(b, c, d, a, x[index + 4], 20, 3889429448U);
|
|
195
|
+
a = GG(a, b, c, d, x[index + 9], 5, 569495014U);
|
|
196
|
+
d = GG(d, a, b, c, x[index + 14], 9, 3275163606U);
|
|
197
|
+
c = GG(c, d, a, b, x[index + 3], 14, 4107603335U);
|
|
198
|
+
b = GG(b, c, d, a, x[index + 8], 20, 1197085933U);
|
|
199
|
+
a = GG(a, b, c, d, x[index + 13], 5, 2850285829U);
|
|
200
|
+
d = GG(d, a, b, c, x[index + 2], 9, 4243563512U);
|
|
201
|
+
c = GG(c, d, a, b, x[index + 7], 14, 1735328473U);
|
|
202
|
+
b = GG(b, c, d, a, x[index + 12], 20, 2368359562U);
|
|
203
|
+
a = HH(a, b, c, d, x[index + 5], 4, 4294588738U);
|
|
204
|
+
d = HH(d, a, b, c, x[index + 8], 11, 2272392833U);
|
|
205
|
+
c = HH(c, d, a, b, x[index + 11], 16, 1839030562U);
|
|
206
|
+
b = HH(b, c, d, a, x[index + 14], 23, 4259657740U);
|
|
207
|
+
a = HH(a, b, c, d, x[index + 1], 4, 2763975236U);
|
|
208
|
+
d = HH(d, a, b, c, x[index + 4], 11, 1272893353U);
|
|
209
|
+
c = HH(c, d, a, b, x[index + 7], 16, 4139469664U);
|
|
210
|
+
b = HH(b, c, d, a, x[index + 10], 23, 3200236656U);
|
|
211
|
+
a = HH(a, b, c, d, x[index + 13], 4, 681279174U);
|
|
212
|
+
d = HH(d, a, b, c, x[index], 11, 3936430074U);
|
|
213
|
+
c = HH(c, d, a, b, x[index + 3], 16, 3572445317U);
|
|
214
|
+
b = HH(b, c, d, a, x[index + 6], 23, 76029189U);
|
|
215
|
+
a = HH(a, b, c, d, x[index + 9], 4, 3654602809U);
|
|
216
|
+
d = HH(d, a, b, c, x[index + 12], 11, 3873151461U);
|
|
217
|
+
c = HH(c, d, a, b, x[index + 15], 16, 530742520U);
|
|
218
|
+
b = HH(b, c, d, a, x[index + 2], 23, 3299628645U);
|
|
219
|
+
a = II(a, b, c, d, x[index], 6, 4096336452U);
|
|
220
|
+
d = II(d, a, b, c, x[index + 7], 10, 1126891415U);
|
|
221
|
+
c = II(c, d, a, b, x[index + 14], 15, 2878612391U);
|
|
222
|
+
b = II(b, c, d, a, x[index + 5], 21, 4237533241U);
|
|
223
|
+
a = II(a, b, c, d, x[index + 12], 6, 1700485571U);
|
|
224
|
+
d = II(d, a, b, c, x[index + 3], 10, 2399980690U);
|
|
225
|
+
c = II(c, d, a, b, x[index + 10], 15, 4293915773U);
|
|
226
|
+
b = II(b, c, d, a, x[index + 1], 21, 2240044497U);
|
|
227
|
+
a = II(a, b, c, d, x[index + 8], 6, 1873313359U);
|
|
228
|
+
d = II(d, a, b, c, x[index + 15], 10, 4264355552U);
|
|
229
|
+
c = II(c, d, a, b, x[index + 6], 15, 2734768916U);
|
|
230
|
+
b = II(b, c, d, a, x[index + 13], 21, 1309151649U);
|
|
231
|
+
a = II(a, b, c, d, x[index + 4], 6, 4149444226U);
|
|
232
|
+
d = II(d, a, b, c, x[index + 11], 10, 3174756917U);
|
|
233
|
+
c = II(c, d, a, b, x[index + 2], 15, 718787259U);
|
|
234
|
+
b = II(b, c, d, a, x[index + 9], 21, 3951481745U);
|
|
235
|
+
A += a;
|
|
236
|
+
B += b;
|
|
237
|
+
C += c;
|
|
238
|
+
D += d;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
unsigned char * MD5_Array(char* input, long length)
|
|
243
|
+
{
|
|
244
|
+
MD5_Init();
|
|
245
|
+
uint *append = MD5_Append(input, length);
|
|
246
|
+
MD5_Trasform(append);
|
|
247
|
+
uint numArray1[4] = { A, B, C, D};
|
|
248
|
+
|
|
249
|
+
unsigned char *numArray2 = calloc(4 * 4, sizeof(unsigned char));
|
|
250
|
+
|
|
251
|
+
int index1 = 0;
|
|
252
|
+
int index2 = 0;
|
|
253
|
+
while (index1 < 4)
|
|
254
|
+
{
|
|
255
|
+
numArray2[index2] = (unsigned char) (numArray1[index1] & (uint) 255);
|
|
256
|
+
numArray2[index2 + 1] = (unsigned char) (numArray1[index1] >> 8 & (uint) 255);
|
|
257
|
+
numArray2[index2 + 2] = (unsigned char) (numArray1[index1] >> 16 & (uint) 255);
|
|
258
|
+
numArray2[index2 + 3] = (unsigned char) (numArray1[index1] >> 24 & (uint) 255);
|
|
259
|
+
++index1;
|
|
260
|
+
index2 += 4;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
free(append);
|
|
264
|
+
return numArray2;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
char * ArrayToHexString(unsigned char * input)
|
|
268
|
+
{
|
|
269
|
+
int length = 16;
|
|
270
|
+
char *result = calloc((length * 2) + 1, sizeof(char));
|
|
271
|
+
|
|
272
|
+
for (int i = 0; i < length; i++)
|
|
273
|
+
{
|
|
274
|
+
sprintf(result+2*i, "%.2X", input[i]);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
return result;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
char * Compute(char* message, long length)
|
|
281
|
+
{
|
|
282
|
+
unsigned char * data = MD5_Array(message, length);
|
|
283
|
+
char * result = ArrayToHexString(data);
|
|
284
|
+
|
|
285
|
+
free(data);
|
|
286
|
+
return result;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
VALUE rb_compute(VALUE self, VALUE str) {
|
|
290
|
+
if (RB_TYPE_P(str, T_STRING) != 1) {
|
|
291
|
+
return Qnil;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
char *data = StringValuePtr(str);
|
|
295
|
+
long strLength = RSTRING_LEN(str);
|
|
296
|
+
|
|
297
|
+
char *hex = Compute(data, strLength);
|
|
298
|
+
|
|
299
|
+
VALUE result = rb_str_new(hex, 32);
|
|
300
|
+
free(hex);
|
|
301
|
+
|
|
302
|
+
return result;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
VALUE MD5F = Qnil; /* Ruby Module */
|
|
306
|
+
|
|
307
|
+
void Init_md5f()
|
|
308
|
+
{
|
|
309
|
+
MD5F = rb_define_module("MD5F");
|
|
310
|
+
rb_define_module_function(MD5F, "compute", rb_compute, 1);
|
|
311
|
+
}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module DspBlueprintParser
|
|
4
|
-
# data class for parsed area
|
|
5
|
-
class Area
|
|
6
|
-
# @return [Integer]
|
|
7
|
-
attr_accessor :index
|
|
8
|
-
|
|
9
|
-
# @return [Integer]
|
|
10
|
-
attr_accessor :parent_index
|
|
11
|
-
|
|
12
|
-
# @return [Integer]
|
|
13
|
-
attr_accessor :tropic_anchor
|
|
14
|
-
|
|
15
|
-
# @return [Integer]
|
|
16
|
-
attr_accessor :area_segments
|
|
17
|
-
|
|
18
|
-
# @return [Integer]
|
|
19
|
-
attr_accessor :anchor_local_offset_x
|
|
20
|
-
|
|
21
|
-
# @return [Integer]
|
|
22
|
-
attr_accessor :anchor_local_offset_y
|
|
23
|
-
|
|
24
|
-
# @return [Integer]
|
|
25
|
-
attr_accessor :width
|
|
26
|
-
|
|
27
|
-
# @return [Integer]
|
|
28
|
-
attr_accessor :height
|
|
29
|
-
end
|
|
30
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DspBlueprintParser
|
|
4
|
+
# data class for parsed area
|
|
5
|
+
class Area
|
|
6
|
+
# @return [Integer]
|
|
7
|
+
attr_accessor :index
|
|
8
|
+
|
|
9
|
+
# @return [Integer]
|
|
10
|
+
attr_accessor :parent_index
|
|
11
|
+
|
|
12
|
+
# @return [Integer]
|
|
13
|
+
attr_accessor :tropic_anchor
|
|
14
|
+
|
|
15
|
+
# @return [Integer]
|
|
16
|
+
attr_accessor :area_segments
|
|
17
|
+
|
|
18
|
+
# @return [Integer]
|
|
19
|
+
attr_accessor :anchor_local_offset_x
|
|
20
|
+
|
|
21
|
+
# @return [Integer]
|
|
22
|
+
attr_accessor :anchor_local_offset_y
|
|
23
|
+
|
|
24
|
+
# @return [Integer]
|
|
25
|
+
attr_accessor :width
|
|
26
|
+
|
|
27
|
+
# @return [Integer]
|
|
28
|
+
attr_accessor :height
|
|
29
|
+
end
|
|
30
|
+
end
|