akero 1.0.4 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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>