smcutil 0.1.2 → 0.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1123a5675b914e96a1d506894878b2f8b4ee56f5
4
- data.tar.gz: c675623d045542fad367ef37ed13c9afcb788e03
3
+ metadata.gz: 22dac277b295c249d4a65cf2d6cdd927eb5cd6af
4
+ data.tar.gz: 134a4432c89c15bcd8d000d4cf75dd0dc9095674
5
5
  SHA512:
6
- metadata.gz: b265f393229b443c465f6e9e03b9b1c6445f8aae1248d4c3ceb0a8290efa0a5bb7eda235fe8267fe6443ef27ab0084e5283f30eec7ed00e024d42521e4faa1c4
7
- data.tar.gz: 2c1e9557f175d3fb336f1ce822d7f121c36130cb15108c89f8c06a6cdc7a82f5ca2e774aeb8e763722a7697e1887744d66ea08f8e3538be21e7e02f923f7bc8b
6
+ metadata.gz: 299820337a4af80d7cb9d8603504685565f6184e24e6e6de42e71baa2b070cf48995b84cbe15c1b1d2929632280c67e76cca7a5ae43929eba6be2c84da52ae4a
7
+ data.tar.gz: df1a9c7d5a313bfeaaedf65ad539934d92004e18049688dcc659915bcf8f1d91ae86c6f50cbe81960aba164a3d6a9f70e2371080fae03e2dd26398ac8354e56b
data/.idea/workspace.xml CHANGED
@@ -7,11 +7,13 @@
7
7
  </component>
8
8
  <component name="ChangeListManager">
9
9
  <list default="true" id="79f8e064-6b6b-45b7-a43f-11c6b4aaa82e" name="Default" comment="">
10
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/lib/smcutil/region.rb" />
10
11
  <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
11
12
  <change type="MODIFICATION" beforePath="$PROJECT_DIR$/exe/smcutil" afterPath="$PROJECT_DIR$/exe/smcutil" />
12
- <change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/smcutil/file_extractor.rb" afterPath="$PROJECT_DIR$/lib/smcutil/file_extractor.rb" />
13
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/smcutil.rb" afterPath="$PROJECT_DIR$/lib/smcutil.rb" />
14
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/smcutil/file_reader.rb" afterPath="$PROJECT_DIR$/lib/smcutil/file_reader.rb" />
15
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/smcutil/file_validator.rb" afterPath="$PROJECT_DIR$/lib/smcutil/file_validator.rb" />
13
16
  <change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/smcutil/version.rb" afterPath="$PROJECT_DIR$/lib/smcutil/version.rb" />
14
- <change type="MODIFICATION" beforePath="$PROJECT_DIR$/spec/smcutil/file_extractor_spec.rb" afterPath="$PROJECT_DIR$/spec/smcutil/file_extractor_spec.rb" />
15
17
  </list>
16
18
  <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
17
19
  <option name="TRACKING_ENABLED" value="true" />
@@ -28,8 +30,8 @@
28
30
  <file leaf-file-name="smcutil" pinned="false" current-in-tab="false">
29
31
  <entry file="file://$PROJECT_DIR$/exe/smcutil">
30
32
  <provider selected="true" editor-type-id="text-editor">
31
- <state relative-caret-position="353">
32
- <caret line="52" column="44" lean-forward="false" selection-start-line="52" selection-start-column="44" selection-end-line="52" selection-end-column="44" />
33
+ <state relative-caret-position="357">
34
+ <caret line="44" column="23" lean-forward="false" selection-start-line="44" selection-start-column="23" selection-end-line="44" selection-end-column="23" />
33
35
  <folding />
34
36
  </state>
35
37
  </provider>
@@ -38,18 +40,18 @@
38
40
  <file leaf-file-name="smcutil.gemspec" pinned="false" current-in-tab="false">
39
41
  <entry file="file://$PROJECT_DIR$/smcutil.gemspec">
40
42
  <provider selected="true" editor-type-id="text-editor">
41
- <state relative-caret-position="283">
43
+ <state relative-caret-position="285">
42
44
  <caret line="19" column="62" lean-forward="false" selection-start-line="19" selection-start-column="62" selection-end-line="19" selection-end-column="62" />
43
45
  <folding />
44
46
  </state>
45
47
  </provider>
46
48
  </entry>
47
49
  </file>
48
- <file leaf-file-name="version.rb" pinned="false" current-in-tab="true">
50
+ <file leaf-file-name="version.rb" pinned="false" current-in-tab="false">
49
51
  <entry file="file://$PROJECT_DIR$/lib/smcutil/version.rb">
50
52
  <provider selected="true" editor-type-id="text-editor">
51
- <state relative-caret-position="45">
52
- <caret line="3" column="0" lean-forward="true" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
53
+ <state relative-caret-position="15">
54
+ <caret line="1" column="18" lean-forward="false" selection-start-line="1" selection-start-column="18" selection-end-line="1" selection-end-column="18" />
53
55
  <folding />
54
56
  </state>
55
57
  </provider>
@@ -58,23 +60,13 @@
58
60
  <file leaf-file-name="flasher_base.smc" pinned="false" current-in-tab="false">
59
61
  <entry file="file://$PROJECT_DIR$/spec/fixtures/flasher_base.smc">
60
62
  <provider selected="true" editor-type-id="text-editor">
61
- <state relative-caret-position="-10920">
63
+ <state relative-caret-position="0">
62
64
  <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
63
65
  <folding />
64
66
  </state>
65
67
  </provider>
66
68
  </entry>
67
69
  </file>
68
- <file leaf-file-name="file_validator_spec.rb" pinned="false" current-in-tab="false">
69
- <entry file="file://$PROJECT_DIR$/spec/smcutil/file_validator_spec.rb">
70
- <provider selected="true" editor-type-id="text-editor">
71
- <state relative-caret-position="240">
72
- <caret line="16" column="0" lean-forward="false" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
73
- <folding />
74
- </state>
75
- </provider>
76
- </entry>
77
- </file>
78
70
  <file leaf-file-name="file_extractor_spec.rb" pinned="false" current-in-tab="false">
79
71
  <entry file="file://$PROJECT_DIR$/spec/smcutil/file_extractor_spec.rb">
80
72
  <provider selected="true" editor-type-id="text-editor">
@@ -88,18 +80,28 @@
88
80
  <file leaf-file-name="file_reader.rb" pinned="false" current-in-tab="false">
89
81
  <entry file="file://$PROJECT_DIR$/lib/smcutil/file_reader.rb">
90
82
  <provider selected="true" editor-type-id="text-editor">
91
- <state relative-caret-position="120">
92
- <caret line="8" column="0" lean-forward="false" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
83
+ <state relative-caret-position="672">
84
+ <caret line="55" column="32" lean-forward="false" selection-start-line="55" selection-start-column="32" selection-end-line="55" selection-end-column="32" />
85
+ <folding />
86
+ </state>
87
+ </provider>
88
+ </entry>
89
+ </file>
90
+ <file leaf-file-name="file_extractor.rb" pinned="false" current-in-tab="false">
91
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/file_extractor.rb">
92
+ <provider selected="true" editor-type-id="text-editor">
93
+ <state relative-caret-position="255">
94
+ <caret line="17" column="3" lean-forward="true" selection-start-line="17" selection-start-column="3" selection-end-line="17" selection-end-column="3" />
93
95
  <folding />
94
96
  </state>
95
97
  </provider>
96
98
  </entry>
97
99
  </file>
98
- <file leaf-file-name="smcutil.rb" pinned="false" current-in-tab="false">
100
+ <file leaf-file-name="smcutil.rb" pinned="false" current-in-tab="true">
99
101
  <entry file="file://$PROJECT_DIR$/lib/smcutil.rb">
100
102
  <provider selected="true" editor-type-id="text-editor">
101
- <state relative-caret-position="75">
102
- <caret line="5" column="51" lean-forward="false" selection-start-line="5" selection-start-column="51" selection-end-line="5" selection-end-column="51" />
103
+ <state relative-caret-position="30">
104
+ <caret line="2" column="14" lean-forward="false" selection-start-line="2" selection-start-column="14" selection-end-line="2" selection-end-column="14" />
103
105
  <folding />
104
106
  </state>
105
107
  </provider>
@@ -108,8 +110,18 @@
108
110
  <file leaf-file-name="file_validator.rb" pinned="false" current-in-tab="false">
109
111
  <entry file="file://$PROJECT_DIR$/lib/smcutil/file_validator.rb">
110
112
  <provider selected="true" editor-type-id="text-editor">
111
- <state relative-caret-position="45">
112
- <caret line="3" column="21" lean-forward="false" selection-start-line="3" selection-start-column="21" selection-end-line="3" selection-end-column="21" />
113
+ <state relative-caret-position="567">
114
+ <caret line="54" column="55" lean-forward="false" selection-start-line="54" selection-start-column="55" selection-end-line="54" selection-end-column="55" />
115
+ <folding />
116
+ </state>
117
+ </provider>
118
+ </entry>
119
+ </file>
120
+ <file leaf-file-name="region.rb" pinned="false" current-in-tab="false">
121
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/region.rb">
122
+ <provider selected="true" editor-type-id="text-editor">
123
+ <state relative-caret-position="150">
124
+ <caret line="10" column="45" lean-forward="false" selection-start-line="10" selection-start-column="45" selection-end-line="10" selection-end-column="45" />
113
125
  <folding />
114
126
  </state>
115
127
  </provider>
@@ -117,6 +129,11 @@
117
129
  </file>
118
130
  </leaf>
119
131
  </component>
132
+ <component name="FindInProjectRecents">
133
+ <findStrings>
134
+ <find>&lt;</find>
135
+ </findStrings>
136
+ </component>
120
137
  <component name="Git.Settings">
121
138
  <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
122
139
  </component>
@@ -126,7 +143,6 @@
126
143
  <option value="$PROJECT_DIR$/smcutil.gemspec" />
127
144
  <option value="$PROJECT_DIR$/lib/smcutil/file_parser.rb" />
128
145
  <option value="$PROJECT_DIR$/spec/smcutil_spec.rb" />
129
- <option value="$PROJECT_DIR$/lib/smcutil/file_validator.rb" />
130
146
  <option value="$PROJECT_DIR$/spec/smcutil/file_spec.rb" />
131
147
  <option value="$PROJECT_DIR$/lib/smcutil/file.rb" />
132
148
  <option value="$PROJECT_DIR$/spec/smcutil/file_reader_spec.rb" />
@@ -134,13 +150,15 @@
134
150
  <option value="$PROJECT_DIR$/spec/fixtures/flasher_base_lenth.smc" />
135
151
  <option value="$PROJECT_DIR$/spec/smcutil/file_validator_spec.rb" />
136
152
  <option value="$PROJECT_DIR$/spec/fixtures/flasher_base_checksum.smc" />
137
- <option value="$PROJECT_DIR$/lib/smcutil.rb" />
138
- <option value="$PROJECT_DIR$/lib/smcutil/file_reader.rb" />
139
153
  <option value="$PROJECT_DIR$/README.md" />
140
154
  <option value="$PROJECT_DIR$/lib/smcutil/file_extractor.rb" />
141
155
  <option value="$PROJECT_DIR$/spec/smcutil/file_extractor_spec.rb" />
142
- <option value="$PROJECT_DIR$/exe/smcutil" />
143
156
  <option value="$PROJECT_DIR$/lib/smcutil/version.rb" />
157
+ <option value="$PROJECT_DIR$/exe/smcutil" />
158
+ <option value="$PROJECT_DIR$/lib/smcutil/file_validator.rb" />
159
+ <option value="$PROJECT_DIR$/lib/smcutil/region.rb" />
160
+ <option value="$PROJECT_DIR$/lib/smcutil/file_reader.rb" />
161
+ <option value="$PROJECT_DIR$/lib/smcutil.rb" />
144
162
  </list>
145
163
  </option>
146
164
  </component>
@@ -150,8 +168,9 @@
150
168
  <detection-done>true</detection-done>
151
169
  <sorting>DEFINITION_ORDER</sorting>
152
170
  </component>
153
- <component name="ProjectFrameBounds" extendedState="6">
154
- <option name="y" value="23" />
171
+ <component name="ProjectFrameBounds">
172
+ <option name="x" value="178" />
173
+ <option name="y" value="78" />
155
174
  <option name="width" value="1680" />
156
175
  <option name="height" value="983" />
157
176
  </component>
@@ -171,7 +190,6 @@
171
190
  <foldersAlwaysOnTop value="true" />
172
191
  </navigator>
173
192
  <panes>
174
- <pane id="Scope" />
175
193
  <pane id="Scratches" />
176
194
  <pane id="ProjectPane">
177
195
  <subPane>
@@ -222,6 +240,7 @@
222
240
  <select />
223
241
  </subPane>
224
242
  </pane>
243
+ <pane id="Scope" />
225
244
  </panes>
226
245
  </component>
227
246
  <component name="PropertiesComponent">
@@ -285,7 +304,10 @@
285
304
  <updated>1507637323942</updated>
286
305
  <workItem from="1507637325399" duration="2380000" />
287
306
  <workItem from="1507706458195" duration="11326000" />
288
- <workItem from="1507771477082" duration="2423000" />
307
+ <workItem from="1507771477082" duration="2652000" />
308
+ <workItem from="1508047031062" duration="10000" />
309
+ <workItem from="1508047051136" duration="509000" />
310
+ <workItem from="1508048226512" duration="5433000" />
289
311
  </task>
290
312
  <servers />
291
313
  </component>
@@ -322,18 +344,19 @@
322
344
  </history-entry>
323
345
  </component>
324
346
  <component name="TimeTrackingManager">
325
- <option name="totallyTimeSpent" value="16129000" />
347
+ <option name="totallyTimeSpent" value="22310000" />
326
348
  </component>
327
349
  <component name="ToolWindowManager">
328
- <frame x="0" y="23" width="1680" height="983" extended-state="6" />
350
+ <frame x="178" y="78" width="1680" height="983" extended-state="0" />
329
351
  <editor active="true" />
330
352
  <layout>
331
- <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.1990232" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
353
+ <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.20634921" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
332
354
  <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
333
355
  <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
334
356
  <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
357
+ <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32934782" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
335
358
  <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
336
- <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.33151582" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
359
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33151582" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
337
360
  <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
338
361
  <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
339
362
  <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
@@ -343,7 +366,6 @@
343
366
  <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
344
367
  <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
345
368
  <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
346
- <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32934782" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
347
369
  <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
348
370
  </layout>
349
371
  </component>
@@ -358,11 +380,146 @@
358
380
  <watches-manager />
359
381
  </component>
360
382
  <component name="editorHistoryManager">
383
+ <entry file="file://$PROJECT_DIR$/smcutil.gemspec">
384
+ <provider selected="true" editor-type-id="text-editor">
385
+ <state relative-caret-position="285">
386
+ <caret line="19" column="62" lean-forward="false" selection-start-line="19" selection-start-column="62" selection-end-line="19" selection-end-column="62" />
387
+ <folding />
388
+ </state>
389
+ </provider>
390
+ </entry>
391
+ <entry file="file://$PROJECT_DIR$/spec/fixtures/flasher_base.smc">
392
+ <provider selected="true" editor-type-id="text-editor">
393
+ <state relative-caret-position="0">
394
+ <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
395
+ <folding />
396
+ </state>
397
+ </provider>
398
+ </entry>
399
+ <entry file="file://$PROJECT_DIR$/spec/smcutil/file_validator_spec.rb">
400
+ <provider selected="true" editor-type-id="text-editor">
401
+ <state relative-caret-position="240">
402
+ <caret line="16" column="0" lean-forward="false" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
403
+ <folding />
404
+ </state>
405
+ </provider>
406
+ </entry>
407
+ <entry file="file://$PROJECT_DIR$/spec/smcutil/file_extractor_spec.rb">
408
+ <provider selected="true" editor-type-id="text-editor">
409
+ <state relative-caret-position="270">
410
+ <caret line="18" column="3" lean-forward="true" selection-start-line="18" selection-start-column="3" selection-end-line="18" selection-end-column="3" />
411
+ <folding />
412
+ </state>
413
+ </provider>
414
+ </entry>
415
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/file_reader.rb">
416
+ <provider selected="true" editor-type-id="text-editor">
417
+ <state relative-caret-position="120">
418
+ <caret line="8" column="0" lean-forward="false" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
419
+ <folding />
420
+ </state>
421
+ </provider>
422
+ </entry>
423
+ <entry file="file://$PROJECT_DIR$/lib/smcutil.rb">
424
+ <provider selected="true" editor-type-id="text-editor">
425
+ <state relative-caret-position="75">
426
+ <caret line="5" column="51" lean-forward="false" selection-start-line="5" selection-start-column="51" selection-end-line="5" selection-end-column="51" />
427
+ <folding />
428
+ </state>
429
+ </provider>
430
+ </entry>
431
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/file_validator.rb">
432
+ <provider selected="true" editor-type-id="text-editor">
433
+ <state relative-caret-position="45">
434
+ <caret line="3" column="21" lean-forward="false" selection-start-line="3" selection-start-column="21" selection-end-line="3" selection-end-column="21" />
435
+ <folding />
436
+ </state>
437
+ </provider>
438
+ </entry>
439
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/version.rb">
440
+ <provider selected="true" editor-type-id="text-editor">
441
+ <state relative-caret-position="45">
442
+ <caret line="3" column="0" lean-forward="true" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
443
+ <folding />
444
+ </state>
445
+ </provider>
446
+ </entry>
447
+ <entry file="file://$PROJECT_DIR$/exe/smcutil">
448
+ <provider selected="true" editor-type-id="text-editor">
449
+ <state relative-caret-position="780">
450
+ <caret line="52" column="44" lean-forward="false" selection-start-line="52" selection-start-column="44" selection-end-line="52" selection-end-column="44" />
451
+ <folding />
452
+ </state>
453
+ </provider>
454
+ </entry>
455
+ <entry file="file://$PROJECT_DIR$/smcutil.gemspec">
456
+ <provider selected="true" editor-type-id="text-editor">
457
+ <state relative-caret-position="285">
458
+ <caret line="19" column="62" lean-forward="false" selection-start-line="19" selection-start-column="62" selection-end-line="19" selection-end-column="62" />
459
+ <folding />
460
+ </state>
461
+ </provider>
462
+ </entry>
463
+ <entry file="file://$PROJECT_DIR$/spec/fixtures/flasher_base.smc">
464
+ <provider selected="true" editor-type-id="text-editor">
465
+ <state relative-caret-position="0">
466
+ <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
467
+ <folding />
468
+ </state>
469
+ </provider>
470
+ </entry>
471
+ <entry file="file://$PROJECT_DIR$/spec/smcutil/file_validator_spec.rb">
472
+ <provider selected="true" editor-type-id="text-editor">
473
+ <state relative-caret-position="240">
474
+ <caret line="16" column="0" lean-forward="false" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
475
+ <folding />
476
+ </state>
477
+ </provider>
478
+ </entry>
479
+ <entry file="file://$PROJECT_DIR$/spec/smcutil/file_extractor_spec.rb">
480
+ <provider selected="true" editor-type-id="text-editor">
481
+ <state relative-caret-position="270">
482
+ <caret line="18" column="3" lean-forward="true" selection-start-line="18" selection-start-column="3" selection-end-line="18" selection-end-column="3" />
483
+ <folding />
484
+ </state>
485
+ </provider>
486
+ </entry>
487
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/file_reader.rb">
488
+ <provider selected="true" editor-type-id="text-editor">
489
+ <state relative-caret-position="120">
490
+ <caret line="8" column="0" lean-forward="false" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
491
+ <folding />
492
+ </state>
493
+ </provider>
494
+ </entry>
495
+ <entry file="file://$PROJECT_DIR$/lib/smcutil.rb">
496
+ <provider selected="true" editor-type-id="text-editor">
497
+ <state relative-caret-position="75">
498
+ <caret line="5" column="51" lean-forward="false" selection-start-line="5" selection-start-column="51" selection-end-line="5" selection-end-column="51" />
499
+ <folding />
500
+ </state>
501
+ </provider>
502
+ </entry>
503
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/file_validator.rb">
504
+ <provider selected="true" editor-type-id="text-editor">
505
+ <state relative-caret-position="45">
506
+ <caret line="3" column="21" lean-forward="false" selection-start-line="3" selection-start-column="21" selection-end-line="3" selection-end-column="21" />
507
+ <folding />
508
+ </state>
509
+ </provider>
510
+ </entry>
511
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/version.rb">
512
+ <provider selected="true" editor-type-id="text-editor">
513
+ <state relative-caret-position="45">
514
+ <caret line="3" column="0" lean-forward="true" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
515
+ <folding />
516
+ </state>
517
+ </provider>
518
+ </entry>
361
519
  <entry file="file://$PROJECT_DIR$/lib/smcutil/file_extractor.rb">
362
520
  <provider selected="true" editor-type-id="text-editor">
363
521
  <state relative-caret-position="360">
364
522
  <caret line="24" column="3" lean-forward="false" selection-start-line="24" selection-start-column="3" selection-end-line="24" selection-end-column="3" />
365
- <folding />
366
523
  </state>
367
524
  </provider>
368
525
  </entry>
@@ -378,7 +535,6 @@
378
535
  <provider selected="true" editor-type-id="text-editor">
379
536
  <state relative-caret-position="75">
380
537
  <caret line="5" column="0" lean-forward="false" selection-start-line="4" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
381
- <folding />
382
538
  </state>
383
539
  </provider>
384
540
  </entry>
@@ -411,7 +567,6 @@
411
567
  <state split_layout="SPLIT">
412
568
  <first_editor relative-caret-position="210">
413
569
  <caret line="14" column="37" lean-forward="true" selection-start-line="14" selection-start-column="37" selection-end-line="14" selection-end-column="37" />
414
- <folding />
415
570
  </first_editor>
416
571
  <second_editor />
417
572
  </state>
@@ -513,7 +668,6 @@
513
668
  <provider selected="true" editor-type-id="text-editor">
514
669
  <state relative-caret-position="75">
515
670
  <caret line="5" column="0" lean-forward="false" selection-start-line="4" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
516
- <folding />
517
671
  </state>
518
672
  </provider>
519
673
  </entry>
@@ -530,23 +684,14 @@
530
684
  <state split_layout="SPLIT">
531
685
  <first_editor relative-caret-position="210">
532
686
  <caret line="14" column="37" lean-forward="false" selection-start-line="14" selection-start-column="37" selection-end-line="14" selection-end-column="37" />
533
- <folding />
534
687
  </first_editor>
535
688
  <second_editor />
536
689
  </state>
537
690
  </provider>
538
691
  </entry>
539
- <entry file="file://$PROJECT_DIR$/smcutil.gemspec">
540
- <provider selected="true" editor-type-id="text-editor">
541
- <state relative-caret-position="283">
542
- <caret line="19" column="62" lean-forward="false" selection-start-line="19" selection-start-column="62" selection-end-line="19" selection-end-column="62" />
543
- <folding />
544
- </state>
545
- </provider>
546
- </entry>
547
692
  <entry file="file://$PROJECT_DIR$/spec/fixtures/flasher_base.smc">
548
693
  <provider selected="true" editor-type-id="text-editor">
549
- <state relative-caret-position="-10920">
694
+ <state relative-caret-position="0">
550
695
  <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
551
696
  <folding />
552
697
  </state>
@@ -556,22 +701,21 @@
556
701
  <provider selected="true" editor-type-id="text-editor">
557
702
  <state relative-caret-position="105">
558
703
  <caret line="7" column="0" lean-forward="true" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
559
- <folding />
560
704
  </state>
561
705
  </provider>
562
706
  </entry>
563
- <entry file="file://$PROJECT_DIR$/lib/smcutil/file_validator.rb">
707
+ <entry file="file://$PROJECT_DIR$/spec/smcutil/file_extractor_spec.rb">
564
708
  <provider selected="true" editor-type-id="text-editor">
565
- <state relative-caret-position="45">
566
- <caret line="3" column="21" lean-forward="false" selection-start-line="3" selection-start-column="21" selection-end-line="3" selection-end-column="21" />
709
+ <state relative-caret-position="270">
710
+ <caret line="18" column="3" lean-forward="true" selection-start-line="18" selection-start-column="3" selection-end-line="18" selection-end-column="3" />
567
711
  <folding />
568
712
  </state>
569
713
  </provider>
570
714
  </entry>
571
- <entry file="file://$PROJECT_DIR$/lib/smcutil/file_reader.rb">
715
+ <entry file="file://$PROJECT_DIR$/smcutil.gemspec">
572
716
  <provider selected="true" editor-type-id="text-editor">
573
- <state relative-caret-position="120">
574
- <caret line="8" column="0" lean-forward="false" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
717
+ <state relative-caret-position="285">
718
+ <caret line="19" column="62" lean-forward="false" selection-start-line="19" selection-start-column="62" selection-end-line="19" selection-end-column="62" />
575
719
  <folding />
576
720
  </state>
577
721
  </provider>
@@ -584,34 +728,50 @@
584
728
  </state>
585
729
  </provider>
586
730
  </entry>
587
- <entry file="file://$PROJECT_DIR$/spec/smcutil/file_extractor_spec.rb">
731
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/version.rb">
588
732
  <provider selected="true" editor-type-id="text-editor">
589
- <state relative-caret-position="270">
590
- <caret line="18" column="3" lean-forward="true" selection-start-line="18" selection-start-column="3" selection-end-line="18" selection-end-column="3" />
733
+ <state relative-caret-position="15">
734
+ <caret line="1" column="18" lean-forward="false" selection-start-line="1" selection-start-column="18" selection-end-line="1" selection-end-column="18" />
591
735
  <folding />
592
736
  </state>
593
737
  </provider>
594
738
  </entry>
595
739
  <entry file="file://$PROJECT_DIR$/exe/smcutil">
596
740
  <provider selected="true" editor-type-id="text-editor">
597
- <state relative-caret-position="353">
598
- <caret line="52" column="44" lean-forward="false" selection-start-line="52" selection-start-column="44" selection-end-line="52" selection-end-column="44" />
741
+ <state relative-caret-position="357">
742
+ <caret line="44" column="23" lean-forward="false" selection-start-line="44" selection-start-column="23" selection-end-line="44" selection-end-column="23" />
599
743
  <folding />
600
744
  </state>
601
745
  </provider>
602
746
  </entry>
603
- <entry file="file://$PROJECT_DIR$/lib/smcutil.rb">
747
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/file_validator.rb">
604
748
  <provider selected="true" editor-type-id="text-editor">
605
- <state relative-caret-position="75">
606
- <caret line="5" column="51" lean-forward="false" selection-start-line="5" selection-start-column="51" selection-end-line="5" selection-end-column="51" />
749
+ <state relative-caret-position="567">
750
+ <caret line="54" column="55" lean-forward="false" selection-start-line="54" selection-start-column="55" selection-end-line="54" selection-end-column="55" />
607
751
  <folding />
608
752
  </state>
609
753
  </provider>
610
754
  </entry>
611
- <entry file="file://$PROJECT_DIR$/lib/smcutil/version.rb">
755
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/region.rb">
612
756
  <provider selected="true" editor-type-id="text-editor">
613
- <state relative-caret-position="45">
614
- <caret line="3" column="0" lean-forward="true" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
757
+ <state relative-caret-position="150">
758
+ <caret line="10" column="45" lean-forward="false" selection-start-line="10" selection-start-column="45" selection-end-line="10" selection-end-column="45" />
759
+ <folding />
760
+ </state>
761
+ </provider>
762
+ </entry>
763
+ <entry file="file://$PROJECT_DIR$/lib/smcutil/file_reader.rb">
764
+ <provider selected="true" editor-type-id="text-editor">
765
+ <state relative-caret-position="672">
766
+ <caret line="55" column="32" lean-forward="false" selection-start-line="55" selection-start-column="32" selection-end-line="55" selection-end-column="32" />
767
+ <folding />
768
+ </state>
769
+ </provider>
770
+ </entry>
771
+ <entry file="file://$PROJECT_DIR$/lib/smcutil.rb">
772
+ <provider selected="true" editor-type-id="text-editor">
773
+ <state relative-caret-position="30">
774
+ <caret line="2" column="14" lean-forward="false" selection-start-line="2" selection-start-column="14" selection-end-line="2" selection-end-column="14" />
615
775
  <folding />
616
776
  </state>
617
777
  </provider>
data/exe/smcutil CHANGED
@@ -39,9 +39,19 @@ case command
39
39
  file = ARGV.shift
40
40
  show_usage unless file
41
41
  reader = SmcUtil::FileReader.parse file
42
+
43
+ validator = SmcUtil::FileValidator.new reader
44
+
45
+ if validator.valid?
42
46
  puts "The file '#{file}' is valid."
47
+ else
48
+ validator.errors.each do |error|
49
+ puts "ERROR: #{error}"
50
+ end
51
+ end
43
52
  rescue => ex
44
53
  puts ex
54
+ puts ex.backtrace
45
55
  end
46
56
  when :decode
47
57
  begin
@@ -54,6 +64,7 @@ case command
54
64
  extractor.extract_to output
55
65
  rescue => ex
56
66
  puts ex
67
+ puts ex.backtrace
57
68
  end
58
69
  when :info
59
70
 
@@ -2,7 +2,7 @@ module SmcUtil
2
2
  LINE_COMMAND = /((?<type>[[:upper:]]):(?<offset>([[:xdigit:]]{2})+:)?|(?<continue>\+\s+:))(?<length>\d+):(?<data>([[:xdigit:]]{2})+):(?<check>[[:xdigit:]]{2})/
3
3
 
4
4
  class FileReader
5
- attr_reader :header
5
+ attr_reader :headers
6
6
  attr_reader :signature
7
7
  attr_reader :regions
8
8
 
@@ -10,9 +10,9 @@ module SmcUtil
10
10
  def initialize(data)
11
11
 
12
12
  # Setup the collected data
13
- @header = String.new
14
- @signature = String.new
15
- @regions = {}
13
+ @headers = []
14
+ @signature = ''
15
+ @regions = []
16
16
 
17
17
  current_region = nil
18
18
 
@@ -37,18 +37,23 @@ module SmcUtil
37
37
 
38
38
  case match[:type]
39
39
  when 'H'
40
- @header += data
40
+ @headers << data
41
41
  when 'S'
42
42
  @signature += data
43
43
  when 'D'
44
- current_region = match[:offset].to_i(16)
45
- @regions[current_region] = String.new
46
- @regions[current_region] += data
44
+ if match[:offset]
45
+ current_offset = match[:offset].scan(/../).map { |x| x.hex.chr }.join.bytes.inject {|a, b| (a << 8) + b }
46
+
47
+ current_region = SmcUtil::Region.new current_offset, ''
48
+ @regions << current_region
49
+ end
50
+
51
+ current_region.data += data
47
52
  else
48
53
  raise "LINE #{index}: Command #{match[:type]} not recognised" unless match[:continue]
49
54
  raise "LINE #{index}: Continuation row with no data region set" unless current_region
50
55
 
51
- @regions[current_region] += data
56
+ current_region.data += data
52
57
  end
53
58
  end
54
59
  end
@@ -1,7 +1,68 @@
1
-
1
+ require 'openssl'
2
2
 
3
3
  module SmcUtil
4
4
  class FileValidator
5
+ attr_reader :file, :errors
6
+
7
+ def initialize(file)
8
+ @file = file
9
+ end
10
+
11
+ def validate!
12
+ @errors = []
13
+
14
+ validate_regions!
15
+ validate_headers!
16
+ validate_signature!
17
+ end
18
+
19
+ def valid?
20
+ validate!
21
+
22
+ !@errors.any?
23
+ end
24
+
25
+ def validate_regions!
26
+ @file.regions.any?
27
+ end
28
+
29
+ def validate_headers!
30
+ return false unless @file.headers.any? || (@file.headers.count != @file.regions.count)
31
+
32
+ hash_algorithm = nil
33
+
34
+ case @file.headers[0].length
35
+ when 20
36
+ hash_algorithm = OpenSSL::Digest::SHA1
37
+ when 32
38
+ hash_algorithm = OpenSSL::Digest::SHA256
39
+ when 64
40
+ hash_algorithm = OpenSSL::Digest::SHA512
41
+ else
42
+ @errors << "ERROR: Digest of header row with length #{@file.headers[0].count} bytes is unsupported. (But pull requests are accepted)" and return
43
+ end
44
+
45
+ zipped_regions = @file.regions.zip(@file.headers)
46
+ zipped_regions.each do |region, header|
47
+ begin
48
+ hash = hash_algorithm.new
49
+
50
+ hash << region.data
51
+
52
+ if hash.digest == header
53
+ puts "DEBUG: Validated hash for region #{region}" if SmcUtil::DEBUG
54
+ else
55
+ @errors << "Header hash for region #{region} does not match expected"
56
+ end
57
+ rescue => ex
58
+ puts "ERROR: #{ex}"
59
+ puts ex.backtrace
60
+ end
61
+ end
62
+ end
5
63
 
64
+ def validate_signature!
65
+ # TODO: Find the RSA 2048 bit key that signs this
66
+ end
6
67
  end
7
- end
68
+ end
@@ -0,0 +1,14 @@
1
+ module SmcUtil
2
+ class Region
3
+ attr_accessor :offset, :data
4
+
5
+ def initialize(offset, data)
6
+ @offset = offset
7
+ @data = data
8
+ end
9
+
10
+ def to_s
11
+ "#{self.offset} (length #{data.length})"
12
+ end
13
+ end
14
+ end
@@ -1,3 +1,3 @@
1
1
  module SmcUtil
2
- VERSION = '0.1.2'.freeze
2
+ VERSION = '0.1.3'.freeze
3
3
  end
data/lib/smcutil.rb CHANGED
@@ -4,4 +4,5 @@ module SmcUtil
4
4
  autoload :FileReader, 'smcutil/file_reader'
5
5
  autoload :FileValidator, 'smcutil/file_validator'
6
6
  autoload :FileExtractor, 'smcutil/file_extractor'
7
+ autoload :Region, 'smcutil/region'
7
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smcutil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rick Mark
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-12 00:00:00.000000000 Z
11
+ date: 2017-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -82,6 +82,7 @@ files:
82
82
  - lib/smcutil/file_extractor.rb
83
83
  - lib/smcutil/file_reader.rb
84
84
  - lib/smcutil/file_validator.rb
85
+ - lib/smcutil/region.rb
85
86
  - lib/smcutil/version.rb
86
87
  - smcutil.gemspec
87
88
  homepage: https://github.com/rickmark/smcutil