pwkeep 0.0.3 → 0.0.4
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.
- data/.gitignore +1 -0
- data/Gemfile.lock +3 -13
- data/README.md +4 -2
- data/Rakefile +5 -0
- data/doc/PWKeep.html +323 -0
- data/doc/PWKeep/Config.html +192 -0
- data/doc/PWKeep/Editor.html +778 -0
- data/doc/PWKeep/EditorApplication.html +1221 -0
- data/doc/PWKeep/Exception.html +123 -0
- data/doc/PWKeep/Main.html +805 -0
- data/doc/PWKeep/StatusBar.html +436 -0
- data/doc/PWKeep/Storage.html +1128 -0
- data/doc/_index.html +191 -0
- data/doc/class_list.html +54 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +338 -0
- data/doc/file.README.html +145 -0
- data/doc/file_list.html +56 -0
- data/doc/frames.html +28 -0
- data/doc/index.html +145 -0
- data/doc/js/app.js +214 -0
- data/doc/js/full_list.js +178 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +371 -0
- data/doc/top-level-namespace.html +112 -0
- data/lib/pwkeep.rb +0 -1
- data/lib/pwkeep/editor.rb +8 -457
- data/lib/pwkeep/main.rb +36 -13
- data/lib/pwkeep/storage.rb +22 -12
- data/pwkeep.gemspec +2 -2
- metadata +26 -4
@@ -0,0 +1,436 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
+
<title>
|
7
|
+
Class: PWKeep::StatusBar
|
8
|
+
|
9
|
+
— Documentation by YARD 0.8.6.2
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />
|
16
|
+
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
hasFrames = window.top.frames.main ? true : false;
|
19
|
+
relpath = '../';
|
20
|
+
framesUrl = "../frames.html#!" + escape(window.location.href);
|
21
|
+
</script>
|
22
|
+
|
23
|
+
|
24
|
+
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
|
25
|
+
|
26
|
+
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
|
27
|
+
|
28
|
+
|
29
|
+
</head>
|
30
|
+
<body>
|
31
|
+
<div id="header">
|
32
|
+
<div id="menu">
|
33
|
+
|
34
|
+
<a href="../_index.html">Index (S)</a> »
|
35
|
+
<span class='title'><span class='object_link'><a href="../PWKeep.html" title="PWKeep (module)">PWKeep</a></span></span>
|
36
|
+
»
|
37
|
+
<span class="title">StatusBar</span>
|
38
|
+
|
39
|
+
|
40
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<div id="search">
|
44
|
+
|
45
|
+
<a class="full_list_link" id="class_list_link"
|
46
|
+
href="../class_list.html">
|
47
|
+
Class List
|
48
|
+
</a>
|
49
|
+
|
50
|
+
<a class="full_list_link" id="method_list_link"
|
51
|
+
href="../method_list.html">
|
52
|
+
Method List
|
53
|
+
</a>
|
54
|
+
|
55
|
+
<a class="full_list_link" id="file_list_link"
|
56
|
+
href="../file_list.html">
|
57
|
+
File List
|
58
|
+
</a>
|
59
|
+
|
60
|
+
</div>
|
61
|
+
<div class="clear"></div>
|
62
|
+
</div>
|
63
|
+
|
64
|
+
<iframe id="search_frame"></iframe>
|
65
|
+
|
66
|
+
<div id="content"><h1>Class: PWKeep::StatusBar
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
</h1>
|
71
|
+
|
72
|
+
<dl class="box">
|
73
|
+
|
74
|
+
<dt class="r1">Inherits:</dt>
|
75
|
+
<dd class="r1">
|
76
|
+
<span class="inheritName">Object</span>
|
77
|
+
|
78
|
+
<ul class="fullTree">
|
79
|
+
<li>Object</li>
|
80
|
+
|
81
|
+
<li class="next">PWKeep::StatusBar</li>
|
82
|
+
|
83
|
+
</ul>
|
84
|
+
<a href="#" class="inheritanceTree">show all</a>
|
85
|
+
|
86
|
+
</dd>
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
<dt class="r2 last">Defined in:</dt>
|
97
|
+
<dd class="r2 last">lib/pwkeep/editor.rb</dd>
|
98
|
+
|
99
|
+
</dl>
|
100
|
+
<div class="clear"></div>
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
<h2>
|
111
|
+
Instance Method Summary
|
112
|
+
<small>(<a href="#" class="summary_toggle">collapse</a>)</small>
|
113
|
+
</h2>
|
114
|
+
|
115
|
+
<ul class="summary">
|
116
|
+
|
117
|
+
<li class="public ">
|
118
|
+
<span class="summary_signature">
|
119
|
+
|
120
|
+
<a href="#change_indicator-instance_method" title="#change_indicator (instance method)">- (Object) <strong>change_indicator</strong> </a>
|
121
|
+
|
122
|
+
|
123
|
+
|
124
|
+
</span>
|
125
|
+
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
|
134
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
135
|
+
|
136
|
+
</li>
|
137
|
+
|
138
|
+
|
139
|
+
<li class="public ">
|
140
|
+
<span class="summary_signature">
|
141
|
+
|
142
|
+
<a href="#initialize-instance_method" title="#initialize (instance method)">- (StatusBar) <strong>initialize</strong>(editor, options) </a>
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
</span>
|
147
|
+
|
148
|
+
|
149
|
+
<span class="note title constructor">constructor</span>
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
|
158
|
+
<span class="summary_desc"><div class='inline'>
|
159
|
+
<p>A new instance of StatusBar.</p>
|
160
|
+
</div></span>
|
161
|
+
|
162
|
+
</li>
|
163
|
+
|
164
|
+
|
165
|
+
<li class="public ">
|
166
|
+
<span class="summary_signature">
|
167
|
+
|
168
|
+
<a href="#style_map-instance_method" title="#style_map (instance method)">- (Object) <strong>style_map</strong> </a>
|
169
|
+
|
170
|
+
|
171
|
+
|
172
|
+
</span>
|
173
|
+
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
|
182
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
183
|
+
|
184
|
+
</li>
|
185
|
+
|
186
|
+
|
187
|
+
<li class="public ">
|
188
|
+
<span class="summary_signature">
|
189
|
+
|
190
|
+
<a href="#view-instance_method" title="#view (instance method)">- (Object) <strong>view</strong> </a>
|
191
|
+
|
192
|
+
|
193
|
+
|
194
|
+
</span>
|
195
|
+
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
|
204
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
205
|
+
|
206
|
+
</li>
|
207
|
+
|
208
|
+
|
209
|
+
<li class="public ">
|
210
|
+
<span class="summary_signature">
|
211
|
+
|
212
|
+
<a href="#writable_indicator-instance_method" title="#writable_indicator (instance method)">- (Object) <strong>writable_indicator</strong> </a>
|
213
|
+
|
214
|
+
|
215
|
+
|
216
|
+
</span>
|
217
|
+
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
|
224
|
+
|
225
|
+
|
226
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
227
|
+
|
228
|
+
</li>
|
229
|
+
|
230
|
+
|
231
|
+
</ul>
|
232
|
+
|
233
|
+
|
234
|
+
<div id="constructor_details" class="method_details_list">
|
235
|
+
<h2>Constructor Details</h2>
|
236
|
+
|
237
|
+
<div class="method_details first">
|
238
|
+
<h3 class="signature first" id="initialize-instance_method">
|
239
|
+
|
240
|
+
- (<tt><span class='object_link'><a href="" title="PWKeep::StatusBar (class)">StatusBar</a></span></tt>) <strong>initialize</strong>(editor, options)
|
241
|
+
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
|
246
|
+
</h3><div class="docstring">
|
247
|
+
<div class="discussion">
|
248
|
+
|
249
|
+
<p>A new instance of StatusBar</p>
|
250
|
+
|
251
|
+
|
252
|
+
</div>
|
253
|
+
</div>
|
254
|
+
<div class="tags">
|
255
|
+
|
256
|
+
|
257
|
+
</div><table class="source_code">
|
258
|
+
<tr>
|
259
|
+
<td>
|
260
|
+
<pre class="lines">
|
261
|
+
|
262
|
+
|
263
|
+
422
|
264
|
+
423
|
265
|
+
424
|
266
|
+
425</pre>
|
267
|
+
</td>
|
268
|
+
<td>
|
269
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/editor.rb', line 422</span>
|
270
|
+
|
271
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_editor'>editor</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
|
272
|
+
<span class='ivar'>@editor</span> <span class='op'>=</span> <span class='id identifier rubyid_editor'>editor</span>
|
273
|
+
<span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
|
274
|
+
<span class='kw'>end</span></pre>
|
275
|
+
</td>
|
276
|
+
</tr>
|
277
|
+
</table>
|
278
|
+
</div>
|
279
|
+
|
280
|
+
</div>
|
281
|
+
|
282
|
+
|
283
|
+
<div id="instance_method_details" class="method_details_list">
|
284
|
+
<h2>Instance Method Details</h2>
|
285
|
+
|
286
|
+
|
287
|
+
<div class="method_details first">
|
288
|
+
<h3 class="signature first" id="change_indicator-instance_method">
|
289
|
+
|
290
|
+
- (<tt>Object</tt>) <strong>change_indicator</strong>
|
291
|
+
|
292
|
+
|
293
|
+
|
294
|
+
|
295
|
+
|
296
|
+
</h3><table class="source_code">
|
297
|
+
<tr>
|
298
|
+
<td>
|
299
|
+
<pre class="lines">
|
300
|
+
|
301
|
+
|
302
|
+
444
|
303
|
+
445
|
304
|
+
446</pre>
|
305
|
+
</td>
|
306
|
+
<td>
|
307
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/editor.rb', line 444</span>
|
308
|
+
|
309
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_change_indicator'>change_indicator</span>
|
310
|
+
<span class='ivar'>@editor</span><span class='period'>.</span><span class='id identifier rubyid_modified?'>modified?</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>*</span><span class='tstring_end'>'</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'> </span><span class='tstring_end'>'</span></span>
|
311
|
+
<span class='kw'>end</span></pre>
|
312
|
+
</td>
|
313
|
+
</tr>
|
314
|
+
</table>
|
315
|
+
</div>
|
316
|
+
|
317
|
+
<div class="method_details ">
|
318
|
+
<h3 class="signature " id="style_map-instance_method">
|
319
|
+
|
320
|
+
- (<tt>Object</tt>) <strong>style_map</strong>
|
321
|
+
|
322
|
+
|
323
|
+
|
324
|
+
|
325
|
+
|
326
|
+
</h3><table class="source_code">
|
327
|
+
<tr>
|
328
|
+
<td>
|
329
|
+
<pre class="lines">
|
330
|
+
|
331
|
+
|
332
|
+
440
|
333
|
+
441
|
334
|
+
442</pre>
|
335
|
+
</td>
|
336
|
+
<td>
|
337
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/editor.rb', line 440</span>
|
338
|
+
|
339
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_style_map'>style_map</span>
|
340
|
+
<span class='const'>Dispel</span><span class='op'>::</span><span class='const'>StyleMap</span><span class='period'>.</span><span class='id identifier rubyid_single_line_reversed'>single_line_reversed</span><span class='lparen'>(</span><span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:columns</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
341
|
+
<span class='kw'>end</span></pre>
|
342
|
+
</td>
|
343
|
+
</tr>
|
344
|
+
</table>
|
345
|
+
</div>
|
346
|
+
|
347
|
+
<div class="method_details ">
|
348
|
+
<h3 class="signature " id="view-instance_method">
|
349
|
+
|
350
|
+
- (<tt>Object</tt>) <strong>view</strong>
|
351
|
+
|
352
|
+
|
353
|
+
|
354
|
+
|
355
|
+
|
356
|
+
</h3><table class="source_code">
|
357
|
+
<tr>
|
358
|
+
<td>
|
359
|
+
<pre class="lines">
|
360
|
+
|
361
|
+
|
362
|
+
427
|
363
|
+
428
|
364
|
+
429
|
365
|
+
430
|
366
|
+
431
|
367
|
+
432
|
368
|
+
433
|
369
|
+
434
|
370
|
+
435
|
371
|
+
436
|
372
|
+
437
|
373
|
+
438</pre>
|
374
|
+
</td>
|
375
|
+
<td>
|
376
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/editor.rb', line 427</span>
|
377
|
+
|
378
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_view'>view</span>
|
379
|
+
<span class='id identifier rubyid_columns'>columns</span> <span class='op'>=</span> <span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:columns</span><span class='rbracket'>]</span>
|
380
|
+
|
381
|
+
<span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Ruco </span><span class='embexpr_beg'>#{</span><span class='const'>Ruco</span><span class='op'>::</span><span class='const'>VERSION</span><span class='rbrace'>}</span><span class='tstring_content'> -- </span><span class='tstring_end'>"</span></span>
|
382
|
+
<span class='id identifier rubyid_position'>position</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='ivar'>@editor</span><span class='period'>.</span><span class='id identifier rubyid_position'>position</span><span class='period'>.</span><span class='id identifier rubyid_line'>line</span> <span class='op'>+</span> <span class='int'>1</span><span class='rbrace'>}</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='ivar'>@editor</span><span class='period'>.</span><span class='id identifier rubyid_position'>position</span><span class='period'>.</span><span class='id identifier rubyid_column'>column</span> <span class='op'>+</span> <span class='int'>1</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span>
|
383
|
+
<span class='id identifier rubyid_indicators'>indicators</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_change_indicator'>change_indicator</span><span class='rbrace'>}</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_writable_indicator'>writable_indicator</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span>
|
384
|
+
<span class='id identifier rubyid_essential'>essential</span> <span class='op'>=</span> <span class='id identifier rubyid_version'>version</span> <span class='op'>+</span> <span class='id identifier rubyid_position'>position</span> <span class='op'>+</span> <span class='id identifier rubyid_indicators'>indicators</span>
|
385
|
+
<span class='id identifier rubyid_space_left'>space_left</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_columns'>columns</span> <span class='op'>-</span> <span class='id identifier rubyid_essential'>essential</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='comma'>,</span> <span class='int'>0</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span>
|
386
|
+
|
387
|
+
<span class='comment'># fit file name into remaining space
|
388
|
+
</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_version'>version</span><span class='rbrace'>}</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_indicators'>indicators</span><span class='rbrace'>}</span><span class='embexpr_beg'>#{</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'> </span><span class='tstring_end'>'</span></span> <span class='op'>*</span> <span class='id identifier rubyid_space_left'>space_left</span><span class='rbrace'>}</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_position'>position</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='lbracket'>[</span><span class='int'>0</span><span class='comma'>,</span> <span class='id identifier rubyid_columns'>columns</span><span class='rbracket'>]</span>
|
389
|
+
<span class='kw'>end</span></pre>
|
390
|
+
</td>
|
391
|
+
</tr>
|
392
|
+
</table>
|
393
|
+
</div>
|
394
|
+
|
395
|
+
<div class="method_details ">
|
396
|
+
<h3 class="signature " id="writable_indicator-instance_method">
|
397
|
+
|
398
|
+
- (<tt>Object</tt>) <strong>writable_indicator</strong>
|
399
|
+
|
400
|
+
|
401
|
+
|
402
|
+
|
403
|
+
|
404
|
+
</h3><table class="source_code">
|
405
|
+
<tr>
|
406
|
+
<td>
|
407
|
+
<pre class="lines">
|
408
|
+
|
409
|
+
|
410
|
+
448
|
411
|
+
449
|
412
|
+
450</pre>
|
413
|
+
</td>
|
414
|
+
<td>
|
415
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/editor.rb', line 448</span>
|
416
|
+
|
417
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_writable_indicator'>writable_indicator</span>
|
418
|
+
<span class='kw'>true</span>
|
419
|
+
<span class='kw'>end</span></pre>
|
420
|
+
</td>
|
421
|
+
</tr>
|
422
|
+
</table>
|
423
|
+
</div>
|
424
|
+
|
425
|
+
</div>
|
426
|
+
|
427
|
+
</div>
|
428
|
+
|
429
|
+
<div id="footer">
|
430
|
+
Generated on Thu Jan 9 16:06:07 2014 by
|
431
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
432
|
+
0.8.6.2 (ruby-1.9.3).
|
433
|
+
</div>
|
434
|
+
|
435
|
+
</body>
|
436
|
+
</html>
|
@@ -0,0 +1,1128 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
+
<title>
|
7
|
+
Class: PWKeep::Storage
|
8
|
+
|
9
|
+
— Documentation by YARD 0.8.6.2
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />
|
16
|
+
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
hasFrames = window.top.frames.main ? true : false;
|
19
|
+
relpath = '../';
|
20
|
+
framesUrl = "../frames.html#!" + escape(window.location.href);
|
21
|
+
</script>
|
22
|
+
|
23
|
+
|
24
|
+
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
|
25
|
+
|
26
|
+
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
|
27
|
+
|
28
|
+
|
29
|
+
</head>
|
30
|
+
<body>
|
31
|
+
<div id="header">
|
32
|
+
<div id="menu">
|
33
|
+
|
34
|
+
<a href="../_index.html">Index (S)</a> »
|
35
|
+
<span class='title'><span class='object_link'><a href="../PWKeep.html" title="PWKeep (module)">PWKeep</a></span></span>
|
36
|
+
»
|
37
|
+
<span class="title">Storage</span>
|
38
|
+
|
39
|
+
|
40
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<div id="search">
|
44
|
+
|
45
|
+
<a class="full_list_link" id="class_list_link"
|
46
|
+
href="../class_list.html">
|
47
|
+
Class List
|
48
|
+
</a>
|
49
|
+
|
50
|
+
<a class="full_list_link" id="method_list_link"
|
51
|
+
href="../method_list.html">
|
52
|
+
Method List
|
53
|
+
</a>
|
54
|
+
|
55
|
+
<a class="full_list_link" id="file_list_link"
|
56
|
+
href="../file_list.html">
|
57
|
+
File List
|
58
|
+
</a>
|
59
|
+
|
60
|
+
</div>
|
61
|
+
<div class="clear"></div>
|
62
|
+
</div>
|
63
|
+
|
64
|
+
<iframe id="search_frame"></iframe>
|
65
|
+
|
66
|
+
<div id="content"><h1>Class: PWKeep::Storage
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
</h1>
|
71
|
+
|
72
|
+
<dl class="box">
|
73
|
+
|
74
|
+
<dt class="r1">Inherits:</dt>
|
75
|
+
<dd class="r1">
|
76
|
+
<span class="inheritName">Object</span>
|
77
|
+
|
78
|
+
<ul class="fullTree">
|
79
|
+
<li>Object</li>
|
80
|
+
|
81
|
+
<li class="next">PWKeep::Storage</li>
|
82
|
+
|
83
|
+
</ul>
|
84
|
+
<a href="#" class="inheritanceTree">show all</a>
|
85
|
+
|
86
|
+
</dd>
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
<dt class="r2 last">Defined in:</dt>
|
97
|
+
<dd class="r2 last">lib/pwkeep/storage.rb</dd>
|
98
|
+
|
99
|
+
</dl>
|
100
|
+
<div class="clear"></div>
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
<h2>
|
111
|
+
Instance Method Summary
|
112
|
+
<small>(<a href="#" class="summary_toggle">collapse</a>)</small>
|
113
|
+
</h2>
|
114
|
+
|
115
|
+
<ul class="summary">
|
116
|
+
|
117
|
+
<li class="public ">
|
118
|
+
<span class="summary_signature">
|
119
|
+
|
120
|
+
<a href="#create-instance_method" title="#create (instance method)">- (Object) <strong>create</strong> </a>
|
121
|
+
|
122
|
+
|
123
|
+
|
124
|
+
</span>
|
125
|
+
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
|
134
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
135
|
+
|
136
|
+
</li>
|
137
|
+
|
138
|
+
|
139
|
+
<li class="public ">
|
140
|
+
<span class="summary_signature">
|
141
|
+
|
142
|
+
<a href="#decrypt_system-instance_method" title="#decrypt_system (instance method)">- (Object) <strong>decrypt_system</strong>(file) </a>
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
</span>
|
147
|
+
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
|
156
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
157
|
+
|
158
|
+
</li>
|
159
|
+
|
160
|
+
|
161
|
+
<li class="public ">
|
162
|
+
<span class="summary_signature">
|
163
|
+
|
164
|
+
<a href="#delete-instance_method" title="#delete (instance method)">- (Object) <strong>delete</strong>(system) </a>
|
165
|
+
|
166
|
+
|
167
|
+
|
168
|
+
</span>
|
169
|
+
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
|
178
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
179
|
+
|
180
|
+
</li>
|
181
|
+
|
182
|
+
|
183
|
+
<li class="public ">
|
184
|
+
<span class="summary_signature">
|
185
|
+
|
186
|
+
<a href="#encrypt_system-instance_method" title="#encrypt_system (instance method)">- (Object) <strong>encrypt_system</strong>(file, data) </a>
|
187
|
+
|
188
|
+
|
189
|
+
|
190
|
+
</span>
|
191
|
+
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
|
200
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
201
|
+
|
202
|
+
</li>
|
203
|
+
|
204
|
+
|
205
|
+
<li class="public ">
|
206
|
+
<span class="summary_signature">
|
207
|
+
|
208
|
+
<a href="#initialize-instance_method" title="#initialize (instance method)">- (Storage) <strong>initialize</strong>(options) </a>
|
209
|
+
|
210
|
+
|
211
|
+
|
212
|
+
</span>
|
213
|
+
|
214
|
+
|
215
|
+
<span class="note title constructor">constructor</span>
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
|
224
|
+
<span class="summary_desc"><div class='inline'>
|
225
|
+
<p>A new instance of Storage.</p>
|
226
|
+
</div></span>
|
227
|
+
|
228
|
+
</li>
|
229
|
+
|
230
|
+
|
231
|
+
<li class="public ">
|
232
|
+
<span class="summary_signature">
|
233
|
+
|
234
|
+
<a href="#keypair_create-instance_method" title="#keypair_create (instance method)">- (Object) <strong>keypair_create</strong>(password) </a>
|
235
|
+
|
236
|
+
|
237
|
+
|
238
|
+
</span>
|
239
|
+
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
249
|
+
|
250
|
+
</li>
|
251
|
+
|
252
|
+
|
253
|
+
<li class="public ">
|
254
|
+
<span class="summary_signature">
|
255
|
+
|
256
|
+
<a href="#keypair_load-instance_method" title="#keypair_load (instance method)">- (Object) <strong>keypair_load</strong>(password) </a>
|
257
|
+
|
258
|
+
|
259
|
+
|
260
|
+
</span>
|
261
|
+
|
262
|
+
|
263
|
+
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
|
270
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
271
|
+
|
272
|
+
</li>
|
273
|
+
|
274
|
+
|
275
|
+
<li class="public ">
|
276
|
+
<span class="summary_signature">
|
277
|
+
|
278
|
+
<a href="#list_all_systems-instance_method" title="#list_all_systems (instance method)">- (Object) <strong>list_all_systems</strong> </a>
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
</span>
|
283
|
+
|
284
|
+
|
285
|
+
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
|
290
|
+
|
291
|
+
|
292
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
293
|
+
|
294
|
+
</li>
|
295
|
+
|
296
|
+
|
297
|
+
<li class="public ">
|
298
|
+
<span class="summary_signature">
|
299
|
+
|
300
|
+
<a href="#load_system-instance_method" title="#load_system (instance method)">- (Object) <strong>load_system</strong>(system) </a>
|
301
|
+
|
302
|
+
|
303
|
+
|
304
|
+
</span>
|
305
|
+
|
306
|
+
|
307
|
+
|
308
|
+
|
309
|
+
|
310
|
+
|
311
|
+
|
312
|
+
|
313
|
+
|
314
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
315
|
+
|
316
|
+
</li>
|
317
|
+
|
318
|
+
|
319
|
+
<li class="public ">
|
320
|
+
<span class="summary_signature">
|
321
|
+
|
322
|
+
<a href="#master_key_load-instance_method" title="#master_key_load (instance method)">- (Object) <strong>master_key_load</strong> </a>
|
323
|
+
|
324
|
+
|
325
|
+
|
326
|
+
</span>
|
327
|
+
|
328
|
+
|
329
|
+
|
330
|
+
|
331
|
+
|
332
|
+
|
333
|
+
|
334
|
+
|
335
|
+
|
336
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
337
|
+
|
338
|
+
</li>
|
339
|
+
|
340
|
+
|
341
|
+
<li class="public ">
|
342
|
+
<span class="summary_signature">
|
343
|
+
|
344
|
+
<a href="#path-instance_method" title="#path (instance method)">- (Object) <strong>path</strong> </a>
|
345
|
+
|
346
|
+
|
347
|
+
|
348
|
+
</span>
|
349
|
+
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
|
354
|
+
|
355
|
+
|
356
|
+
|
357
|
+
|
358
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
359
|
+
|
360
|
+
</li>
|
361
|
+
|
362
|
+
|
363
|
+
<li class="public ">
|
364
|
+
<span class="summary_signature">
|
365
|
+
|
366
|
+
<a href="#save_system-instance_method" title="#save_system (instance method)">- (Object) <strong>save_system</strong>(system, data) </a>
|
367
|
+
|
368
|
+
|
369
|
+
|
370
|
+
</span>
|
371
|
+
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
|
376
|
+
|
377
|
+
|
378
|
+
|
379
|
+
|
380
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
381
|
+
|
382
|
+
</li>
|
383
|
+
|
384
|
+
|
385
|
+
<li class="public ">
|
386
|
+
<span class="summary_signature">
|
387
|
+
|
388
|
+
<a href="#system_to_hash-instance_method" title="#system_to_hash (instance method)">- (Object) <strong>system_to_hash</strong>(system) </a>
|
389
|
+
|
390
|
+
|
391
|
+
|
392
|
+
</span>
|
393
|
+
|
394
|
+
|
395
|
+
|
396
|
+
|
397
|
+
|
398
|
+
|
399
|
+
|
400
|
+
|
401
|
+
|
402
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
403
|
+
|
404
|
+
</li>
|
405
|
+
|
406
|
+
|
407
|
+
<li class="public ">
|
408
|
+
<span class="summary_signature">
|
409
|
+
|
410
|
+
<a href="#valid%3F-instance_method" title="#valid? (instance method)">- (Boolean) <strong>valid?</strong> </a>
|
411
|
+
|
412
|
+
|
413
|
+
|
414
|
+
</span>
|
415
|
+
|
416
|
+
|
417
|
+
|
418
|
+
|
419
|
+
|
420
|
+
|
421
|
+
|
422
|
+
|
423
|
+
|
424
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
425
|
+
|
426
|
+
</li>
|
427
|
+
|
428
|
+
|
429
|
+
</ul>
|
430
|
+
|
431
|
+
|
432
|
+
<div id="constructor_details" class="method_details_list">
|
433
|
+
<h2>Constructor Details</h2>
|
434
|
+
|
435
|
+
<div class="method_details first">
|
436
|
+
<h3 class="signature first" id="initialize-instance_method">
|
437
|
+
|
438
|
+
- (<tt><span class='object_link'><a href="" title="PWKeep::Storage (class)">Storage</a></span></tt>) <strong>initialize</strong>(options)
|
439
|
+
|
440
|
+
|
441
|
+
|
442
|
+
|
443
|
+
|
444
|
+
</h3><div class="docstring">
|
445
|
+
<div class="discussion">
|
446
|
+
|
447
|
+
<p>A new instance of Storage</p>
|
448
|
+
|
449
|
+
|
450
|
+
</div>
|
451
|
+
</div>
|
452
|
+
<div class="tags">
|
453
|
+
|
454
|
+
|
455
|
+
</div><table class="source_code">
|
456
|
+
<tr>
|
457
|
+
<td>
|
458
|
+
<pre class="lines">
|
459
|
+
|
460
|
+
|
461
|
+
13
|
462
|
+
14
|
463
|
+
15
|
464
|
+
16
|
465
|
+
17
|
466
|
+
18
|
467
|
+
19
|
468
|
+
20
|
469
|
+
21
|
470
|
+
22
|
471
|
+
23
|
472
|
+
24
|
473
|
+
25
|
474
|
+
26
|
475
|
+
27
|
476
|
+
28
|
477
|
+
29
|
478
|
+
30</pre>
|
479
|
+
</td>
|
480
|
+
<td>
|
481
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/storage.rb', line 13</span>
|
482
|
+
|
483
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
|
484
|
+
<span class='ivar'>@options</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span>
|
485
|
+
|
486
|
+
<span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:cipher</span><span class='rbracket'>]</span> <span class='op'>||=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>AES-256-CTR</span><span class='tstring_end'>'</span></span>
|
487
|
+
<span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:keysize</span><span class='rbracket'>]</span> <span class='op'>||=</span> <span class='int'>2048</span>
|
488
|
+
<span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:iterations</span><span class='rbracket'>]</span> <span class='op'>||=</span> <span class='int'>2000</span>
|
489
|
+
<span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:digest</span><span class='rbracket'>]</span> <span class='op'>||=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>sha512</span><span class='tstring_end'>'</span></span>
|
490
|
+
|
491
|
+
<span class='kw'>unless</span> <span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:path</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>==</span> <span class='const'>Pathname</span>
|
492
|
+
<span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:path</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:path</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_expand_path'>expand_path</span>
|
493
|
+
<span class='kw'>end</span>
|
494
|
+
|
495
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_exist?'>exist?</span>
|
496
|
+
<span class='ivar'>@lockfile</span> <span class='op'>=</span> <span class='const'>Lockfile</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>.lock</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='comma'>,</span> <span class='symbol'>:retries</span> <span class='op'>=></span> <span class='int'>0</span>
|
497
|
+
<span class='ivar'>@lockfile</span><span class='period'>.</span><span class='id identifier rubyid_lock'>lock</span>
|
498
|
+
<span class='const'>ObjectSpace</span><span class='period'>.</span><span class='id identifier rubyid_define_finalizer'>define_finalizer</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id identifier rubyid_proc'>proc</span> <span class='lbrace'>{</span> <span class='ivar'>@lockfile</span><span class='period'>.</span><span class='id identifier rubyid_unlock'>unlock</span> <span class='rbrace'>}</span><span class='rparen'>)</span>
|
499
|
+
<span class='kw'>end</span>
|
500
|
+
<span class='kw'>end</span></pre>
|
501
|
+
</td>
|
502
|
+
</tr>
|
503
|
+
</table>
|
504
|
+
</div>
|
505
|
+
|
506
|
+
</div>
|
507
|
+
|
508
|
+
|
509
|
+
<div id="instance_method_details" class="method_details_list">
|
510
|
+
<h2>Instance Method Details</h2>
|
511
|
+
|
512
|
+
|
513
|
+
<div class="method_details first">
|
514
|
+
<h3 class="signature first" id="create-instance_method">
|
515
|
+
|
516
|
+
- (<tt>Object</tt>) <strong>create</strong>
|
517
|
+
|
518
|
+
|
519
|
+
|
520
|
+
|
521
|
+
|
522
|
+
</h3><table class="source_code">
|
523
|
+
<tr>
|
524
|
+
<td>
|
525
|
+
<pre class="lines">
|
526
|
+
|
527
|
+
|
528
|
+
32
|
529
|
+
33
|
530
|
+
34
|
531
|
+
35
|
532
|
+
36
|
533
|
+
37
|
534
|
+
38</pre>
|
535
|
+
</td>
|
536
|
+
<td>
|
537
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/storage.rb', line 32</span>
|
538
|
+
|
539
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_create'>create</span>
|
540
|
+
<span class='kw'>return</span> <span class='kw'>if</span> <span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_exist?'>exist?</span>
|
541
|
+
<span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_mkdir'>mkdir</span>
|
542
|
+
<span class='ivar'>@lockfile</span> <span class='op'>=</span> <span class='const'>Lockfile</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>.lock</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='comma'>,</span> <span class='symbol'>:retries</span> <span class='op'>=></span> <span class='int'>0</span>
|
543
|
+
<span class='ivar'>@lockfile</span><span class='period'>.</span><span class='id identifier rubyid_lock'>lock</span>
|
544
|
+
<span class='const'>ObjectSpace</span><span class='period'>.</span><span class='id identifier rubyid_define_finalizer'>define_finalizer</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id identifier rubyid_proc'>proc</span> <span class='lbrace'>{</span> <span class='ivar'>@lockfile</span><span class='period'>.</span><span class='id identifier rubyid_unlock'>unlock</span> <span class='rbrace'>}</span><span class='rparen'>)</span>
|
545
|
+
<span class='kw'>end</span></pre>
|
546
|
+
</td>
|
547
|
+
</tr>
|
548
|
+
</table>
|
549
|
+
</div>
|
550
|
+
|
551
|
+
<div class="method_details ">
|
552
|
+
<h3 class="signature " id="decrypt_system-instance_method">
|
553
|
+
|
554
|
+
- (<tt>Object</tt>) <strong>decrypt_system</strong>(file)
|
555
|
+
|
556
|
+
|
557
|
+
|
558
|
+
|
559
|
+
|
560
|
+
</h3><table class="source_code">
|
561
|
+
<tr>
|
562
|
+
<td>
|
563
|
+
<pre class="lines">
|
564
|
+
|
565
|
+
|
566
|
+
73
|
567
|
+
74
|
568
|
+
75
|
569
|
+
76
|
570
|
+
77
|
571
|
+
78
|
572
|
+
79
|
573
|
+
80
|
574
|
+
81
|
575
|
+
82
|
576
|
+
83
|
577
|
+
84
|
578
|
+
85
|
579
|
+
86
|
580
|
+
87
|
581
|
+
88
|
582
|
+
89
|
583
|
+
90
|
584
|
+
91
|
585
|
+
92
|
586
|
+
93
|
587
|
+
94
|
588
|
+
95
|
589
|
+
96
|
590
|
+
97
|
591
|
+
98</pre>
|
592
|
+
</td>
|
593
|
+
<td>
|
594
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/storage.rb', line 73</span>
|
595
|
+
|
596
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_decrypt_system'>decrypt_system</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span>
|
597
|
+
<span class='kw'>unless</span> <span class='ivar'>@key</span>
|
598
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>PWKeep</span><span class='op'>::</span><span class='const'>Exception</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Private key required</span><span class='tstring_end'>"</span></span>
|
599
|
+
<span class='kw'>end</span>
|
600
|
+
<span class='comment'># found it, decrypt and load json
|
601
|
+
</span> <span class='comment'># the file contains crypto name, iv len, iv, data
|
602
|
+
</span> <span class='id identifier rubyid_header'>header</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
603
|
+
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
604
|
+
<span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>rb</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_io'>io</span><span class='op'>|</span>
|
605
|
+
<span class='id identifier rubyid_header'>header</span> <span class='op'>=</span> <span class='id identifier rubyid_io'>io</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span> <span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:keysize</span><span class='rbracket'>]</span><span class='op'>/</span><span class='int'>8</span>
|
606
|
+
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='id identifier rubyid_io'>io</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span>
|
607
|
+
<span class='rbrace'>}</span>
|
608
|
+
|
609
|
+
<span class='comment'># header
|
610
|
+
</span> <span class='id identifier rubyid_cipher'>cipher</span> <span class='op'>=</span> <span class='ivar'>@key</span><span class='period'>.</span><span class='id identifier rubyid_private_decrypt'>private_decrypt</span><span class='lparen'>(</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span><span class='int'>4</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_unpack'>unpack</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Z*</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span>
|
611
|
+
<span class='id identifier rubyid_cipher'>cipher</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Cipher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='id identifier rubyid_cipher'>cipher</span>
|
612
|
+
<span class='comment'># re-unpack now that we know the size of the rest of the fields...
|
613
|
+
</span> <span class='id identifier rubyid_header'>header</span> <span class='op'>=</span> <span class='ivar'>@key</span><span class='period'>.</span><span class='id identifier rubyid_private_decrypt'>private_decrypt</span><span class='lparen'>(</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span><span class='int'>4</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_unpack'>unpack</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Z*a</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_iv_len'>iv_len</span><span class='rbrace'>}</span><span class='tstring_content'>a</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_key_len'>key_len</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
614
|
+
|
615
|
+
<span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_decrypt'>decrypt</span>
|
616
|
+
<span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_iv'>iv</span> <span class='op'>=</span> <span class='id identifier rubyid_header'>header</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span>
|
617
|
+
<span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span> <span class='op'>=</span> <span class='id identifier rubyid_header'>header</span><span class='lbracket'>[</span><span class='int'>2</span><span class='rbracket'>]</span>
|
618
|
+
|
619
|
+
<span class='comment'># perform decrypt
|
620
|
+
</span> <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_final'>final</span>
|
621
|
+
<span class='kw'>end</span></pre>
|
622
|
+
</td>
|
623
|
+
</tr>
|
624
|
+
</table>
|
625
|
+
</div>
|
626
|
+
|
627
|
+
<div class="method_details ">
|
628
|
+
<h3 class="signature " id="delete-instance_method">
|
629
|
+
|
630
|
+
- (<tt>Object</tt>) <strong>delete</strong>(system)
|
631
|
+
|
632
|
+
|
633
|
+
|
634
|
+
|
635
|
+
|
636
|
+
</h3><table class="source_code">
|
637
|
+
<tr>
|
638
|
+
<td>
|
639
|
+
<pre class="lines">
|
640
|
+
|
641
|
+
|
642
|
+
158
|
643
|
+
159
|
644
|
+
160
|
645
|
+
161
|
646
|
+
162
|
647
|
+
163
|
648
|
+
164
|
649
|
+
165</pre>
|
650
|
+
</td>
|
651
|
+
<td>
|
652
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/storage.rb', line 158</span>
|
653
|
+
|
654
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='id identifier rubyid_system'>system</span><span class='rparen'>)</span>
|
655
|
+
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='id identifier rubyid_load_system'>load_system</span><span class='lparen'>(</span><span class='id identifier rubyid_system'>system</span><span class='rparen'>)</span>
|
656
|
+
<span class='kw'>unless</span> <span class='id identifier rubyid_data'>data</span><span class='lbracket'>[</span><span class='symbol'>:system</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='id identifier rubyid_system'>system</span>
|
657
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>PWKeep</span><span class='op'>::</span><span class='const'>Exception</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>System not found</span><span class='tstring_end'>"</span></span>
|
658
|
+
<span class='kw'>end</span>
|
659
|
+
|
660
|
+
<span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='id identifier rubyid_system_to_hash'>system_to_hash</span><span class='lparen'>(</span><span class='id identifier rubyid_system'>system</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_delete!'>delete!</span>
|
661
|
+
<span class='kw'>end</span></pre>
|
662
|
+
</td>
|
663
|
+
</tr>
|
664
|
+
</table>
|
665
|
+
</div>
|
666
|
+
|
667
|
+
<div class="method_details ">
|
668
|
+
<h3 class="signature " id="encrypt_system-instance_method">
|
669
|
+
|
670
|
+
- (<tt>Object</tt>) <strong>encrypt_system</strong>(file, data)
|
671
|
+
|
672
|
+
|
673
|
+
|
674
|
+
|
675
|
+
|
676
|
+
</h3><table class="source_code">
|
677
|
+
<tr>
|
678
|
+
<td>
|
679
|
+
<pre class="lines">
|
680
|
+
|
681
|
+
|
682
|
+
100
|
683
|
+
101
|
684
|
+
102
|
685
|
+
103
|
686
|
+
104
|
687
|
+
105
|
688
|
+
106
|
689
|
+
107
|
690
|
+
108
|
691
|
+
109
|
692
|
+
110
|
693
|
+
111
|
694
|
+
112
|
695
|
+
113
|
696
|
+
114
|
697
|
+
115
|
698
|
+
116
|
699
|
+
117
|
700
|
+
118
|
701
|
+
119
|
702
|
+
120
|
703
|
+
121
|
704
|
+
122
|
705
|
+
123</pre>
|
706
|
+
</td>
|
707
|
+
<td>
|
708
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/storage.rb', line 100</span>
|
709
|
+
|
710
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_encrypt_system'>encrypt_system</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
711
|
+
<span class='kw'>unless</span> <span class='ivar'>@key</span>
|
712
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>PWKeep</span><span class='op'>::</span><span class='const'>Exception</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Private key required</span><span class='tstring_end'>"</span></span>
|
713
|
+
<span class='kw'>end</span>
|
714
|
+
|
715
|
+
<span class='comment'># encrypt data
|
716
|
+
</span> <span class='id identifier rubyid_cipher'>cipher</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Cipher</span><span class='op'>::</span><span class='const'>Cipher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:cipher</span><span class='rbracket'>]</span>
|
717
|
+
<span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_encrypt'>encrypt</span>
|
718
|
+
|
719
|
+
<span class='comment'># use one time key and iv
|
720
|
+
</span> <span class='id identifier rubyid_iv'>iv</span> <span class='op'>=</span> <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_random_iv'>random_iv</span>
|
721
|
+
<span class='id identifier rubyid_key'>key</span> <span class='op'>=</span> <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_random_key'>random_key</span>
|
722
|
+
|
723
|
+
<span class='id identifier rubyid_header'>header</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_pack'>pack</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Z*a</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_iv_len'>iv_len</span><span class='rbrace'>}</span><span class='tstring_content'>a</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_key_len'>key_len</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
724
|
+
<span class='id identifier rubyid_blob'>blob</span> <span class='op'>=</span> <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_final'>final</span>
|
725
|
+
|
726
|
+
<span class='comment'># store system name to make search work
|
727
|
+
</span> <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>wb</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_io'>io</span><span class='op'>|</span>
|
728
|
+
<span class='id identifier rubyid_io'>io</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span> <span class='ivar'>@key</span><span class='period'>.</span><span class='id identifier rubyid_public_encrypt'>public_encrypt</span> <span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='int'>4</span>
|
729
|
+
<span class='id identifier rubyid_io'>io</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span> <span class='id identifier rubyid_blob'>blob</span>
|
730
|
+
<span class='kw'>end</span>
|
731
|
+
|
732
|
+
<span class='kw'>true</span>
|
733
|
+
<span class='kw'>end</span></pre>
|
734
|
+
</td>
|
735
|
+
</tr>
|
736
|
+
</table>
|
737
|
+
</div>
|
738
|
+
|
739
|
+
<div class="method_details ">
|
740
|
+
<h3 class="signature " id="keypair_create-instance_method">
|
741
|
+
|
742
|
+
- (<tt>Object</tt>) <strong>keypair_create</strong>(password)
|
743
|
+
|
744
|
+
|
745
|
+
|
746
|
+
|
747
|
+
|
748
|
+
</h3><table class="source_code">
|
749
|
+
<tr>
|
750
|
+
<td>
|
751
|
+
<pre class="lines">
|
752
|
+
|
753
|
+
|
754
|
+
40
|
755
|
+
41
|
756
|
+
42
|
757
|
+
43
|
758
|
+
44
|
759
|
+
45
|
760
|
+
46</pre>
|
761
|
+
</td>
|
762
|
+
<td>
|
763
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/storage.rb', line 40</span>
|
764
|
+
|
765
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_keypair_create'>keypair_create</span><span class='lparen'>(</span><span class='id identifier rubyid_password'>password</span><span class='rparen'>)</span>
|
766
|
+
<span class='comment'># ensure it does not exist
|
767
|
+
</span> <span class='ivar'>@key</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>PKey</span><span class='op'>::</span><span class='const'>RSA</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:keysize</span><span class='rbracket'>]</span>
|
768
|
+
<span class='id identifier rubyid_cipher'>cipher</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Cipher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:keycipher</span><span class='rbracket'>]</span>
|
769
|
+
|
770
|
+
<span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>private.pem</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>w</span><span class='tstring_end'>'</span></span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_io'>io</span><span class='op'>|</span> <span class='id identifier rubyid_io'>io</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span> <span class='ivar'>@key</span><span class='period'>.</span><span class='id identifier rubyid_export'>export</span><span class='lparen'>(</span><span class='id identifier rubyid_cipher'>cipher</span><span class='comma'>,</span> <span class='id identifier rubyid_password'>password</span><span class='rparen'>)</span> <span class='kw'>end</span>
|
771
|
+
<span class='kw'>end</span></pre>
|
772
|
+
</td>
|
773
|
+
</tr>
|
774
|
+
</table>
|
775
|
+
</div>
|
776
|
+
|
777
|
+
<div class="method_details ">
|
778
|
+
<h3 class="signature " id="keypair_load-instance_method">
|
779
|
+
|
780
|
+
- (<tt>Object</tt>) <strong>keypair_load</strong>(password)
|
781
|
+
|
782
|
+
|
783
|
+
|
784
|
+
|
785
|
+
|
786
|
+
</h3><table class="source_code">
|
787
|
+
<tr>
|
788
|
+
<td>
|
789
|
+
<pre class="lines">
|
790
|
+
|
791
|
+
|
792
|
+
48
|
793
|
+
49
|
794
|
+
50
|
795
|
+
51</pre>
|
796
|
+
</td>
|
797
|
+
<td>
|
798
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/storage.rb', line 48</span>
|
799
|
+
|
800
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_keypair_load'>keypair_load</span><span class='lparen'>(</span><span class='id identifier rubyid_password'>password</span><span class='rparen'>)</span>
|
801
|
+
<span class='id identifier rubyid_key_pem'>key_pem</span> <span class='op'>=</span> <span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>private.pem</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span>
|
802
|
+
<span class='ivar'>@key</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>PKey</span><span class='op'>::</span><span class='const'>RSA</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='id identifier rubyid_key_pem'>key_pem</span><span class='comma'>,</span> <span class='id identifier rubyid_password'>password</span>
|
803
|
+
<span class='kw'>end</span></pre>
|
804
|
+
</td>
|
805
|
+
</tr>
|
806
|
+
</table>
|
807
|
+
</div>
|
808
|
+
|
809
|
+
<div class="method_details ">
|
810
|
+
<h3 class="signature " id="list_all_systems-instance_method">
|
811
|
+
|
812
|
+
- (<tt>Object</tt>) <strong>list_all_systems</strong>
|
813
|
+
|
814
|
+
|
815
|
+
|
816
|
+
|
817
|
+
|
818
|
+
</h3><table class="source_code">
|
819
|
+
<tr>
|
820
|
+
<td>
|
821
|
+
<pre class="lines">
|
822
|
+
|
823
|
+
|
824
|
+
167
|
825
|
+
168
|
826
|
+
169
|
827
|
+
170
|
828
|
+
171
|
829
|
+
172
|
830
|
+
173
|
831
|
+
174</pre>
|
832
|
+
</td>
|
833
|
+
<td>
|
834
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/storage.rb', line 167</span>
|
835
|
+
|
836
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_list_all_systems'>list_all_systems</span>
|
837
|
+
<span class='id identifier rubyid_systems'>systems</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
838
|
+
<span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_entries'>entries</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_s'>s</span><span class='op'>|</span>
|
839
|
+
<span class='kw'>next</span> <span class='kw'>unless</span> <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_fnmatch?'>fnmatch?</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>system-*</span><span class='tstring_end'>"</span></span>
|
840
|
+
<span class='id identifier rubyid_systems'>systems</span> <span class='op'><<</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span><span class='lparen'>(</span><span class='id identifier rubyid_decrypt_system'>decrypt_system</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='id identifier rubyid_s'>s</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>system</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
841
|
+
<span class='kw'>end</span>
|
842
|
+
<span class='id identifier rubyid_systems'>systems</span>
|
843
|
+
<span class='kw'>end</span></pre>
|
844
|
+
</td>
|
845
|
+
</tr>
|
846
|
+
</table>
|
847
|
+
</div>
|
848
|
+
|
849
|
+
<div class="method_details ">
|
850
|
+
<h3 class="signature " id="load_system-instance_method">
|
851
|
+
|
852
|
+
- (<tt>Object</tt>) <strong>load_system</strong>(system)
|
853
|
+
|
854
|
+
|
855
|
+
|
856
|
+
|
857
|
+
|
858
|
+
</h3><table class="source_code">
|
859
|
+
<tr>
|
860
|
+
<td>
|
861
|
+
<pre class="lines">
|
862
|
+
|
863
|
+
|
864
|
+
125
|
865
|
+
126
|
866
|
+
127
|
867
|
+
128
|
868
|
+
129
|
869
|
+
130
|
870
|
+
131
|
871
|
+
132
|
872
|
+
133
|
873
|
+
134
|
874
|
+
135
|
875
|
+
136
|
876
|
+
137
|
877
|
+
138
|
878
|
+
139
|
879
|
+
140</pre>
|
880
|
+
</td>
|
881
|
+
<td>
|
882
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/storage.rb', line 125</span>
|
883
|
+
|
884
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_load_system'>load_system</span><span class='lparen'>(</span><span class='id identifier rubyid_system'>system</span><span class='rparen'>)</span>
|
885
|
+
<span class='kw'>unless</span> <span class='ivar'>@key</span>
|
886
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>PWKeep</span><span class='op'>::</span><span class='const'>Exception</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Private key required</span><span class='tstring_end'>"</span></span>
|
887
|
+
<span class='kw'>end</span>
|
888
|
+
|
889
|
+
<span class='id identifier rubyid_system_h'>system_h</span> <span class='op'>=</span> <span class='id identifier rubyid_system_to_hash'>system_to_hash</span><span class='lparen'>(</span><span class='id identifier rubyid_system'>system</span><span class='rparen'>)</span>
|
890
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Cannot find </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_system'>system</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='id identifier rubyid_system_h'>system_h</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_exist?'>exist?</span>
|
891
|
+
|
892
|
+
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='id identifier rubyid_decrypt_system'>decrypt_system</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='id identifier rubyid_system_h'>system_h</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
893
|
+
|
894
|
+
<span class='kw'>unless</span> <span class='id identifier rubyid_data'>data</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>{</span><span class='tstring_end'>"</span></span> <span class='kw'>and</span> <span class='id identifier rubyid_data'>data</span><span class='lbracket'>[</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>}</span><span class='tstring_end'>"</span></span>
|
895
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>PWKeep</span><span class='op'>::</span><span class='const'>Exception</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Corrupted data file</span><span class='tstring_end'>"</span></span>
|
896
|
+
<span class='kw'>end</span>
|
897
|
+
|
898
|
+
<span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_deep_symbolize_keys'>deep_symbolize_keys</span>
|
899
|
+
<span class='kw'>end</span></pre>
|
900
|
+
</td>
|
901
|
+
</tr>
|
902
|
+
</table>
|
903
|
+
</div>
|
904
|
+
|
905
|
+
<div class="method_details ">
|
906
|
+
<h3 class="signature " id="master_key_load-instance_method">
|
907
|
+
|
908
|
+
- (<tt>Object</tt>) <strong>master_key_load</strong>
|
909
|
+
|
910
|
+
|
911
|
+
|
912
|
+
|
913
|
+
|
914
|
+
</h3><table class="source_code">
|
915
|
+
<tr>
|
916
|
+
<td>
|
917
|
+
<pre class="lines">
|
918
|
+
|
919
|
+
|
920
|
+
53
|
921
|
+
54
|
922
|
+
55
|
923
|
+
56
|
924
|
+
57
|
925
|
+
58
|
926
|
+
59
|
927
|
+
60</pre>
|
928
|
+
</td>
|
929
|
+
<td>
|
930
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/storage.rb', line 53</span>
|
931
|
+
|
932
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_master_key_load'>master_key_load</span>
|
933
|
+
<span class='kw'>unless</span> <span class='ivar'>@key</span>
|
934
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>PWKeep</span><span class='op'>::</span><span class='const'>Exception</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>RSA private key required</span><span class='tstring_end'>"</span></span>
|
935
|
+
<span class='kw'>end</span>
|
936
|
+
|
937
|
+
<span class='comment'># load the key
|
938
|
+
</span> <span class='ivar'>@master_key</span> <span class='op'>=</span> <span class='ivar'>@key</span><span class='period'>.</span><span class='id identifier rubyid_private_decrypt'>private_decrypt</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>master.key</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>rb</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_io'>io</span><span class='op'>|</span> <span class='id identifier rubyid_io'>io</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span> <span class='rbrace'>}</span><span class='comma'>,</span><span class='int'>4</span><span class='rparen'>)</span>
|
939
|
+
<span class='kw'>end</span></pre>
|
940
|
+
</td>
|
941
|
+
</tr>
|
942
|
+
</table>
|
943
|
+
</div>
|
944
|
+
|
945
|
+
<div class="method_details ">
|
946
|
+
<h3 class="signature " id="path-instance_method">
|
947
|
+
|
948
|
+
- (<tt>Object</tt>) <strong>path</strong>
|
949
|
+
|
950
|
+
|
951
|
+
|
952
|
+
|
953
|
+
|
954
|
+
</h3><table class="source_code">
|
955
|
+
<tr>
|
956
|
+
<td>
|
957
|
+
<pre class="lines">
|
958
|
+
|
959
|
+
|
960
|
+
9
|
961
|
+
10
|
962
|
+
11</pre>
|
963
|
+
</td>
|
964
|
+
<td>
|
965
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/storage.rb', line 9</span>
|
966
|
+
|
967
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_path'>path</span>
|
968
|
+
<span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:path</span><span class='rbracket'>]</span>
|
969
|
+
<span class='kw'>end</span></pre>
|
970
|
+
</td>
|
971
|
+
</tr>
|
972
|
+
</table>
|
973
|
+
</div>
|
974
|
+
|
975
|
+
<div class="method_details ">
|
976
|
+
<h3 class="signature " id="save_system-instance_method">
|
977
|
+
|
978
|
+
- (<tt>Object</tt>) <strong>save_system</strong>(system, data)
|
979
|
+
|
980
|
+
|
981
|
+
|
982
|
+
|
983
|
+
|
984
|
+
</h3><table class="source_code">
|
985
|
+
<tr>
|
986
|
+
<td>
|
987
|
+
<pre class="lines">
|
988
|
+
|
989
|
+
|
990
|
+
142
|
991
|
+
143
|
992
|
+
144
|
993
|
+
145
|
994
|
+
146
|
995
|
+
147
|
996
|
+
148
|
997
|
+
149
|
998
|
+
150
|
999
|
+
151
|
1000
|
+
152</pre>
|
1001
|
+
</td>
|
1002
|
+
<td>
|
1003
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/storage.rb', line 142</span>
|
1004
|
+
|
1005
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_save_system'>save_system</span><span class='lparen'>(</span><span class='id identifier rubyid_system'>system</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
1006
|
+
<span class='kw'>unless</span> <span class='ivar'>@key</span>
|
1007
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>PWKeep</span><span class='op'>::</span><span class='const'>Exception</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Private key required</span><span class='tstring_end'>"</span></span>
|
1008
|
+
<span class='kw'>end</span>
|
1009
|
+
|
1010
|
+
<span class='comment'># write system
|
1011
|
+
</span> <span class='id identifier rubyid_system_h'>system_h</span> <span class='op'>=</span> <span class='id identifier rubyid_system_to_hash'>system_to_hash</span><span class='lparen'>(</span><span class='id identifier rubyid_system'>system</span><span class='rparen'>)</span>
|
1012
|
+
|
1013
|
+
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='symbol'>:system</span> <span class='op'>=></span> <span class='id identifier rubyid_system'>system</span><span class='comma'>,</span> <span class='symbol'>:data</span> <span class='op'>=></span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='symbol'>:stored_at</span> <span class='op'>=></span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span> <span class='rbrace'>}</span>
|
1014
|
+
<span class='id identifier rubyid_encrypt_system'>encrypt_system</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='id identifier rubyid_system_h'>system_h</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_data'>data</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span><span class='rparen'>)</span>
|
1015
|
+
<span class='kw'>end</span></pre>
|
1016
|
+
</td>
|
1017
|
+
</tr>
|
1018
|
+
</table>
|
1019
|
+
</div>
|
1020
|
+
|
1021
|
+
<div class="method_details ">
|
1022
|
+
<h3 class="signature " id="system_to_hash-instance_method">
|
1023
|
+
|
1024
|
+
- (<tt>Object</tt>) <strong>system_to_hash</strong>(system)
|
1025
|
+
|
1026
|
+
|
1027
|
+
|
1028
|
+
|
1029
|
+
|
1030
|
+
</h3><table class="source_code">
|
1031
|
+
<tr>
|
1032
|
+
<td>
|
1033
|
+
<pre class="lines">
|
1034
|
+
|
1035
|
+
|
1036
|
+
62
|
1037
|
+
63
|
1038
|
+
64
|
1039
|
+
65
|
1040
|
+
66
|
1041
|
+
67
|
1042
|
+
68
|
1043
|
+
69
|
1044
|
+
70
|
1045
|
+
71</pre>
|
1046
|
+
</td>
|
1047
|
+
<td>
|
1048
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/storage.rb', line 62</span>
|
1049
|
+
|
1050
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_system_to_hash'>system_to_hash</span><span class='lparen'>(</span><span class='id identifier rubyid_system'>system</span><span class='rparen'>)</span>
|
1051
|
+
<span class='id identifier rubyid_d'>d</span> <span class='op'>=</span> <span class='const'>Digest</span><span class='period'>.</span><span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:digest</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
1052
|
+
|
1053
|
+
<span class='id identifier rubyid_system_h'>system_h</span> <span class='op'>=</span> <span class='id identifier rubyid_system'>system</span><span class='period'>.</span><span class='id identifier rubyid_downcase'>downcase</span>
|
1054
|
+
<span class='lparen'>(</span><span class='int'>0</span><span class='op'>..</span><span class='ivar'>@options</span><span class='lbracket'>[</span><span class='symbol'>:iterations</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span>
|
1055
|
+
<span class='id identifier rubyid_system_h'>system_h</span> <span class='op'>=</span> <span class='id identifier rubyid_d'>d</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span><span class='id identifier rubyid_system_h'>system_h</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_digest'>digest</span>
|
1056
|
+
<span class='id identifier rubyid_d'>d</span><span class='period'>.</span><span class='id identifier rubyid_reset'>reset</span>
|
1057
|
+
<span class='kw'>end</span>
|
1058
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>system-</span><span class='embexpr_beg'>#{</span><span class='const'>Base64</span><span class='period'>.</span><span class='id identifier rubyid_urlsafe_encode64'>urlsafe_encode64</span><span class='lparen'>(</span><span class='id identifier rubyid_system_h'>system_h</span><span class='rparen'>)</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span>
|
1059
|
+
<span class='kw'>end</span></pre>
|
1060
|
+
</td>
|
1061
|
+
</tr>
|
1062
|
+
</table>
|
1063
|
+
</div>
|
1064
|
+
|
1065
|
+
<div class="method_details ">
|
1066
|
+
<h3 class="signature " id="valid?-instance_method">
|
1067
|
+
|
1068
|
+
- (<tt>Boolean</tt>) <strong>valid?</strong>
|
1069
|
+
|
1070
|
+
|
1071
|
+
|
1072
|
+
|
1073
|
+
|
1074
|
+
</h3><div class="docstring">
|
1075
|
+
<div class="discussion">
|
1076
|
+
|
1077
|
+
|
1078
|
+
</div>
|
1079
|
+
</div>
|
1080
|
+
<div class="tags">
|
1081
|
+
|
1082
|
+
<p class="tag_title">Returns:</p>
|
1083
|
+
<ul class="return">
|
1084
|
+
|
1085
|
+
<li>
|
1086
|
+
|
1087
|
+
|
1088
|
+
<span class='type'>(<tt>Boolean</tt>)</span>
|
1089
|
+
|
1090
|
+
|
1091
|
+
|
1092
|
+
</li>
|
1093
|
+
|
1094
|
+
</ul>
|
1095
|
+
|
1096
|
+
</div><table class="source_code">
|
1097
|
+
<tr>
|
1098
|
+
<td>
|
1099
|
+
<pre class="lines">
|
1100
|
+
|
1101
|
+
|
1102
|
+
154
|
1103
|
+
155
|
1104
|
+
156</pre>
|
1105
|
+
</td>
|
1106
|
+
<td>
|
1107
|
+
<pre class="code"><span class="info file"># File 'lib/pwkeep/storage.rb', line 154</span>
|
1108
|
+
|
1109
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_valid?'>valid?</span>
|
1110
|
+
<span class='id identifier rubyid_path'>path</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>private.pem</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_exist?'>exist?</span>
|
1111
|
+
<span class='kw'>end</span></pre>
|
1112
|
+
</td>
|
1113
|
+
</tr>
|
1114
|
+
</table>
|
1115
|
+
</div>
|
1116
|
+
|
1117
|
+
</div>
|
1118
|
+
|
1119
|
+
</div>
|
1120
|
+
|
1121
|
+
<div id="footer">
|
1122
|
+
Generated on Thu Jan 9 16:06:07 2014 by
|
1123
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1124
|
+
0.8.6.2 (ruby-1.9.3).
|
1125
|
+
</div>
|
1126
|
+
|
1127
|
+
</body>
|
1128
|
+
</html>
|