akero 1.0.4 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. checksums.yaml +7 -0
  2. data/.gitattributes +3 -0
  3. data/.gitignore +0 -2
  4. data/.rubocop.yml +43 -0
  5. data/.travis.yml +3 -7
  6. data/Gemfile +1 -0
  7. data/Guardfile +4 -3
  8. data/Makefile +26 -0
  9. data/README.md +28 -10
  10. data/Rakefile +8 -17
  11. data/akero.gemspec +17 -10
  12. data/bin/akero +6 -0
  13. data/coverage/.last_run.json +5 -0
  14. data/coverage/.resultset.json +367 -0
  15. data/coverage/.resultset.json.lock +0 -0
  16. data/coverage/assets/0.10.0/application.css +799 -0
  17. data/coverage/assets/0.10.0/application.js +1707 -0
  18. data/coverage/assets/0.10.0/colorbox/border.png +0 -0
  19. data/coverage/assets/0.10.0/colorbox/controls.png +0 -0
  20. data/coverage/assets/0.10.0/colorbox/loading.gif +0 -0
  21. data/coverage/assets/0.10.0/colorbox/loading_background.png +0 -0
  22. data/coverage/assets/0.10.0/favicon_green.png +0 -0
  23. data/coverage/assets/0.10.0/favicon_red.png +0 -0
  24. data/coverage/assets/0.10.0/favicon_yellow.png +0 -0
  25. data/coverage/assets/0.10.0/loading.gif +0 -0
  26. data/coverage/assets/0.10.0/magnify.png +0 -0
  27. data/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  28. data/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  29. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  30. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  31. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  32. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  33. data/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  34. data/coverage/assets/0.10.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  35. data/coverage/assets/0.10.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
  36. data/coverage/assets/0.10.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  37. data/coverage/assets/0.10.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
  38. data/coverage/assets/0.10.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
  39. data/coverage/assets/0.10.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  40. data/coverage/assets/0.7.1/application.css +1110 -0
  41. data/coverage/assets/0.7.1/application.js +626 -0
  42. data/coverage/assets/0.7.1/fancybox/blank.gif +0 -0
  43. data/coverage/assets/0.7.1/fancybox/fancy_close.png +0 -0
  44. data/coverage/assets/0.7.1/fancybox/fancy_loading.png +0 -0
  45. data/coverage/assets/0.7.1/fancybox/fancy_nav_left.png +0 -0
  46. data/coverage/assets/0.7.1/fancybox/fancy_nav_right.png +0 -0
  47. data/coverage/assets/0.7.1/fancybox/fancy_shadow_e.png +0 -0
  48. data/coverage/assets/0.7.1/fancybox/fancy_shadow_n.png +0 -0
  49. data/coverage/assets/0.7.1/fancybox/fancy_shadow_ne.png +0 -0
  50. data/coverage/assets/0.7.1/fancybox/fancy_shadow_nw.png +0 -0
  51. data/coverage/assets/0.7.1/fancybox/fancy_shadow_s.png +0 -0
  52. data/coverage/assets/0.7.1/fancybox/fancy_shadow_se.png +0 -0
  53. data/coverage/assets/0.7.1/fancybox/fancy_shadow_sw.png +0 -0
  54. data/coverage/assets/0.7.1/fancybox/fancy_shadow_w.png +0 -0
  55. data/coverage/assets/0.7.1/fancybox/fancy_title_left.png +0 -0
  56. data/coverage/assets/0.7.1/fancybox/fancy_title_main.png +0 -0
  57. data/coverage/assets/0.7.1/fancybox/fancy_title_over.png +0 -0
  58. data/coverage/assets/0.7.1/fancybox/fancy_title_right.png +0 -0
  59. data/coverage/assets/0.7.1/fancybox/fancybox-x.png +0 -0
  60. data/coverage/assets/0.7.1/fancybox/fancybox-y.png +0 -0
  61. data/coverage/assets/0.7.1/fancybox/fancybox.png +0 -0
  62. data/coverage/assets/0.7.1/favicon_green.png +0 -0
  63. data/coverage/assets/0.7.1/favicon_red.png +0 -0
  64. data/coverage/assets/0.7.1/favicon_yellow.png +0 -0
  65. data/coverage/assets/0.7.1/loading.gif +0 -0
  66. data/coverage/assets/0.7.1/magnify.png +0 -0
  67. data/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  68. data/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  69. data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  70. data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  71. data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  72. data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  73. data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  74. data/coverage/assets/0.7.1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  75. data/coverage/assets/0.7.1/smoothness/images/ui-icons_222222_256x240.png +0 -0
  76. data/coverage/assets/0.7.1/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  77. data/coverage/assets/0.7.1/smoothness/images/ui-icons_454545_256x240.png +0 -0
  78. data/coverage/assets/0.7.1/smoothness/images/ui-icons_888888_256x240.png +0 -0
  79. data/coverage/assets/0.7.1/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  80. data/coverage/index.html +2248 -0
  81. data/doc/Akero/Message.html +475 -0
  82. data/doc/Akero.html +1148 -0
  83. data/doc/_index.html +125 -0
  84. data/doc/class_list.html +53 -0
  85. data/doc/css/common.css +1 -0
  86. data/doc/css/full_list.css +57 -0
  87. data/doc/css/style.css +338 -0
  88. data/doc/file.README.html +186 -0
  89. data/doc/file_list.html +55 -0
  90. data/doc/frames.html +28 -0
  91. data/doc/index.html +186 -0
  92. data/doc/js/app.js +214 -0
  93. data/doc/js/full_list.js +173 -0
  94. data/doc/js/jquery.js +4 -0
  95. data/doc/method_list.html +148 -0
  96. data/doc/top-level-namespace.html +112 -0
  97. data/lib/akero/benchmark.rb +21 -20
  98. data/lib/akero/cli.rb +74 -0
  99. data/lib/akero/version.rb +2 -1
  100. data/lib/akero.rb +92 -90
  101. data/spec/akero_spec.rb +66 -65
  102. data/spec/spec_helper.rb +1 -0
  103. metadata +164 -52
data/doc/Akero.html ADDED
@@ -0,0 +1,1148 @@
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: Akero
8
+
9
+ &mdash; Documentation by YARD 0.8.5.2
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" 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 (A)</a> &raquo;
35
+
36
+
37
+ <span class="title">Akero</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: Akero
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">Akero</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/akero.rb<span class="defines">,<br />
98
+ lib/akero.rb,<br /> lib/akero/version.rb,<br /> lib/akero/benchmark.rb</span>
99
+ </dd>
100
+
101
+ </dl>
102
+ <div class="clear"></div>
103
+
104
+ <h2>Overview</h2><div class="docstring">
105
+ <div class="discussion">
106
+ Akero is an easy-to-use library for peer-to-peer public key cryptography.
107
+
108
+ Tested on: MRI 1.8.7, MRI 1.9.2, MRI 1.9.3, RBX 1.8, RBX 1.9
109
+ (JRuby may be added in the future but is currently NOT supported)
110
+
111
+ </div>
112
+ </div>
113
+ <div class="tags">
114
+
115
+
116
+ </div><h2>Defined Under Namespace</h2>
117
+ <p class="children">
118
+
119
+
120
+
121
+
122
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Akero/Message.html" title="Akero::Message (class)">Message</a></span>
123
+
124
+
125
+ </p>
126
+
127
+ <h2>Constant Summary</h2>
128
+
129
+ <dl class="constants">
130
+
131
+ <dt id="DEFAULT_RSA_BITS-constant" class="">DEFAULT_RSA_BITS =
132
+
133
+ </dt>
134
+ <dd><pre class="code"><span class='int'>2048</span></pre></dd>
135
+
136
+ <dt id="DEFAULT_DIGEST-constant" class="">DEFAULT_DIGEST =
137
+
138
+ </dt>
139
+ <dd><pre class="code"><span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Digest</span><span class='op'>::</span><span class='const'>SHA512</span></pre></dd>
140
+
141
+ <dt id="VERSION-constant" class="">VERSION =
142
+
143
+ </dt>
144
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>1.0.4</span><span class='tstring_end'>&quot;</span></span></pre></dd>
145
+
146
+ </dl>
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+ <h2>
157
+ Class Method Summary
158
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
159
+ </h2>
160
+
161
+ <ul class="summary">
162
+
163
+ <li class="public ">
164
+ <span class="summary_signature">
165
+
166
+ <a href="#load-class_method" title="load (class method)">+ (Akero) <strong>load</strong>(private_key) </a>
167
+
168
+
169
+
170
+ </span>
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+ <span class="summary_desc"><div class='inline'>Load an Akero identity.</div></span>
181
+
182
+ </li>
183
+
184
+
185
+ </ul>
186
+
187
+ <h2>
188
+ Instance Method Summary
189
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
190
+ </h2>
191
+
192
+ <ul class="summary">
193
+
194
+ <li class="public ">
195
+ <span class="summary_signature">
196
+
197
+ <a href="#encrypt-instance_method" title="#encrypt (instance method)">- (String) <strong>encrypt</strong>(to, plaintext, ascii_armor = true) </a>
198
+
199
+
200
+
201
+ </span>
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+ <span class="summary_desc"><div class='inline'>Sign-&gt;encrypt-&gt;sign a message for 1 or more recipients.</div></span>
212
+
213
+ </li>
214
+
215
+
216
+ <li class="public ">
217
+ <span class="summary_signature">
218
+
219
+ <a href="#id-instance_method" title="#id (instance method)">- (String) <strong>id</strong> </a>
220
+
221
+
222
+
223
+ </span>
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+
233
+ <span class="summary_desc"><div class='inline'>Unique fingerprint of this Akero keypair.</div></span>
234
+
235
+ </li>
236
+
237
+
238
+ <li class="public ">
239
+ <span class="summary_signature">
240
+
241
+ <a href="#initialize-instance_method" title="#initialize (instance method)">- (Akero) <strong>initialize</strong>(rsa_bits = DEFAULT_RSA_BITS, digest = DEFAULT_DIGEST) </a>
242
+
243
+
244
+
245
+ </span>
246
+
247
+
248
+ <span class="note title constructor">constructor</span>
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+ <span class="summary_desc"><div class='inline'>Create a new Akero instance.</div></span>
258
+
259
+ </li>
260
+
261
+
262
+ <li class="public ">
263
+ <span class="summary_signature">
264
+
265
+ <a href="#private_key-instance_method" title="#private_key (instance method)">- (String) <strong>private_key</strong> </a>
266
+
267
+
268
+
269
+ </span>
270
+
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+ <span class="summary_desc"><div class='inline'>Private key (do not share this with anyone!).</div></span>
280
+
281
+ </li>
282
+
283
+
284
+ <li class="public ">
285
+ <span class="summary_signature">
286
+
287
+ <a href="#public_key-instance_method" title="#public_key (instance method)">- (String) <strong>public_key</strong> </a>
288
+
289
+
290
+
291
+ </span>
292
+
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+ <span class="summary_desc"><div class='inline'>Akero public key.</div></span>
302
+
303
+ </li>
304
+
305
+
306
+ <li class="public ">
307
+ <span class="summary_signature">
308
+
309
+ <a href="#receive-instance_method" title="#receive (instance method)">- (Akero::Message) <strong>receive</strong>(ciphertext) </a>
310
+
311
+
312
+
313
+ </span>
314
+
315
+
316
+
317
+
318
+
319
+
320
+
321
+
322
+
323
+ <span class="summary_desc"><div class='inline'>Receive an Akero message.</div></span>
324
+
325
+ </li>
326
+
327
+
328
+ <li class="public ">
329
+ <span class="summary_signature">
330
+
331
+ <a href="#sign-instance_method" title="#sign (instance method)">- (String) <strong>sign</strong>(plaintext, ascii_armor = true) </a>
332
+
333
+
334
+
335
+ </span>
336
+
337
+
338
+
339
+
340
+
341
+
342
+
343
+
344
+
345
+ <span class="summary_desc"><div class='inline'>Sign a message.</div></span>
346
+
347
+ </li>
348
+
349
+
350
+ </ul>
351
+
352
+
353
+ <div id="constructor_details" class="method_details_list">
354
+ <h2>Constructor Details</h2>
355
+
356
+ <div class="method_details first">
357
+ <h3 class="signature first" id="initialize-instance_method">
358
+
359
+ - (<tt><span class='object_link'><a href="" title="Akero (class)">Akero</a></span></tt>) <strong>initialize</strong>(rsa_bits = DEFAULT_RSA_BITS, digest = DEFAULT_DIGEST)
360
+
361
+
362
+
363
+
364
+
365
+ </h3><div class="docstring">
366
+ <div class="discussion">
367
+ Create a new Akero instance.
368
+
369
+ </div>
370
+ </div>
371
+ <div class="tags">
372
+
373
+ <div class="examples">
374
+ <p class="tag_title">Examples:</p>
375
+
376
+
377
+ <p class="example_title"><div class='inline'>Create new Akero instance with default settings</div></p>
378
+
379
+ <pre class="example code"><code><span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span></code></pre>
380
+
381
+
382
+ <p class="example_title"><div class='inline'>Create new Akero instance with a 4096-bit key</div></p>
383
+
384
+ <pre class="example code"><code><span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='int'>4096</span><span class='rparen'>)</span></code></pre>
385
+
386
+
387
+ <p class="example_title"><div class='inline'>Create new Akero instance with a 4096-bit key and SHA512 digest</div></p>
388
+
389
+ <pre class="example code"><code><span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='int'>4096</span><span class='comma'>,</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Digest</span><span class='op'>::</span><span class='const'>SHA512</span><span class='rparen'>)</span></code></pre>
390
+
391
+ </div>
392
+ <p class="tag_title">Parameters:</p>
393
+ <ul class="param">
394
+
395
+ <li>
396
+
397
+ <span class='name'>rsa_bits</span>
398
+
399
+
400
+ <span class='type'>(<tt>Integer</tt>)</span>
401
+
402
+
403
+ <em class="default">(defaults to: <tt>DEFAULT_RSA_BITS</tt>)</em>
404
+
405
+
406
+ &mdash;
407
+ <div class='inline'>RSA key length</div>
408
+
409
+ </li>
410
+
411
+ <li>
412
+
413
+ <span class='name'>digest</span>
414
+
415
+
416
+ <span class='type'>(<tt>OpenSSL::Digest</tt>)</span>
417
+
418
+
419
+ <em class="default">(defaults to: <tt>DEFAULT_DIGEST</tt>)</em>
420
+
421
+
422
+ &mdash;
423
+ <div class='inline'>Signature digest</div>
424
+
425
+ </li>
426
+
427
+ </ul>
428
+
429
+
430
+ </div><table class="source_code">
431
+ <tr>
432
+ <td>
433
+ <pre class="lines">
434
+
435
+
436
+ 107
437
+ 108
438
+ 109</pre>
439
+ </td>
440
+ <td>
441
+ <pre class="code"><span class="info file"># File 'lib/akero.rb', line 107</span>
442
+
443
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_rsa_bits'>rsa_bits</span><span class='op'>=</span><span class='const'>DEFAULT_RSA_BITS</span><span class='comma'>,</span> <span class='id identifier rubyid_digest'>digest</span><span class='op'>=</span><span class='const'>DEFAULT_DIGEST</span><span class='rparen'>)</span>
444
+ <span class='ivar'>@key</span><span class='comma'>,</span> <span class='ivar'>@cert</span> <span class='op'>=</span> <span class='id identifier rubyid_generate_keypair'>generate_keypair</span><span class='lparen'>(</span><span class='id identifier rubyid_rsa_bits'>rsa_bits</span><span class='comma'>,</span> <span class='id identifier rubyid_digest'>digest</span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_rsa_bits'>rsa_bits</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
445
+ <span class='kw'>end</span></pre>
446
+ </td>
447
+ </tr>
448
+ </table>
449
+ </div>
450
+
451
+ </div>
452
+
453
+
454
+ <div id="class_method_details" class="method_details_list">
455
+ <h2>Class Method Details</h2>
456
+
457
+
458
+ <div class="method_details first">
459
+ <h3 class="signature first" id="load-class_method">
460
+
461
+ + (<tt><span class='object_link'><a href="" title="Akero (class)">Akero</a></span></tt>) <strong>load</strong>(private_key)
462
+
463
+
464
+
465
+
466
+
467
+ </h3><div class="docstring">
468
+ <div class="discussion">
469
+ Load an Akero identity.
470
+
471
+ </div>
472
+ </div>
473
+ <div class="tags">
474
+
475
+ <div class="examples">
476
+ <p class="tag_title">Examples:</p>
477
+
478
+
479
+ <p class="example_title"><div class='inline'>Load previously stored private key</div></p>
480
+
481
+ <pre class="example code"><code><span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/tmp/alice.akr</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='rparen'>)</span></code></pre>
482
+
483
+ </div>
484
+ <p class="tag_title">Parameters:</p>
485
+ <ul class="param">
486
+
487
+ <li>
488
+
489
+ <span class='name'>private_key</span>
490
+
491
+
492
+ <span class='type'>(<tt>String</tt>)</span>
493
+
494
+
495
+
496
+ &mdash;
497
+ <div class='inline'>Akero private key</div>
498
+
499
+ </li>
500
+
501
+ </ul>
502
+
503
+ <p class="tag_title">Returns:</p>
504
+ <ul class="return">
505
+
506
+ <li>
507
+
508
+
509
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Akero (class)">Akero</a></span></tt>)</span>
510
+
511
+
512
+
513
+ &mdash;
514
+ <div class='inline'>New Akero instance</div>
515
+
516
+ </li>
517
+
518
+ </ul>
519
+
520
+ </div><table class="source_code">
521
+ <tr>
522
+ <td>
523
+ <pre class="lines">
524
+
525
+
526
+ 118
527
+ 119
528
+ 120
529
+ 121
530
+ 122
531
+ 123
532
+ 124
533
+ 125
534
+ 126
535
+ 127
536
+ 128</pre>
537
+ </td>
538
+ <td>
539
+ <pre class="code"><span class="info file"># File 'lib/akero.rb', line 118</span>
540
+
541
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span><span class='lparen'>(</span><span class='id identifier rubyid_private_key'>private_key</span><span class='rparen'>)</span>
542
+ <span class='id identifier rubyid_inner'>inner</span> <span class='op'>=</span> <span class='const'>Base64</span><span class='period'>.</span><span class='id identifier rubyid_decode64'>decode64</span><span class='lparen'>(</span><span class='id identifier rubyid_private_key'>private_key</span><span class='lbracket'>[</span><span class='const'>PKEY_HEADER</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='op'>..</span><span class='id identifier rubyid_private_key'>private_key</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='op'>-</span><span class='const'>PKEY_FOOTER</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='rbracket'>]</span><span class='rparen'>)</span>
543
+ <span class='kw'>if</span> <span class='id identifier rubyid_inner'>inner</span><span class='lbracket'>[</span><span class='int'>0</span><span class='op'>..</span><span class='int'>63</span><span class='rbracket'>]</span> <span class='op'>!=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Digest</span><span class='op'>::</span><span class='const'>SHA512</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_inner'>inner</span><span class='lbracket'>[</span><span class='int'>64</span><span class='op'>..</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_digest'>digest</span>
544
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>RuntimeError</span><span class='comma'>,</span> <span class='const'>ERR_PKEY_CORRUPT</span>
545
+ <span class='kw'>end</span>
546
+ <span class='id identifier rubyid_cert_len'>cert_len</span> <span class='op'>=</span> <span class='id identifier rubyid_inner'>inner</span><span class='lbracket'>[</span><span class='int'>64</span><span class='op'>..</span><span class='int'>65</span><span class='rbracket'>]</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'>S</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span>
547
+ <span class='id identifier rubyid_akero'>akero</span> <span class='op'>=</span> <span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>nil</span><span class='rparen'>)</span>
548
+ <span class='id identifier rubyid_akero'>akero</span><span class='period'>.</span><span class='id identifier rubyid_instance_variable_set'>instance_variable_set</span><span class='lparen'>(</span><span class='symbol'>:@cert</span><span class='comma'>,</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>X509</span><span class='op'>::</span><span class='const'>Certificate</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_inner'>inner</span><span class='lbracket'>[</span><span class='int'>66</span><span class='op'>..</span><span class='int'>66</span><span class='op'>+</span><span class='id identifier rubyid_cert_len'>cert_len</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rparen'>)</span>
549
+ <span class='id identifier rubyid_akero'>akero</span><span class='period'>.</span><span class='id identifier rubyid_instance_variable_set'>instance_variable_set</span><span class='lparen'>(</span><span class='symbol'>:@key</span><span class='comma'>,</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='lparen'>(</span><span class='id identifier rubyid_inner'>inner</span><span class='lbracket'>[</span><span class='int'>66</span><span class='op'>+</span><span class='id identifier rubyid_cert_len'>cert_len</span><span class='op'>..</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rparen'>)</span>
550
+ <span class='id identifier rubyid_akero'>akero</span>
551
+ <span class='kw'>end</span></pre>
552
+ </td>
553
+ </tr>
554
+ </table>
555
+ </div>
556
+
557
+ </div>
558
+
559
+ <div id="instance_method_details" class="method_details_list">
560
+ <h2>Instance Method Details</h2>
561
+
562
+
563
+ <div class="method_details first">
564
+ <h3 class="signature first" id="encrypt-instance_method">
565
+
566
+ - (<tt>String</tt>) <strong>encrypt</strong>(to, plaintext, ascii_armor = true)
567
+
568
+
569
+
570
+
571
+
572
+ </h3><div class="docstring">
573
+ <div class="discussion">
574
+ Sign-&gt;encrypt-&gt;sign a message for 1 or more recipients.
575
+
576
+ Only the listed recipients can decrypt the message-body
577
+ but anyone can extract the sender's public key.
578
+
579
+ </div>
580
+ </div>
581
+ <div class="tags">
582
+
583
+ <div class="examples">
584
+ <p class="tag_title">Examples:</p>
585
+
586
+
587
+ <p class="example_title"><div class='inline'>Alice encrypts a message to Bob</div></p>
588
+
589
+ <pre class="example code"><code><span class='id identifier rubyid_alice'>alice</span> <span class='op'>=</span> <span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
590
+ <span class='id identifier rubyid_bob'>bob</span> <span class='op'>=</span> <span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
591
+ <span class='id identifier rubyid_ciphertext'>ciphertext</span> <span class='op'>=</span> <span class='id identifier rubyid_alice'>alice</span><span class='period'>.</span><span class='id identifier rubyid_encrypt'>encrypt</span><span class='lparen'>(</span><span class='id identifier rubyid_bob'>bob</span><span class='period'>.</span><span class='id identifier rubyid_public_key'>public_key</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Hello Bob!</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span></code></pre>
592
+
593
+
594
+ <p class="example_title"><div class='inline'>Alice encrypts a message to Bob and Charlie</div></p>
595
+
596
+ <pre class="example code"><code><span class='id identifier rubyid_alice'>alice</span> <span class='op'>=</span> <span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
597
+ <span class='id identifier rubyid_bob'>bob</span> <span class='op'>=</span> <span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
598
+ <span class='id identifier rubyid_charlie'>charlie</span> <span class='op'>=</span> <span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
599
+ <span class='id identifier rubyid_ciphertext'>ciphertext</span> <span class='op'>=</span> <span class='id identifier rubyid_alice'>alice</span><span class='period'>.</span><span class='id identifier rubyid_encrypt'>encrypt</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_bob'>bob</span><span class='period'>.</span><span class='id identifier rubyid_public_key'>public_key</span><span class='comma'>,</span> <span class='id identifier rubyid_charlie'>charlie</span><span class='period'>.</span><span class='id identifier rubyid_public_key'>public_key</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Hello Bob and Charlie!</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span></code></pre>
600
+
601
+ </div>
602
+ <p class="tag_title">Parameters:</p>
603
+ <ul class="param">
604
+
605
+ <li>
606
+
607
+ <span class='name'>to</span>
608
+
609
+
610
+ <span class='type'>(<tt>Array</tt>)</span>
611
+
612
+
613
+
614
+ &mdash;
615
+ <div class='inline'>Akero public keys of recipients</div>
616
+
617
+ </li>
618
+
619
+ <li>
620
+
621
+ <span class='name'>plaintext</span>
622
+
623
+
624
+ <span class='type'>(<tt>String</tt>)</span>
625
+
626
+
627
+
628
+ &mdash;
629
+ <div class='inline'>The message to encrypt (binary safe)</div>
630
+
631
+ </li>
632
+
633
+ <li>
634
+
635
+ <span class='name'>ascii_armor</span>
636
+
637
+
638
+ <span class='type'>(<tt>Boolean</tt>)</span>
639
+
640
+
641
+ <em class="default">(defaults to: <tt>true</tt>)</em>
642
+
643
+
644
+ &mdash;
645
+ <div class='inline'>Convert the output to base64?</div>
646
+
647
+ </li>
648
+
649
+ </ul>
650
+
651
+ <p class="tag_title">Returns:</p>
652
+ <ul class="return">
653
+
654
+ <li>
655
+
656
+
657
+ <span class='type'>(<tt>String</tt>)</span>
658
+
659
+
660
+
661
+ &mdash;
662
+ <div class='inline'>Akero secret message</div>
663
+
664
+ </li>
665
+
666
+ </ul>
667
+
668
+ </div><table class="source_code">
669
+ <tr>
670
+ <td>
671
+ <pre class="lines">
672
+
673
+
674
+ 192
675
+ 193
676
+ 194
677
+ 195
678
+ 196
679
+ 197
680
+ 198
681
+ 199
682
+ 200
683
+ 201
684
+ 202
685
+ 203
686
+ 204
687
+ 205
688
+ 206
689
+ 207
690
+ 208</pre>
691
+ </td>
692
+ <td>
693
+ <pre class="code"><span class="info file"># File 'lib/akero.rb', line 192</span>
694
+
695
+ <span class='kw'>def</span> <span class='id identifier rubyid_encrypt'>encrypt</span><span class='lparen'>(</span><span class='id identifier rubyid_to'>to</span><span class='comma'>,</span> <span class='id identifier rubyid_plaintext'>plaintext</span><span class='comma'>,</span> <span class='id identifier rubyid_ascii_armor'>ascii_armor</span><span class='op'>=</span><span class='kw'>true</span><span class='rparen'>)</span>
696
+ <span class='id identifier rubyid_to'>to</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_to'>to</span><span class='rbracket'>]</span> <span class='kw'>unless</span> <span class='id identifier rubyid_to'>to</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span> <span class='const'>Array</span>
697
+ <span class='id identifier rubyid_to'>to</span> <span class='op'>=</span> <span class='id identifier rubyid_to'>to</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_e'>e</span><span class='op'>|</span>
698
+ <span class='kw'>case</span> <span class='id identifier rubyid_e'>e</span>
699
+ <span class='kw'>when</span> <span class='const'>String</span>
700
+ <span class='kw'>begin</span>
701
+ <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>X509</span><span class='op'>::</span><span class='const'>Certificate</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_replate'>replate</span><span class='lparen'>(</span><span class='id identifier rubyid_e'>e</span><span class='comma'>,</span> <span class='const'>Akero</span><span class='op'>::</span><span class='const'>PLATE_CERT</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span><span class='rparen'>)</span>
702
+ <span class='kw'>rescue</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>X509</span><span class='op'>::</span><span class='const'>CertificateError</span>
703
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>RuntimeError</span><span class='comma'>,</span> <span class='const'>ERR_INVALID_RECIPIENT_CERT</span>
704
+ <span class='kw'>end</span>
705
+ <span class='kw'>else</span>
706
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>RuntimeError</span><span class='comma'>,</span> <span class='const'>ERR_INVALID_RECIPIENT</span>
707
+ <span class='kw'>end</span>
708
+ <span class='rbrace'>}</span>
709
+ <span class='id identifier rubyid_out'>out</span> <span class='op'>=</span> <span class='id identifier rubyid__sign'>_sign</span><span class='lparen'>(</span><span class='id identifier rubyid__encrypt'>_encrypt</span><span class='lparen'>(</span><span class='id identifier rubyid_to'>to</span><span class='comma'>,</span> <span class='id identifier rubyid__sign'>_sign</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
710
+ <span class='id identifier rubyid_ascii_armor'>ascii_armor</span> <span class='op'>?</span> <span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_replate'>replate</span><span class='lparen'>(</span><span class='id identifier rubyid_out'>out</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='comma'>,</span> <span class='const'>PLATE_CRYPTED</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_out'>out</span><span class='period'>.</span><span class='id identifier rubyid_to_der'>to_der</span>
711
+ <span class='kw'>end</span></pre>
712
+ </td>
713
+ </tr>
714
+ </table>
715
+ </div>
716
+
717
+ <div class="method_details ">
718
+ <h3 class="signature " id="id-instance_method">
719
+
720
+ - (<tt>String</tt>) <strong>id</strong>
721
+
722
+
723
+
724
+
725
+
726
+ </h3><div class="docstring">
727
+ <div class="discussion">
728
+ Unique fingerprint of this Akero keypair.
729
+
730
+ </div>
731
+ </div>
732
+ <div class="tags">
733
+
734
+ <p class="tag_title">Returns:</p>
735
+ <ul class="return">
736
+
737
+ <li>
738
+
739
+
740
+ <span class='type'>(<tt>String</tt>)</span>
741
+
742
+
743
+
744
+ &mdash;
745
+ <div class='inline'>Akero fingerprint</div>
746
+
747
+ </li>
748
+
749
+ </ul>
750
+
751
+ </div><table class="source_code">
752
+ <tr>
753
+ <td>
754
+ <pre class="lines">
755
+
756
+
757
+ 89
758
+ 90
759
+ 91</pre>
760
+ </td>
761
+ <td>
762
+ <pre class="code"><span class="info file"># File 'lib/akero.rb', line 89</span>
763
+
764
+ <span class='kw'>def</span> <span class='id identifier rubyid_id'>id</span>
765
+ <span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_fingerprint_from_cert'>fingerprint_from_cert</span><span class='lparen'>(</span><span class='ivar'>@cert</span><span class='rparen'>)</span>
766
+ <span class='kw'>end</span></pre>
767
+ </td>
768
+ </tr>
769
+ </table>
770
+ </div>
771
+
772
+ <div class="method_details ">
773
+ <h3 class="signature " id="private_key-instance_method">
774
+
775
+ - (<tt>String</tt>) <strong>private_key</strong>
776
+
777
+
778
+
779
+
780
+
781
+ </h3><div class="docstring">
782
+ <div class="discussion">
783
+ Private key (do not share this with anyone!)
784
+
785
+ </div>
786
+ </div>
787
+ <div class="tags">
788
+
789
+ <div class="examples">
790
+ <p class="tag_title">Examples:</p>
791
+
792
+
793
+ <p class="example_title"><div class='inline'>Save and load an Akero identity</div></p>
794
+
795
+ <pre class="example code"><code><span class='id identifier rubyid_alice'>alice</span> <span class='op'>=</span> <span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
796
+ <span class='comment'># Save
797
+ </span><span class='const'>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'>/tmp/alice.akr</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>w</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_f'>f</span><span class='op'>|</span> <span class='id identifier rubyid_f'>f</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span><span class='lparen'>(</span><span class='id identifier rubyid_alice'>alice</span><span class='period'>.</span><span class='id identifier rubyid_private_key'>private_key</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
798
+ <span class='comment'># Load
799
+ </span><span class='id identifier rubyid_new_alice'>new_alice</span> <span class='op'>=</span> <span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/tmp/alice.akr</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='rparen'>)</span></code></pre>
800
+
801
+ </div>
802
+
803
+ <p class="tag_title">Returns:</p>
804
+ <ul class="return">
805
+
806
+ <li>
807
+
808
+
809
+ <span class='type'>(<tt>String</tt>)</span>
810
+
811
+
812
+
813
+ &mdash;
814
+ <div class='inline'>Private key (ascii armored)</div>
815
+
816
+ </li>
817
+
818
+ </ul>
819
+
820
+ <p class="tag_title">See Also:</p>
821
+ <ul class="see">
822
+
823
+ <li>#load</li>
824
+
825
+ </ul>
826
+
827
+ </div><table class="source_code">
828
+ <tr>
829
+ <td>
830
+ <pre class="lines">
831
+
832
+
833
+ 151
834
+ 152
835
+ 153
836
+ 154
837
+ 155
838
+ 156
839
+ 157
840
+ 158
841
+ 159
842
+ 160</pre>
843
+ </td>
844
+ <td>
845
+ <pre class="code"><span class="info file"># File 'lib/akero.rb', line 151</span>
846
+
847
+ <span class='kw'>def</span> <span class='id identifier rubyid_private_key'>private_key</span>
848
+ <span class='comment'># We do not use PKCS#12 (&quot;PFX&quot;) for serialization here
849
+ </span> <span class='comment'># because of http://www.cs.auckland.ac.nz/~pgut001/pubs/pfx.html
850
+ </span> <span class='id identifier rubyid_cert_der'>cert_der</span> <span class='op'>=</span> <span class='ivar'>@cert</span><span class='period'>.</span><span class='id identifier rubyid_to_der'>to_der</span>
851
+ <span class='id identifier rubyid_out'>out</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_cert_der'>cert_der</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_pack'>pack</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>S</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
852
+ <span class='id identifier rubyid_out'>out</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_cert_der'>cert_der</span>
853
+ <span class='id identifier rubyid_out'>out</span> <span class='op'>&lt;&lt;</span> <span class='ivar'>@key</span><span class='period'>.</span><span class='id identifier rubyid_to_der'>to_der</span>
854
+ <span class='id identifier rubyid_out'>out</span><span class='period'>.</span><span class='id identifier rubyid_insert'>insert</span><span class='lparen'>(</span><span class='int'>0</span><span class='comma'>,</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Digest</span><span class='op'>::</span><span class='const'>SHA512</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_out'>out</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_digest'>digest</span><span class='rparen'>)</span>
855
+ <span class='const'>PKEY_HEADER</span><span class='op'>+</span><span class='const'>Base64</span><span class='period'>.</span><span class='id identifier rubyid_encode64'>encode64</span><span class='lparen'>(</span><span class='id identifier rubyid_out'>out</span><span class='rparen'>)</span><span class='op'>+</span><span class='const'>PKEY_FOOTER</span>
856
+ <span class='kw'>end</span></pre>
857
+ </td>
858
+ </tr>
859
+ </table>
860
+ </div>
861
+
862
+ <div class="method_details ">
863
+ <h3 class="signature " id="public_key-instance_method">
864
+
865
+ - (<tt>String</tt>) <strong>public_key</strong>
866
+
867
+
868
+
869
+
870
+
871
+ </h3><div class="docstring">
872
+ <div class="discussion">
873
+ Akero public key.
874
+
875
+ Share this with other Akero instances that you
876
+ wish to receive encrypted messages from.
877
+
878
+ </div>
879
+ </div>
880
+ <div class="tags">
881
+
882
+ <p class="tag_title">Returns:</p>
883
+ <ul class="return">
884
+
885
+ <li>
886
+
887
+
888
+ <span class='type'>(<tt>String</tt>)</span>
889
+
890
+
891
+
892
+ &mdash;
893
+ <div class='inline'>Public key (ascii armored)</div>
894
+
895
+ </li>
896
+
897
+ </ul>
898
+
899
+ </div><table class="source_code">
900
+ <tr>
901
+ <td>
902
+ <pre class="lines">
903
+
904
+
905
+ 136
906
+ 137
907
+ 138</pre>
908
+ </td>
909
+ <td>
910
+ <pre class="code"><span class="info file"># File 'lib/akero.rb', line 136</span>
911
+
912
+ <span class='kw'>def</span> <span class='id identifier rubyid_public_key'>public_key</span>
913
+ <span class='const'>Akero</span><span class='op'>::</span><span class='id identifier rubyid_replate'>replate</span><span class='lparen'>(</span><span class='ivar'>@cert</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='comma'>,</span> <span class='const'>Akero</span><span class='op'>::</span><span class='const'>PLATE_CERT</span><span class='rparen'>)</span>
914
+ <span class='kw'>end</span></pre>
915
+ </td>
916
+ </tr>
917
+ </table>
918
+ </div>
919
+
920
+ <div class="method_details ">
921
+ <h3 class="signature " id="receive-instance_method">
922
+
923
+ - (<tt><span class='object_link'><a href="Akero/Message.html" title="Akero::Message (class)">Akero::Message</a></span></tt>) <strong>receive</strong>(ciphertext)
924
+
925
+
926
+
927
+
928
+
929
+ </h3><div class="docstring">
930
+ <div class="discussion">
931
+ Receive an Akero message.
932
+
933
+ </div>
934
+ </div>
935
+ <div class="tags">
936
+ <p class="tag_title">Parameters:</p>
937
+ <ul class="param">
938
+
939
+ <li>
940
+
941
+ <span class='name'>ciphertext</span>
942
+
943
+
944
+ <span class='type'>(<tt>String</tt>)</span>
945
+
946
+
947
+
948
+ &mdash;
949
+ <div class='inline'>Akero Message</div>
950
+
951
+ </li>
952
+
953
+ </ul>
954
+
955
+ <p class="tag_title">Returns:</p>
956
+ <ul class="return">
957
+
958
+ <li>
959
+
960
+
961
+ <span class='type'>(<tt><span class='object_link'><a href="Akero/Message.html" title="Akero::Message (class)">Akero::Message</a></span></tt>)</span>
962
+
963
+
964
+
965
+ &mdash;
966
+ <div class='inline'>Message_body, signer_certificate, body_type</div>
967
+
968
+ </li>
969
+
970
+ </ul>
971
+ <p class="tag_title">Raises:</p>
972
+ <ul class="raise">
973
+
974
+ <li>
975
+
976
+
977
+ <span class='type'>(<tt>RuntimeError</tt>)</span>
978
+
979
+
980
+
981
+ </li>
982
+
983
+ </ul>
984
+
985
+ </div><table class="source_code">
986
+ <tr>
987
+ <td>
988
+ <pre class="lines">
989
+
990
+
991
+ 214
992
+ 215
993
+ 216
994
+ 217
995
+ 218
996
+ 219
997
+ 220
998
+ 221
999
+ 222
1000
+ 223
1001
+ 224
1002
+ 225
1003
+ 226
1004
+ 227
1005
+ 228
1006
+ 229
1007
+ 230
1008
+ 231
1009
+ 232
1010
+ 233
1011
+ 234
1012
+ 235
1013
+ 236</pre>
1014
+ </td>
1015
+ <td>
1016
+ <pre class="code"><span class="info file"># File 'lib/akero.rb', line 214</span>
1017
+
1018
+ <span class='kw'>def</span> <span class='id identifier rubyid_receive'>receive</span><span class='lparen'>(</span><span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='rparen'>)</span>
1019
+ <span class='kw'>if</span> <span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='period'>.</span><span class='id identifier rubyid_start_with?'>start_with?</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>-----BEGIN </span><span class='tstring_end'>'</span></span>
1020
+ <span class='id identifier rubyid_ciphertext'>ciphertext</span> <span class='op'>=</span> <span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_replate'>replate</span><span class='lparen'>(</span><span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='comma'>,</span> <span class='const'>Akero</span><span class='op'>::</span><span class='const'>PLATE_CRYPTED</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span>
1021
+ <span class='kw'>end</span>
1022
+ <span class='kw'>begin</span>
1023
+ <span class='id identifier rubyid_body'>body</span><span class='comma'>,</span> <span class='id identifier rubyid_signer_cert'>signer_cert</span><span class='comma'>,</span> <span class='id identifier rubyid_body_type'>body_type</span> <span class='op'>=</span> <span class='id identifier rubyid_verify'>verify</span><span class='lparen'>(</span><span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1024
+ <span class='kw'>rescue</span> <span class='const'>ArgumentError</span>
1025
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>RuntimeError</span><span class='comma'>,</span> <span class='const'>ERR_MSG_MALFORMED_ENV</span>
1026
+ <span class='kw'>end</span>
1027
+
1028
+ <span class='kw'>case</span> <span class='id identifier rubyid_body_type'>body_type</span><span class='period'>.</span><span class='id identifier rubyid_ord'>ord</span>
1029
+ <span class='kw'>when</span> <span class='int'>0x00</span>
1030
+ <span class='comment'># public message (signed)
1031
+ </span> <span class='kw'>return</span> <span class='const'>Message</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_body'>body</span><span class='comma'>,</span> <span class='id identifier rubyid_signer_cert'>signer_cert</span><span class='comma'>,</span> <span class='symbol'>:signed</span><span class='rparen'>)</span>
1032
+ <span class='kw'>when</span> <span class='int'>0x01</span>
1033
+ <span class='comment'># private message (signed, crypted, signed)
1034
+ </span> <span class='id identifier rubyid_signed_plaintext'>signed_plaintext</span> <span class='op'>=</span> <span class='id identifier rubyid__decrypt'>_decrypt</span><span class='lparen'>(</span><span class='id identifier rubyid_body'>body</span><span class='rparen'>)</span>
1035
+ <span class='id identifier rubyid_plaintext'>plaintext</span><span class='comma'>,</span> <span class='id identifier rubyid_verified_cert'>verified_cert</span><span class='comma'>,</span> <span class='id identifier rubyid_body_type'>body_type</span> <span class='op'>=</span> <span class='id identifier rubyid_verify'>verify</span><span class='lparen'>(</span><span class='id identifier rubyid_signed_plaintext'>signed_plaintext</span><span class='comma'>,</span> <span class='id identifier rubyid_signer_cert'>signer_cert</span><span class='rparen'>)</span>
1036
+ <span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='const'>Message</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='comma'>,</span> <span class='id identifier rubyid_signer_cert'>signer_cert</span><span class='comma'>,</span> <span class='symbol'>:encrypted</span><span class='rparen'>)</span>
1037
+ <span class='kw'>return</span> <span class='id identifier rubyid_msg'>msg</span>
1038
+ <span class='kw'>end</span>
1039
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>RuntimeError</span><span class='comma'>,</span> <span class='const'>ERR_MSG_MALFORMED_BODY</span>
1040
+ <span class='kw'>end</span></pre>
1041
+ </td>
1042
+ </tr>
1043
+ </table>
1044
+ </div>
1045
+
1046
+ <div class="method_details ">
1047
+ <h3 class="signature " id="sign-instance_method">
1048
+
1049
+ - (<tt>String</tt>) <strong>sign</strong>(plaintext, ascii_armor = true)
1050
+
1051
+
1052
+
1053
+
1054
+
1055
+ </h3><div class="docstring">
1056
+ <div class="discussion">
1057
+ Sign a message.
1058
+
1059
+ </div>
1060
+ </div>
1061
+ <div class="tags">
1062
+ <p class="tag_title">Parameters:</p>
1063
+ <ul class="param">
1064
+
1065
+ <li>
1066
+
1067
+ <span class='name'>plaintext</span>
1068
+
1069
+
1070
+ <span class='type'>(<tt>String</tt>)</span>
1071
+
1072
+
1073
+
1074
+ &mdash;
1075
+ <div class='inline'>The message to sign (binary safe)</div>
1076
+
1077
+ </li>
1078
+
1079
+ <li>
1080
+
1081
+ <span class='name'>ascii_armor</span>
1082
+
1083
+
1084
+ <span class='type'>(<tt>Boolean</tt>)</span>
1085
+
1086
+
1087
+ <em class="default">(defaults to: <tt>true</tt>)</em>
1088
+
1089
+
1090
+ &mdash;
1091
+ <div class='inline'>Convert the output in base64?</div>
1092
+
1093
+ </li>
1094
+
1095
+ </ul>
1096
+
1097
+ <p class="tag_title">Returns:</p>
1098
+ <ul class="return">
1099
+
1100
+ <li>
1101
+
1102
+
1103
+ <span class='type'>(<tt>String</tt>)</span>
1104
+
1105
+
1106
+
1107
+ &mdash;
1108
+ <div class='inline'>Akero signed message</div>
1109
+
1110
+ </li>
1111
+
1112
+ </ul>
1113
+
1114
+ </div><table class="source_code">
1115
+ <tr>
1116
+ <td>
1117
+ <pre class="lines">
1118
+
1119
+
1120
+ 167
1121
+ 168
1122
+ 169
1123
+ 170</pre>
1124
+ </td>
1125
+ <td>
1126
+ <pre class="code"><span class="info file"># File 'lib/akero.rb', line 167</span>
1127
+
1128
+ <span class='kw'>def</span> <span class='id identifier rubyid_sign'>sign</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='comma'>,</span> <span class='id identifier rubyid_ascii_armor'>ascii_armor</span><span class='op'>=</span><span class='kw'>true</span><span class='rparen'>)</span>
1129
+ <span class='id identifier rubyid_out'>out</span> <span class='op'>=</span> <span class='id identifier rubyid__sign'>_sign</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='rparen'>)</span>
1130
+ <span class='id identifier rubyid_ascii_armor'>ascii_armor</span> <span class='op'>?</span> <span class='const'>Akero</span><span class='period'>.</span><span class='id identifier rubyid_replate'>replate</span><span class='lparen'>(</span><span class='id identifier rubyid_out'>out</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='comma'>,</span> <span class='const'>Akero</span><span class='op'>::</span><span class='const'>PLATE_SIGNED</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_out'>out</span><span class='period'>.</span><span class='id identifier rubyid_to_der'>to_der</span>
1131
+ <span class='kw'>end</span></pre>
1132
+ </td>
1133
+ </tr>
1134
+ </table>
1135
+ </div>
1136
+
1137
+ </div>
1138
+
1139
+ </div>
1140
+
1141
+ <div id="footer">
1142
+ Generated on Mon Mar 18 15:03:26 2013 by
1143
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1144
+ 0.8.5.2 (ruby-1.9.3).
1145
+ </div>
1146
+
1147
+ </body>
1148
+ </html>