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.
@@ -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
+ &mdash; 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> &raquo;
35
+ <span class='title'><span class='object_link'><a href="../PWKeep.html" title="PWKeep (module)">PWKeep</a></span></span>
36
+ &raquo;
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'>&quot;</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'>&quot;</span></span>
382
+ <span class='id identifier rubyid_position'>position</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</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'>&quot;</span></span>
383
+ <span class='id identifier rubyid_indicators'>indicators</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</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'>&quot;</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'>&quot;</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'>&quot;</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
+ &mdash; 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> &raquo;
35
+ <span class='title'><span class='object_link'><a href="../PWKeep.html" title="PWKeep (module)">PWKeep</a></span></span>
36
+ &raquo;
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'>&quot;</span><span class='tstring_content'>.lock</span><span class='tstring_end'>&quot;</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'>=&gt;</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'>&quot;</span><span class='tstring_content'>.lock</span><span class='tstring_end'>&quot;</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'>=&gt;</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'>&quot;</span><span class='tstring_content'>Private key required</span><span class='tstring_end'>&quot;</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'>&quot;</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'>&quot;</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'>&quot;</span><span class='tstring_content'>System not found</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Private key required</span><span class='tstring_end'>&quot;</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'>&quot;</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'>&quot;</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'>&quot;</span><span class='tstring_content'>system-*</span><span class='tstring_end'>&quot;</span></span>
840
+ <span class='id identifier rubyid_systems'>systems</span> <span class='op'>&lt;&lt;</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'>&quot;</span><span class='tstring_content'>system</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Private key required</span><span class='tstring_end'>&quot;</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'>&quot;</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'>&quot;</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'>&quot;</span><span class='tstring_content'>{</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>}</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Corrupted data file</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>RSA private key required</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>Private key required</span><span class='tstring_end'>&quot;</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'>=&gt;</span> <span class='id identifier rubyid_system'>system</span><span class='comma'>,</span> <span class='symbol'>:data</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='symbol'>:stored_at</span> <span class='op'>=&gt;</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'>&quot;</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'>&quot;</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>