imp 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,1108 @@
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: Imp::EncryptedTree
8
+
9
+ &mdash; Documentation by YARD 0.8.7.3
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 (E)</a> &raquo;
35
+ <span class='title'><span class='object_link'><a href="../Imp.html" title="Imp (module)">Imp</a></span></span>
36
+ &raquo;
37
+ <span class="title">EncryptedTree</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: Imp::EncryptedTree
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"><span class='object_link'><a href="EncryptedFile.html" title="Imp::EncryptedFile (class)">EncryptedFile</a></span></span>
77
+
78
+ <ul class="fullTree">
79
+ <li>Object</li>
80
+
81
+ <li class="next"><span class='object_link'><a href="EncryptedFile.html" title="Imp::EncryptedFile (class)">EncryptedFile</a></span></li>
82
+
83
+ <li class="next">Imp::EncryptedTree</li>
84
+
85
+ </ul>
86
+ <a href="#" class="inheritanceTree">show all</a>
87
+
88
+ </dd>
89
+
90
+
91
+
92
+
93
+
94
+
95
+ <dt class="r2">Includes:</dt>
96
+ <dd class="r2">Enumerable</dd>
97
+
98
+
99
+
100
+
101
+
102
+ <dt class="r1 last">Defined in:</dt>
103
+ <dd class="r1 last">lib/imp/encrypted_tree.rb</dd>
104
+
105
+ </dl>
106
+ <div class="clear"></div>
107
+
108
+ <h2>Overview</h2><div class="docstring">
109
+ <div class="discussion">
110
+
111
+ <p>A tree loaded from an encrypted file.</p>
112
+
113
+ <p>All values are themselves encrypted with the key again. This doesn&#39;t
114
+ add additional security, but prevents them from appearing in memory in
115
+ plaintext if avoidable. Note that any program designed specifically to tap
116
+ into this programs memory will have no problem with this.</p>
117
+
118
+
119
+ </div>
120
+ </div>
121
+ <div class="tags">
122
+
123
+
124
+ </div>
125
+
126
+
127
+
128
+
129
+
130
+ <h2>Instance Attribute Summary</h2>
131
+
132
+ <h3 class="inherited">Attributes inherited from <span class='object_link'><a href="EncryptedFile.html" title="Imp::EncryptedFile (class)">EncryptedFile</a></span></h3>
133
+ <p class="inherited"><span class='object_link'><a href="EncryptedFile.html#cont-instance_method" title="Imp::EncryptedFile#cont (method)">#cont</a></span></p>
134
+
135
+
136
+
137
+ <h2>
138
+ Instance Method Summary
139
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
140
+ </h2>
141
+
142
+ <ul class="summary">
143
+
144
+ <li class="public ">
145
+ <span class="summary_signature">
146
+
147
+ <a href="#%5B%5D-instance_method" title="#[] (instance method)">- (String) <strong>[]</strong>(key) </a>
148
+
149
+
150
+
151
+ </span>
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+ <span class="summary_desc"><div class='inline'>
162
+ <p>Retrieves a node label following a forward-slash seperated list of edge
163
+ labels.</p>
164
+ </div></span>
165
+
166
+ </li>
167
+
168
+
169
+ <li class="public ">
170
+ <span class="summary_signature">
171
+
172
+ <a href="#%5B%5D%3D-instance_method" title="#[]= (instance method)">- (Object) <strong>[]=</strong>(key, val) </a>
173
+
174
+
175
+
176
+ </span>
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+
185
+
186
+ <span class="summary_desc"><div class='inline'>
187
+ <p>Sets a node label corresponding to a forward-slash seperated list of edge
188
+ labels.</p>
189
+ </div></span>
190
+
191
+ </li>
192
+
193
+
194
+ <li class="public ">
195
+ <span class="summary_signature">
196
+
197
+ <a href="#delete-instance_method" title="#delete (instance method)">- (Object) <strong>delete</strong>(key) </a>
198
+
199
+
200
+
201
+ </span>
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+ <span class="summary_desc"><div class='inline'>
212
+ <p>Deletes a node corresponding to a forward-slash seperated list of edge
213
+ labels.</p>
214
+ </div></span>
215
+
216
+ </li>
217
+
218
+
219
+ <li class="public ">
220
+ <span class="summary_signature">
221
+
222
+ <a href="#each-instance_method" title="#each (instance method)">- (Object) <strong>each</strong>(keys = [], subtree = @cont) {|String, String| ... }</a>
223
+
224
+
225
+
226
+ </span>
227
+
228
+
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+ <span class="summary_desc"><div class='inline'>
237
+ <p>Iterates over key/value pairs.</p>
238
+ </div></span>
239
+
240
+ </li>
241
+
242
+
243
+ <li class="public ">
244
+ <span class="summary_signature">
245
+
246
+ <a href="#include%3F-instance_method" title="#include? (instance method)">- (Boolean) <strong>include?</strong>(item) </a>
247
+
248
+
249
+
250
+ </span>
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+ <span class="summary_desc"><div class='inline'>
261
+ <p>Checks whether a tree contains a key.</p>
262
+ </div></span>
263
+
264
+ </li>
265
+
266
+
267
+ <li class="public ">
268
+ <span class="summary_signature">
269
+
270
+ <a href="#initialize-instance_method" title="#initialize (instance method)">- (EncryptedTree) <strong>initialize</strong>(passwd, file) </a>
271
+
272
+
273
+
274
+ </span>
275
+
276
+
277
+ <span class="note title constructor">constructor</span>
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+ <span class="summary_desc"><div class='inline'>
287
+ <p>Creates a new tree / load an existing one from a file.</p>
288
+ </div></span>
289
+
290
+ </li>
291
+
292
+
293
+ <li class="public ">
294
+ <span class="summary_signature">
295
+
296
+ <a href="#password%3D-instance_method" title="#password= (instance method)">- (Object) <strong>password=</strong>(passwd) </a>
297
+
298
+
299
+
300
+ </span>
301
+
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+ <span class="summary_desc"><div class='inline'>
311
+ <p>Sets a new password for the file.</p>
312
+ </div></span>
313
+
314
+ </li>
315
+
316
+
317
+ <li class="public ">
318
+ <span class="summary_signature">
319
+
320
+ <a href="#prune-instance_method" title="#prune (instance method)">- (Object) <strong>prune</strong> </a>
321
+
322
+
323
+
324
+ </span>
325
+
326
+
327
+
328
+
329
+
330
+
331
+
332
+
333
+
334
+ <span class="summary_desc"><div class='inline'>
335
+ <p>Iteratively removes any leaves with a nil value.</p>
336
+ </div></span>
337
+
338
+ </li>
339
+
340
+
341
+ <li class="public ">
342
+ <span class="summary_signature">
343
+
344
+ <a href="#to_s-instance_method" title="#to_s (instance method)">- (String) <strong>to_s</strong> </a>
345
+
346
+
347
+
348
+ </span>
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+ <span class="summary_desc"><div class='inline'>
359
+ <p>Delegates to the tree for string representation.</p>
360
+ </div></span>
361
+
362
+ </li>
363
+
364
+
365
+ </ul>
366
+
367
+
368
+
369
+
370
+
371
+
372
+
373
+
374
+
375
+
376
+
377
+
378
+ <h3 class="inherited">Methods inherited from <span class='object_link'><a href="EncryptedFile.html" title="Imp::EncryptedFile (class)">EncryptedFile</a></span></h3>
379
+ <p class="inherited"><span class='object_link'><a href="EncryptedFile.html#close-instance_method" title="Imp::EncryptedFile#close (method)">#close</a></span>, <span class='object_link'><a href="EncryptedFile.html#flush-instance_method" title="Imp::EncryptedFile#flush (method)">#flush</a></span></p>
380
+ <div id="constructor_details" class="method_details_list">
381
+ <h2>Constructor Details</h2>
382
+
383
+ <div class="method_details first">
384
+ <h3 class="signature first" id="initialize-instance_method">
385
+
386
+ - (<tt><span class='object_link'><a href="" title="Imp::EncryptedTree (class)">EncryptedTree</a></span></tt>) <strong>initialize</strong>(passwd, file)
387
+
388
+
389
+
390
+
391
+
392
+ </h3><div class="docstring">
393
+ <div class="discussion">
394
+
395
+ <p>Creates a new tree / load an existing one from a file.</p>
396
+
397
+
398
+ </div>
399
+ </div>
400
+ <div class="tags">
401
+ <p class="tag_title">Parameters:</p>
402
+ <ul class="param">
403
+
404
+ <li>
405
+
406
+ <span class='name'>passwd</span>
407
+
408
+
409
+ <span class='type'>(<tt>String</tt>)</span>
410
+
411
+
412
+
413
+ &mdash;
414
+ <div class='inline'>
415
+ <p>The password to decrypt the file. Discarded after this call (although the
416
+ key is kept in memory)</p>
417
+ </div>
418
+
419
+ </li>
420
+
421
+ <li>
422
+
423
+ <span class='name'>file</span>
424
+
425
+
426
+ <span class='type'>(<tt>String</tt>)</span>
427
+
428
+
429
+
430
+ &mdash;
431
+ <div class='inline'>
432
+ <p>The location of the file to decrypt. If this does not exist, a new tree is
433
+ made.</p>
434
+ </div>
435
+
436
+ </li>
437
+
438
+ </ul>
439
+
440
+
441
+ </div><table class="source_code">
442
+ <tr>
443
+ <td>
444
+ <pre class="lines">
445
+
446
+
447
+ 25
448
+ 26
449
+ 27
450
+ 28
451
+ 29
452
+ 30</pre>
453
+ </td>
454
+ <td>
455
+ <pre class="code"><span class="info file"># File 'lib/imp/encrypted_tree.rb', line 25</span>
456
+
457
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_passwd'>passwd</span><span class='comma'>,</span> <span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span>
458
+ <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_passwd'>passwd</span><span class='comma'>,</span> <span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span>
459
+ <span class='kw'>if</span> <span class='ivar'>@cont</span> <span class='op'>==</span> <span class='kw'>nil</span>
460
+ <span class='ivar'>@cont</span> <span class='op'>=</span> <span class='const'>Tree</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
461
+ <span class='kw'>end</span>
462
+ <span class='kw'>end</span></pre>
463
+ </td>
464
+ </tr>
465
+ </table>
466
+ </div>
467
+
468
+ </div>
469
+
470
+
471
+ <div id="instance_method_details" class="method_details_list">
472
+ <h2>Instance Method Details</h2>
473
+
474
+
475
+ <div class="method_details first">
476
+ <h3 class="signature first" id="[]-instance_method">
477
+
478
+ - (<tt>String</tt>) <strong>[]</strong>(key)
479
+
480
+
481
+
482
+
483
+
484
+ </h3><div class="docstring">
485
+ <div class="discussion">
486
+
487
+ <p>Retrieves a node label following a forward-slash seperated list of edge
488
+ labels.</p>
489
+
490
+
491
+ </div>
492
+ </div>
493
+ <div class="tags">
494
+ <p class="tag_title">Parameters:</p>
495
+ <ul class="param">
496
+
497
+ <li>
498
+
499
+ <span class='name'>key</span>
500
+
501
+
502
+ <span class='type'>(<tt>String</tt>)</span>
503
+
504
+
505
+
506
+ &mdash;
507
+ <div class='inline'>
508
+ <p>The forward-slash seperated list of edge labels.</p>
509
+ </div>
510
+
511
+ </li>
512
+
513
+ </ul>
514
+
515
+ <p class="tag_title">Returns:</p>
516
+ <ul class="return">
517
+
518
+ <li>
519
+
520
+
521
+ <span class='type'>(<tt>String</tt>)</span>
522
+
523
+
524
+
525
+ &mdash;
526
+ <div class='inline'>
527
+ <p>The decrypted value of the corresponding node label.</p>
528
+ </div>
529
+
530
+ </li>
531
+
532
+ </ul>
533
+
534
+ </div><table class="source_code">
535
+ <tr>
536
+ <td>
537
+ <pre class="lines">
538
+
539
+
540
+ 37
541
+ 38
542
+ 39</pre>
543
+ </td>
544
+ <td>
545
+ <pre class="code"><span class="info file"># File 'lib/imp/encrypted_tree.rb', line 37</span>
546
+
547
+ <span class='kw'>def</span> <span class='op'>[]</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
548
+ <span class='const'>Crypto</span><span class='period'>.</span><span class='id identifier rubyid_decrypt'>decrypt</span><span class='lparen'>(</span><span class='ivar'>@key</span><span class='comma'>,</span> <span class='ivar'>@cont</span><span class='period'>.</span><span class='id identifier rubyid_descendant'>descendant</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_val'>val</span><span class='rparen'>)</span>
549
+ <span class='kw'>end</span></pre>
550
+ </td>
551
+ </tr>
552
+ </table>
553
+ </div>
554
+
555
+ <div class="method_details ">
556
+ <h3 class="signature " id="[]=-instance_method">
557
+
558
+ - (<tt>Object</tt>) <strong>[]=</strong>(key, val)
559
+
560
+
561
+
562
+
563
+
564
+ </h3><div class="docstring">
565
+ <div class="discussion">
566
+
567
+ <p>Sets a node label corresponding to a forward-slash seperated list of edge
568
+ labels.</p>
569
+
570
+
571
+ </div>
572
+ </div>
573
+ <div class="tags">
574
+ <p class="tag_title">Parameters:</p>
575
+ <ul class="param">
576
+
577
+ <li>
578
+
579
+ <span class='name'>key</span>
580
+
581
+
582
+ <span class='type'>(<tt>String</tt>)</span>
583
+
584
+
585
+
586
+ &mdash;
587
+ <div class='inline'>
588
+ <p>The list of edge labels.</p>
589
+ </div>
590
+
591
+ </li>
592
+
593
+ <li>
594
+
595
+ <span class='name'>val</span>
596
+
597
+
598
+ <span class='type'>(<tt>String</tt>)</span>
599
+
600
+
601
+
602
+ &mdash;
603
+ <div class='inline'>
604
+ <p>The value to set the node label to. This will be encrypted.</p>
605
+ </div>
606
+
607
+ </li>
608
+
609
+ </ul>
610
+
611
+
612
+ </div><table class="source_code">
613
+ <tr>
614
+ <td>
615
+ <pre class="lines">
616
+
617
+
618
+ 47
619
+ 48
620
+ 49</pre>
621
+ </td>
622
+ <td>
623
+ <pre class="code"><span class="info file"># File 'lib/imp/encrypted_tree.rb', line 47</span>
624
+
625
+ <span class='kw'>def</span> <span class='op'>[]=</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_val'>val</span><span class='rparen'>)</span>
626
+ <span class='ivar'>@cont</span><span class='period'>.</span><span class='id identifier rubyid_descendant'>descendant</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_val'>val</span> <span class='op'>=</span> <span class='const'>Crypto</span><span class='period'>.</span><span class='id identifier rubyid_encrypt'>encrypt</span><span class='lparen'>(</span><span class='ivar'>@key</span><span class='comma'>,</span> <span class='id identifier rubyid_val'>val</span><span class='rparen'>)</span>
627
+ <span class='kw'>end</span></pre>
628
+ </td>
629
+ </tr>
630
+ </table>
631
+ </div>
632
+
633
+ <div class="method_details ">
634
+ <h3 class="signature " id="delete-instance_method">
635
+
636
+ - (<tt>Object</tt>) <strong>delete</strong>(key)
637
+
638
+
639
+
640
+
641
+
642
+ </h3><div class="docstring">
643
+ <div class="discussion">
644
+
645
+ <p>Deletes a node corresponding to a forward-slash seperated list of edge
646
+ labels.</p>
647
+
648
+
649
+ </div>
650
+ </div>
651
+ <div class="tags">
652
+ <p class="tag_title">Parameters:</p>
653
+ <ul class="param">
654
+
655
+ <li>
656
+
657
+ <span class='name'>key</span>
658
+
659
+
660
+ <span class='type'>(<tt>String</tt>)</span>
661
+
662
+
663
+
664
+ &mdash;
665
+ <div class='inline'>
666
+ <p>The list of edge labels. Must be a valid key.</p>
667
+ </div>
668
+
669
+ </li>
670
+
671
+ </ul>
672
+
673
+
674
+ </div><table class="source_code">
675
+ <tr>
676
+ <td>
677
+ <pre class="lines">
678
+
679
+
680
+ 78
681
+ 79
682
+ 80
683
+ 81
684
+ 82
685
+ 83
686
+ 84
687
+ 85
688
+ 86
689
+ 87
690
+ 88</pre>
691
+ </td>
692
+ <td>
693
+ <pre class="code"><span class="info file"># File 'lib/imp/encrypted_tree.rb', line 78</span>
694
+
695
+ <span class='kw'>def</span> <span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
696
+ <span class='comment'># We seperate the last key from the first keys.
697
+ </span> <span class='id identifier rubyid_key'>key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>/</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
698
+ <span class='id identifier rubyid_finalkey'>finalkey</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span><span class='lbracket'>[</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span>
699
+ <span class='id identifier rubyid_key'>key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span><span class='lbracket'>[</span><span class='int'>0</span><span class='op'>...</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span>
700
+
701
+ <span class='comment'># Instead of using descendant we reduce over the root. This also handels
702
+ </span> <span class='comment'># the root being the parent node well.
703
+ </span> <span class='id identifier rubyid_node'>node</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='ivar'>@cont</span><span class='comma'>,</span> <span class='symbol'>:[]</span><span class='rparen'>)</span>
704
+ <span class='id identifier rubyid_node'>node</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span> <span class='id identifier rubyid_finalkey'>finalkey</span>
705
+ <span class='kw'>end</span></pre>
706
+ </td>
707
+ </tr>
708
+ </table>
709
+ </div>
710
+
711
+ <div class="method_details ">
712
+ <h3 class="signature " id="each-instance_method">
713
+
714
+ - (<tt>Object</tt>) <strong>each</strong>(keys = [], subtree = @cont) {|String, String| ... }
715
+
716
+
717
+
718
+
719
+
720
+ </h3><div class="docstring">
721
+ <div class="discussion">
722
+
723
+ <p>Iterates over key/value pairs.</p>
724
+
725
+
726
+ </div>
727
+ </div>
728
+ <div class="tags">
729
+ <p class="tag_title">Parameters:</p>
730
+ <ul class="param">
731
+
732
+ <li>
733
+
734
+ <span class='name'>keys</span>
735
+
736
+
737
+ <span class='type'>(<tt>Array&lt;String&gt;</tt>)</span>
738
+
739
+
740
+ <em class="default">(defaults to: <tt>[]</tt>)</em>
741
+
742
+
743
+ &mdash;
744
+ <div class='inline'>
745
+ <p>A list of the keys followed to reach the current subtree.</p>
746
+ </div>
747
+
748
+ </li>
749
+
750
+ <li>
751
+
752
+ <span class='name'>subtree</span>
753
+
754
+
755
+ <span class='type'>(<tt><span class='object_link'><a href="Tree.html" title="Imp::Tree (class)">Tree</a></span></tt>)</span>
756
+
757
+
758
+ <em class="default">(defaults to: <tt>@cont</tt>)</em>
759
+
760
+
761
+ &mdash;
762
+ <div class='inline'>
763
+ <p>The tree currently iterating over.</p>
764
+ </div>
765
+
766
+ </li>
767
+
768
+ </ul>
769
+
770
+ <p class="tag_title">Yields:</p>
771
+ <ul class="yield">
772
+
773
+ <li>
774
+
775
+
776
+ <span class='type'>(<tt>String</tt>, <tt>String</tt>)</span>
777
+
778
+
779
+
780
+ &mdash;
781
+ <div class='inline'>
782
+ <p>Key, value pairs where the key is a forward slash seperated string of edge
783
+ labels. Values are not decrypted or processed.</p>
784
+ </div>
785
+
786
+ </li>
787
+
788
+ </ul>
789
+
790
+ </div><table class="source_code">
791
+ <tr>
792
+ <td>
793
+ <pre class="lines">
794
+
795
+
796
+ 59
797
+ 60
798
+ 61
799
+ 62
800
+ 63
801
+ 64
802
+ 65</pre>
803
+ </td>
804
+ <td>
805
+ <pre class="code"><span class="info file"># File 'lib/imp/encrypted_tree.rb', line 59</span>
806
+
807
+ <span class='kw'>def</span> <span class='id identifier rubyid_each'>each</span><span class='lparen'>(</span><span class='id identifier rubyid_keys'>keys</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_subtree'>subtree</span> <span class='op'>=</span> <span class='ivar'>@cont</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
808
+ <span class='comment'># Yield the subtree&#39;s value unless it is the root.
809
+ </span> <span class='kw'>yield</span> <span class='lbracket'>[</span><span class='id identifier rubyid_keys'>keys</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>/</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_subtree'>subtree</span><span class='period'>.</span><span class='id identifier rubyid_val'>val</span><span class='rbracket'>]</span> <span class='kw'>unless</span> <span class='id identifier rubyid_keys'>keys</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
810
+ <span class='id identifier rubyid_subtree'>subtree</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_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_tree'>tree</span><span class='op'>|</span>
811
+ <span class='id identifier rubyid_each'>each</span><span class='lparen'>(</span><span class='id identifier rubyid_keys'>keys</span> <span class='op'>+</span> <span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_tree'>tree</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
812
+ <span class='kw'>end</span>
813
+ <span class='kw'>end</span></pre>
814
+ </td>
815
+ </tr>
816
+ </table>
817
+ </div>
818
+
819
+ <div class="method_details ">
820
+ <h3 class="signature " id="include?-instance_method">
821
+
822
+ - (<tt>Boolean</tt>) <strong>include?</strong>(item)
823
+
824
+
825
+
826
+
827
+
828
+ </h3><div class="docstring">
829
+ <div class="discussion">
830
+
831
+ <p>Checks whether a tree contains a key.</p>
832
+
833
+
834
+ </div>
835
+ </div>
836
+ <div class="tags">
837
+ <p class="tag_title">Parameters:</p>
838
+ <ul class="param">
839
+
840
+ <li>
841
+
842
+ <span class='name'>item</span>
843
+
844
+
845
+ <span class='type'>(<tt>String</tt>)</span>
846
+
847
+
848
+
849
+ &mdash;
850
+ <div class='inline'>
851
+ <p>The forward slash seperated string of edge labels.</p>
852
+ </div>
853
+
854
+ </li>
855
+
856
+ </ul>
857
+
858
+ <p class="tag_title">Returns:</p>
859
+ <ul class="return">
860
+
861
+ <li>
862
+
863
+
864
+ <span class='type'>(<tt>Boolean</tt>)</span>
865
+
866
+
867
+
868
+ </li>
869
+
870
+ </ul>
871
+
872
+ </div><table class="source_code">
873
+ <tr>
874
+ <td>
875
+ <pre class="lines">
876
+
877
+
878
+ 70
879
+ 71
880
+ 72</pre>
881
+ </td>
882
+ <td>
883
+ <pre class="code"><span class="info file"># File 'lib/imp/encrypted_tree.rb', line 70</span>
884
+
885
+ <span class='kw'>def</span> <span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_item'>item</span><span class='rparen'>)</span>
886
+ <span class='ivar'>@cont</span><span class='period'>.</span><span class='id identifier rubyid_descendant'>descendant</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span> <span class='op'>!=</span> <span class='kw'>nil</span>
887
+ <span class='kw'>end</span></pre>
888
+ </td>
889
+ </tr>
890
+ </table>
891
+ </div>
892
+
893
+ <div class="method_details ">
894
+ <h3 class="signature " id="password=-instance_method">
895
+
896
+ - (<tt>Object</tt>) <strong>password=</strong>(passwd)
897
+
898
+
899
+
900
+
901
+
902
+ </h3><div class="docstring">
903
+ <div class="discussion">
904
+
905
+ <p>Sets a new password for the file.</p>
906
+
907
+
908
+ </div>
909
+ </div>
910
+ <div class="tags">
911
+ <p class="tag_title">Parameters:</p>
912
+ <ul class="param">
913
+
914
+ <li>
915
+
916
+ <span class='name'>The</span>
917
+
918
+
919
+ <span class='type'>(<tt>String</tt>)</span>
920
+
921
+
922
+
923
+ &mdash;
924
+ <div class='inline'>
925
+ <p>new password to generate a key from.</p>
926
+ </div>
927
+
928
+ </li>
929
+
930
+ </ul>
931
+
932
+
933
+ </div><table class="source_code">
934
+ <tr>
935
+ <td>
936
+ <pre class="lines">
937
+
938
+
939
+ 108
940
+ 109
941
+ 110
942
+ 111
943
+ 112
944
+ 113
945
+ 114
946
+ 115
947
+ 116
948
+ 117
949
+ 118
950
+ 119
951
+ 120
952
+ 121
953
+ 122</pre>
954
+ </td>
955
+ <td>
956
+ <pre class="code"><span class="info file"># File 'lib/imp/encrypted_tree.rb', line 108</span>
957
+
958
+ <span class='kw'>def</span> <span class='id identifier rubyid_password='>password=</span><span class='lparen'>(</span><span class='id identifier rubyid_passwd'>passwd</span><span class='rparen'>)</span>
959
+ <span class='id identifier rubyid_key'>key</span> <span class='op'>=</span> <span class='ivar'>@key</span>
960
+ <span class='comment'># Super call.
961
+ </span> <span class='const'>EncryptedFile</span><span class='period'>.</span><span class='id identifier rubyid_instance_method'>instance_method</span><span class='lparen'>(</span><span class='symbol'>:password=</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_bind'>bind</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_passwd'>passwd</span><span class='rparen'>)</span>
962
+ <span class='comment'># If the file is still being initialized, @cont may be nil. In this case
963
+ </span> <span class='comment'># return.
964
+ </span> <span class='kw'>return</span> <span class='kw'>unless</span> <span class='ivar'>@cont</span>
965
+ <span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_k'>k</span><span class='comma'>,</span> <span class='id identifier rubyid_v'>v</span><span class='op'>|</span>
966
+ <span class='comment'># Don&#39;t change nil values.
967
+ </span> <span class='kw'>next</span> <span class='kw'>unless</span> <span class='id identifier rubyid_v'>v</span>
968
+ <span class='comment'># Otherwise decrypt with the old key and encrypt with the new.
969
+ </span> <span class='comment'># (Encryption is done automatically by #[]=)
970
+ </span> <span class='kw'>self</span><span class='lbracket'>[</span><span class='id identifier rubyid_k'>k</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='const'>Crypto</span><span class='period'>.</span><span class='id identifier rubyid_decrypt'>decrypt</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_v'>v</span><span class='rparen'>)</span>
971
+ <span class='kw'>end</span>
972
+ <span class='kw'>end</span></pre>
973
+ </td>
974
+ </tr>
975
+ </table>
976
+ </div>
977
+
978
+ <div class="method_details ">
979
+ <h3 class="signature " id="prune-instance_method">
980
+
981
+ - (<tt>Object</tt>) <strong>prune</strong>
982
+
983
+
984
+
985
+
986
+
987
+ </h3><div class="docstring">
988
+ <div class="discussion">
989
+
990
+ <p>Iteratively removes any leaves with a nil value. Not terribly efficient but
991
+ there is no need to be.</p>
992
+
993
+
994
+ </div>
995
+ </div>
996
+ <div class="tags">
997
+
998
+
999
+ </div><table class="source_code">
1000
+ <tr>
1001
+ <td>
1002
+ <pre class="lines">
1003
+
1004
+
1005
+ 92
1006
+ 93
1007
+ 94
1008
+ 95
1009
+ 96
1010
+ 97
1011
+ 98
1012
+ 99
1013
+ 100
1014
+ 101
1015
+ 102
1016
+ 103</pre>
1017
+ </td>
1018
+ <td>
1019
+ <pre class="code"><span class="info file"># File 'lib/imp/encrypted_tree.rb', line 92</span>
1020
+
1021
+ <span class='kw'>def</span> <span class='id identifier rubyid_prune'>prune</span>
1022
+ <span class='id identifier rubyid_pruned'>pruned</span> <span class='op'>=</span> <span class='kw'>true</span>
1023
+ <span class='kw'>while</span> <span class='id identifier rubyid_pruned'>pruned</span>
1024
+ <span class='id identifier rubyid_pruned'>pruned</span> <span class='op'>=</span> <span class='kw'>false</span>
1025
+ <span class='kw'>self</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_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='op'>|</span>
1026
+ <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span> <span class='op'>==</span> <span class='kw'>nil</span> <span class='op'>&amp;&amp;</span> <span class='ivar'>@cont</span><span class='period'>.</span><span class='id identifier rubyid_descendant'>descendant</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_leaf?'>leaf?</span>
1027
+ <span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
1028
+ <span class='id identifier rubyid_pruned'>pruned</span> <span class='op'>=</span> <span class='kw'>true</span>
1029
+ <span class='kw'>end</span>
1030
+ <span class='kw'>end</span>
1031
+ <span class='kw'>end</span>
1032
+ <span class='kw'>end</span></pre>
1033
+ </td>
1034
+ </tr>
1035
+ </table>
1036
+ </div>
1037
+
1038
+ <div class="method_details ">
1039
+ <h3 class="signature " id="to_s-instance_method">
1040
+
1041
+ - (<tt>String</tt>) <strong>to_s</strong>
1042
+
1043
+
1044
+
1045
+
1046
+
1047
+ </h3><div class="docstring">
1048
+ <div class="discussion">
1049
+
1050
+ <p>Delegates to the tree for string representation.</p>
1051
+
1052
+
1053
+ </div>
1054
+ </div>
1055
+ <div class="tags">
1056
+
1057
+ <p class="tag_title">Returns:</p>
1058
+ <ul class="return">
1059
+
1060
+ <li>
1061
+
1062
+
1063
+ <span class='type'>(<tt>String</tt>)</span>
1064
+
1065
+
1066
+
1067
+ &mdash;
1068
+ <div class='inline'>
1069
+ <p>The string representation of the tree.</p>
1070
+ </div>
1071
+
1072
+ </li>
1073
+
1074
+ </ul>
1075
+
1076
+ </div><table class="source_code">
1077
+ <tr>
1078
+ <td>
1079
+ <pre class="lines">
1080
+
1081
+
1082
+ 127
1083
+ 128
1084
+ 129</pre>
1085
+ </td>
1086
+ <td>
1087
+ <pre class="code"><span class="info file"># File 'lib/imp/encrypted_tree.rb', line 127</span>
1088
+
1089
+ <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span>
1090
+ <span class='ivar'>@cont</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
1091
+ <span class='kw'>end</span></pre>
1092
+ </td>
1093
+ </tr>
1094
+ </table>
1095
+ </div>
1096
+
1097
+ </div>
1098
+
1099
+ </div>
1100
+
1101
+ <div id="footer">
1102
+ Generated on Sun Nov 10 00:39:21 2013 by
1103
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1104
+ 0.8.7.3 (ruby-2.0.0).
1105
+ </div>
1106
+
1107
+ </body>
1108
+ </html>