openpgp 0.0.2 → 0.0.3

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.
@@ -24,6 +24,8 @@ module OpenPGP module Client
24
24
 
25
25
  ##
26
26
  # Prints the program version and licensing information.
27
+ #
28
+ # @return [void]
27
29
  def version
28
30
  puts "gpg.rb (GnuPG compatible) #{VERSION}"
29
31
  puts
@@ -36,17 +38,24 @@ module OpenPGP module Client
36
38
  end
37
39
 
38
40
  ##
39
- # Prints a usage message summarizing the most useful command-line options.
41
+ # Prints a usage message summarizing the most useful command-line
42
+ # options.
43
+ #
44
+ # @return [void]
40
45
  def help() end
41
46
 
42
47
  ##
43
48
  # Prints warranty information.
49
+ #
50
+ # @return [void]
44
51
  def warranty
45
52
  raise NotImplementedError
46
53
  end
47
54
 
48
55
  ##
49
56
  # Prints a list of all available options and commands.
57
+ #
58
+ # @return [void]
50
59
  def dump_options
51
60
  self.class.public_instance_methods(false).each do |command|
52
61
  if command =~ /^[\w\d_]+$/
@@ -60,30 +69,41 @@ module OpenPGP module Client
60
69
 
61
70
  ##
62
71
  # Makes a signature.
72
+ #
73
+ # @return [void]
63
74
  def sign
64
75
  raise NotImplementedError # TODO
65
76
  end
66
77
 
67
78
  ##
68
79
  # Makes a clear text signature.
80
+ #
81
+ # @return [void]
69
82
  def clearsign
70
83
  raise NotImplementedError # TODO
71
84
  end
72
85
 
73
86
  ##
74
87
  # Makes a detached signature.
88
+ #
89
+ # @return [void]
75
90
  def detach_sign
76
91
  raise NotImplementedError # TODO
77
92
  end
78
93
 
79
94
  ##
80
95
  # Encrypts data.
96
+ #
97
+ # @return [void]
81
98
  def encrypt
82
99
  raise NotImplementedError # TODO
83
100
  end
84
101
 
85
102
  ##
86
103
  # Encrypts with a symmetric cipher using a passphrase.
104
+ #
105
+ # @param [String, #to_s] file
106
+ # @return [void]
87
107
  def symmetric(file)
88
108
  print OpenPGP.encrypt(File.read(file), {
89
109
  :symmetric => true,
@@ -96,6 +116,9 @@ module OpenPGP module Client
96
116
 
97
117
  ##
98
118
  # Stores only (make a simple RFC1991 literal data packet).
119
+ #
120
+ # @param [String, #to_s] file
121
+ # @return [void]
99
122
  def store(file)
100
123
  Message.write(stdout) do |msg|
101
124
  msg << Packet::LiteralData.new({
@@ -109,32 +132,47 @@ module OpenPGP module Client
109
132
 
110
133
  ##
111
134
  # Decrypts data.
135
+ #
136
+ # @param [String, #to_s] file
137
+ # @return [void]
112
138
  def decrypt(file)
113
139
  raise NotImplementedError # TODO
114
140
  end
115
141
 
116
142
  ##
117
143
  # Verifies data.
144
+ #
145
+ # @param [String, #to_s] file
146
+ # @return [void]
118
147
  def verify(file)
119
148
  raise NotImplementedError # TODO
120
149
  end
121
150
 
122
151
  ##
123
- # Identical to --multifile --verify.
152
+ # Identical to `--multifile --verify`.
153
+ #
154
+ # @param [Array<String>] files
155
+ # @return [void]
124
156
  def verify_files(*files)
125
157
  options[:multifile] = true
126
158
  files.each { |file| verify(file) }
127
159
  end
128
160
 
129
161
  ##
130
- # Identical to --multifile --encrypt.
162
+ # Identical to `--multifile --encrypt`.
163
+ #
164
+ # @param [Array<String>] files
165
+ # @return [void]
131
166
  def encrypt_files(*files)
132
167
  options[:multifile] = true
133
168
  files.each { |file| encrypt(file) }
134
169
  end
135
170
 
136
171
  ##
137
- # Identical to --multifile --decrypt.
172
+ # Identical to `--multifile --decrypt`.
173
+ #
174
+ # @param [Array<String>] files
175
+ # @return [void]
138
176
  def decrypt_files(*files)
139
177
  options[:multifile] = true
140
178
  files.each { |file| decrypt(file) }
@@ -142,12 +180,18 @@ module OpenPGP module Client
142
180
 
143
181
  ##
144
182
  # Lists keys from the public keyrings.
183
+ #
184
+ # @param [Array<String>] keys
185
+ # @return [void]
145
186
  def list_keys(*keys)
146
187
  list_public_keys(*keys)
147
188
  end
148
189
 
149
190
  ##
150
191
  # Lists keys from the public keyrings.
192
+ #
193
+ # @param [Array<String>] keys
194
+ # @return [void]
151
195
  def list_public_keys(*keys)
152
196
  public_keyrings.each do |keyring_filename, keyring|
153
197
  puts (keyring_filename = File.expand_path(keyring_filename))
@@ -168,6 +212,9 @@ module OpenPGP module Client
168
212
 
169
213
  ##
170
214
  # Lists keys from the secret keyrings.
215
+ #
216
+ # @param [Array<String>] keys
217
+ # @return [void]
171
218
  def list_secret_keys(*keys)
172
219
  secret_keyrings.each do |keyring_filename, keyring|
173
220
  puts (keyring_filename = File.expand_path(keyring_filename))
@@ -187,19 +234,26 @@ module OpenPGP module Client
187
234
  end
188
235
 
189
236
  ##
190
- # Same as +list_keys+, but the signatures are listed too.
237
+ # Same as {#list_keys}, but the signatures are listed too.
238
+ #
239
+ # @return [void]
191
240
  def list_sigs
192
241
  raise NotImplementedError # TODO
193
242
  end
194
243
 
195
244
  ##
196
- # Same as +list_sigs+, but the signatures are verified.
245
+ # Same as {#list_sigs}, but the signatures are verified.
246
+ #
247
+ # @return [void]
197
248
  def check_sigs
198
249
  raise NotImplementedError # TODO
199
250
  end
200
251
 
201
252
  ##
202
253
  # Lists all keys (or the specified ones) along with their fingerprints.
254
+ #
255
+ # @param [Array<String>] keys
256
+ # @return [void]
203
257
  def fingerprint(*keys)
204
258
  options[:fingerprint] = true
205
259
  list_keys(*keys)
@@ -207,102 +261,149 @@ module OpenPGP module Client
207
261
 
208
262
  ##
209
263
  # Lists only the sequence of packets.
264
+ #
265
+ # @return [void]
210
266
  def list_packets
211
267
  raise NotImplementedError # TODO
212
268
  end
213
269
 
214
270
  ##
215
271
  # Presents a menu to work with a smartcard.
272
+ #
273
+ # @return [void]
216
274
  def card_edit
217
275
  raise NotImplementedError # TODO
218
276
  end
219
277
 
220
278
  ##
221
279
  # Shows the content of the smart card.
280
+ #
281
+ # @return [void]
222
282
  def card_status
223
283
  raise NotImplementedError # TODO
224
284
  end
225
285
 
226
286
  ##
227
287
  # Presents a menu to allow changing the PIN of a smartcard.
288
+ #
289
+ # @return [void]
228
290
  def change_pin
229
291
  raise NotImplementedError # TODO
230
292
  end
231
293
 
232
294
  ##
233
295
  # Removes key from the public keyring.
296
+ #
297
+ # @param [String, #to_s] name
298
+ # @return [void]
234
299
  def delete_key(name)
235
300
  raise NotImplementedError # TODO
236
301
  end
237
302
 
238
303
  ##
239
304
  # Removes key from the secret and public keyring.
305
+ #
306
+ # @param [String, #to_s] name
307
+ # @return [void]
240
308
  def delete_secret_key(name)
241
309
  raise NotImplementedError # TODO
242
310
  end
243
311
 
244
312
  ##
245
- # Removes key from the secret and public keyring. If a secret key exists, it will be removed first.
313
+ # Removes key from the secret and public keyring. If a secret key
314
+ # exists, it will be removed first.
315
+ #
316
+ # @param [String, #to_s] name
317
+ # @return [void]
246
318
  def delete_secret_and_public_key(name)
247
319
  raise NotImplementedError # TODO
248
320
  end
249
321
 
250
322
  ##
251
323
  # Exports keys from the public keyring.
324
+ #
325
+ # @param [Array<String>] keys
326
+ # @return [void]
252
327
  def export(*keys)
253
328
  raise NotImplementedError # TODO
254
329
  end
255
330
 
256
331
  ##
257
332
  # Sends keys to a keyserver.
333
+ #
334
+ # @param [Array<String>] keys
335
+ # @return [void]
258
336
  def send_keys(*keys)
259
337
  raise NotImplementedError # TODO
260
338
  end
261
339
 
262
340
  ##
263
341
  # Exports the secret keys.
342
+ #
343
+ # @return [void]
264
344
  def export_secret_keys
265
345
  raise NotImplementedError # TODO
266
346
  end
267
347
 
268
348
  ##
269
349
  # Exports the secret subkeys.
350
+ #
351
+ # @return [void]
270
352
  def export_secret_subkeys
271
353
  raise NotImplementedError # TODO
272
354
  end
273
355
 
274
356
  ##
275
- # Imports/merges keys, adding the given keys to the keyring.
357
+ # Imports/merges keys, adding the given `keys` to the keyring.
358
+ #
359
+ # @param [Array<String>] keys
360
+ # @return [void]
276
361
  def import(*keys)
277
362
  raise NotImplementedError # TODO
278
363
  end
279
364
 
280
365
  ##
281
- # Alias for +import+.
366
+ # Alias for {#import}.
367
+ #
368
+ # @param [Array<String>] keys
369
+ # @return [void]
282
370
  def fast_import(*keys)
283
371
  import(*keys)
284
372
  end
285
373
 
286
374
  ##
287
- # Imports the keys with the given key IDs from a keyserver.
375
+ # Imports the `keys` with the given key IDs from a keyserver.
376
+ #
377
+ # @param [Array<String>] keys
378
+ # @return [void]
288
379
  def recv_keys(*keys)
289
380
  raise NotImplementedError # TODO
290
381
  end
291
382
 
292
383
  ##
293
- # Requests updates from a keyserver for keys that already exist on the local keyring.
384
+ # Requests updates from a keyserver for keys that already exist on the
385
+ # local keyring.
386
+ #
387
+ # @param [Array<String>] keys
388
+ # @return [void]
294
389
  def refresh_keys(*keys)
295
390
  raise NotImplementedError # TODO
296
391
  end
297
392
 
298
393
  ##
299
- # Searches the keyserver for the given names.
394
+ # Searches the keyserver for the given `names`.
395
+ #
396
+ # @param [Array<String>] names
397
+ # @return [void]
300
398
  def search_keys(*names)
301
399
  raise NotImplementedError # TODO
302
400
  end
303
401
 
304
402
  ##
305
403
  # Retrieves keys located at the specified URIs.
404
+ #
405
+ # @param [Array<String>] uris
406
+ # @return [void]
306
407
  def fetch_keys(*uris)
307
408
  require 'open-uri'
308
409
  raise NotImplementedError # TODO
@@ -310,36 +411,53 @@ module OpenPGP module Client
310
411
 
311
412
  ##
312
413
  # Does trust database maintenance.
414
+ #
415
+ # @return [void]
313
416
  def update_trustdb
314
417
  raise NotImplementedError # TODO
315
418
  end
316
419
 
317
420
  ##
318
421
  # Does trust database maintenance without user interaction.
422
+ #
423
+ # @return [void]
319
424
  def check_trustdb
320
425
  raise NotImplementedError # TODO
321
426
  end
322
427
 
323
428
  ##
324
- # Sends the ownertrust values to stdout.
429
+ # Sends the ownertrust values to `stdout`.
430
+ #
431
+ # @return [void]
325
432
  def export_ownertrust
326
433
  raise NotImplementedError # TODO
327
434
  end
328
435
 
329
436
  ##
330
- # Updates the trustdb with the ownertrust values stored in +files+ or stdin.
437
+ # Updates the trustdb with the ownertrust values stored in `files` or
438
+ # `stdin`.
439
+ #
440
+ # @param [Array<String>] files
441
+ # @return [void]
331
442
  def import_ownertrust(*files)
332
443
  raise NotImplementedError # TODO
333
444
  end
334
445
 
335
446
  ##
336
447
  # Creates signature caches in the keyring.
448
+ #
449
+ # @return [void]
337
450
  def rebuild_keydb_caches
338
451
  raise NotImplementedError # TODO
339
452
  end
340
453
 
341
454
  ##
342
- # Prints message digest of algorithm +algo+ for all given files or stdin.
455
+ # Prints message digest of algorithm `algo` for all given `files` or
456
+ # `stdin`.
457
+ #
458
+ # @param [String, #to_s] algo
459
+ # @param [Array<String>] files
460
+ # @return [void]
343
461
  def print_md(algo, *files)
344
462
  unless digest_algorithms.include?(algorithm = algo.to_s.upcase.to_sym)
345
463
  abort "gpg: invalid hash algorithm `#{algo}'"
@@ -353,7 +471,11 @@ module OpenPGP module Client
353
471
  end
354
472
 
355
473
  ##
356
- # Prints message digests of all available algorithms for all given files or stdin.
474
+ # Prints message digests of all available algorithms for all given
475
+ # `files` or `stdin`.
476
+ #
477
+ # @param [Array<String>] files
478
+ # @return [void]
357
479
  def print_mds(*files)
358
480
  files.each do |file|
359
481
  digest_algorithms.each do |algorithm|
@@ -366,7 +488,11 @@ module OpenPGP module Client
366
488
  end
367
489
 
368
490
  ##
369
- # Emits +count+ random bytes of the given quality level.
491
+ # Emits `count` random bytes of the given quality level.
492
+ #
493
+ # @param [Integer, #to_i] level
494
+ # @param [Integer, #to_i] count
495
+ # @return [void]
370
496
  def gen_random(level = 0, count = nil)
371
497
  wrong_args "--gen-random 0|1|2 [count]" unless (0..2).include?(level)
372
498
 
@@ -384,6 +510,11 @@ module OpenPGP module Client
384
510
 
385
511
  ##
386
512
  # Generates a prime number.
513
+ #
514
+ # @param [Integer, #to_i] mode
515
+ # @param [Integer, #to_i] bits
516
+ # @param [Integer, #to_i] qbits
517
+ # @return [void]
387
518
  def gen_prime(mode, bits, qbits = nil)
388
519
  case mode.to_i
389
520
  when 1..4
@@ -395,6 +526,9 @@ module OpenPGP module Client
395
526
 
396
527
  ##
397
528
  # Packs an arbitrary input into an OpenPGP ASCII armor.
529
+ #
530
+ # @param [String, #to_s] file
531
+ # @return [void]
398
532
  def enarmor(file)
399
533
  text = OpenPGP.enarmor(File.read(file), :armored_file, :comment => 'Use "gpg --dearmor" for unpacking', :line_length => 64)
400
534
  puts text # FIXME
@@ -402,6 +536,9 @@ module OpenPGP module Client
402
536
 
403
537
  ##
404
538
  # Unpacks an arbitrary input from an OpenPGP ASCII armor.
539
+ #
540
+ # @param [String, #to_s] file
541
+ # @return [void]
405
542
  def dearmor(file)
406
543
  data = OpenPGP.dearmor(File.read(file))
407
544
  puts data # FIXME
@@ -411,46 +548,75 @@ module OpenPGP module Client
411
548
 
412
549
  ##
413
550
  # Generates a new key pair.
551
+ #
552
+ # @return [void]
414
553
  def gen_key
415
554
  raise NotImplementedError # TODO
416
555
  end
417
556
 
418
557
  ##
419
558
  # Generates a revocation certificate for the complete key.
559
+ #
560
+ # @param [String, #to_s] name
561
+ # @return [void]
420
562
  def gen_revoke(name)
421
563
  raise NotImplementedError # TODO
422
564
  end
423
565
 
424
566
  ##
425
567
  # Generates a designated revocation certificate for a key.
568
+ #
569
+ # @param [String, #to_s] name
570
+ # @return [void]
426
571
  def desig_revoke(name)
427
572
  raise NotImplementedError # TODO
428
573
  end
429
574
 
430
575
  ##
431
- # Present a menu which enables you to do most of the key management related tasks.
576
+ # Presents a menu which enables you to do most of the key management
577
+ # related tasks.
578
+ #
579
+ # @param [String, #to_s] key
580
+ # @return [void]
432
581
  def edit_key(key)
433
582
  raise NotImplementedError # TODO
434
583
  end
435
584
 
436
585
  ##
437
586
  # Signs a public key with your secret key.
587
+ #
588
+ # @param [String, #to_s] name
589
+ # @return [void]
438
590
  def sign_key(name)
439
591
  raise NotImplementedError # TODO
440
592
  end
441
593
 
442
594
  ##
443
- # Signs a public key with your secret key but marks it as non-exportable.
595
+ # Signs a public key with your secret key but marks it as
596
+ # non-exportable.
597
+ #
598
+ # @param [String, #to_s] name
599
+ # @return [void]
444
600
  def lsign_key(name)
445
601
  raise NotImplementedError # TODO
446
602
  end
447
603
 
448
604
  protected
449
605
 
606
+ ##
607
+ # @return [IO]
450
608
  def stdin() $stdin end
609
+
610
+ ##
611
+ # @return [IO]
451
612
  def stdout() $stdout end
613
+
614
+ ##
615
+ # @return [IO]
452
616
  def stderr() $stdout end
453
617
 
618
+ ##
619
+ # @return [String]
454
620
  def read_passphrase
455
621
  if options[:passphrase]
456
622
  options[:passphrase]
@@ -459,30 +625,47 @@ module OpenPGP module Client
459
625
  end
460
626
  end
461
627
 
628
+ ##
629
+ # @return [Hash]
462
630
  def public_keyrings
463
631
  {public_keyring_file => keyring(public_keyring_file)} # FIXME
464
632
  end
465
633
 
634
+ ##
635
+ # @return [Hash]
466
636
  def secret_keyrings
467
637
  {secret_keyring_file => keyring(secret_keyring_file)} # FIXME
468
638
  end
469
639
 
640
+ ##
641
+ # @param [String, #to_s] file
642
+ # @return [Message]
470
643
  def keyring(file)
471
644
  OpenPGP::Message.parse(File.read(File.expand_path(file)))
472
645
  end
473
646
 
647
+ ##
648
+ # @return [String]
474
649
  def public_keyring_file
475
650
  File.join(options[:homedir], 'pubring.gpg')
476
651
  end
477
652
 
653
+ ##
654
+ # @return [String]
478
655
  def secret_keyring_file
479
656
  File.join(options[:homedir], 'secring.gpg')
480
657
  end
481
658
 
659
+ ##
660
+ # @return [String]
482
661
  def trustdb_file
483
662
  File.join(options[:homedir], 'trustdb.gpg')
484
663
  end
485
664
 
665
+ ##
666
+ # @param [Packet] packet
667
+ # @param [Symbol, #to_sym] type
668
+ # @return [void]
486
669
  def print_key_listing(packet, type)
487
670
  puts unless (is_sub_key = [:sub, :ssb].include?(type))
488
671
  puts "#{type} #{format_keyspec(packet)} #{Time.at(packet.timestamp).strftime('%Y-%m-%d')}"
@@ -491,14 +674,24 @@ module OpenPGP module Client
491
674
  end
492
675
  end
493
676
 
677
+ ##
678
+ # @param [Packet, #to_s] packet
679
+ # @return [void]
494
680
  def print_uid_listing(packet)
495
681
  puts "uid" + (' ' * 18) + packet.to_s
496
682
  end
497
683
 
684
+ ##
685
+ # @param [Packet] key
686
+ # @return [String]
498
687
  def format_keyspec(key)
499
688
  "____?/#{key.key_id}" # TODO
500
689
  end
501
690
 
691
+ ##
692
+ # @param [String] input
693
+ # @param [Integer] column
694
+ # @return [String]
502
695
  def format_fingerprint(input, column = 0)
503
696
  group_size = case input.size
504
697
  when 32 then 2 # MD5
@@ -526,10 +719,15 @@ module OpenPGP module Client
526
719
  return output
527
720
  end
528
721
 
722
+ ##
723
+ # @param [String, #to_s] file
724
+ # @return [void]
529
725
  def parse_options_file(file)
530
726
  # TODO
531
727
  end
532
728
 
729
+ ##
730
+ # @return [Symbol]
533
731
  def cipher_algorithm
534
732
  unless options[:cipher_algo]
535
733
  Cipher::CAST5 # this is the default cipher
@@ -542,14 +740,20 @@ module OpenPGP module Client
542
740
  end
543
741
  end
544
742
 
743
+ ##
744
+ # @return [Symbol]
545
745
  def digest_algorithm
546
746
  options[:digest_algo]
547
747
  end
548
748
 
749
+ ##
750
+ # @return [Symbol]
549
751
  def compress_algorithm
550
752
  options[:compress_algo]
551
753
  end
552
754
 
755
+ ##
756
+ # @return [Hash]
553
757
  def cipher_algorithms
554
758
  {
555
759
  :"3DES" => Cipher::TripleDES,
@@ -562,10 +766,14 @@ module OpenPGP module Client
562
766
  }
563
767
  end
564
768
 
769
+ ##
770
+ # @return [Array]
565
771
  def digest_algorithms
566
772
  [:MD5, :SHA1, :RIPEMD160, :SHA256, :SHA384, :SHA512]
567
773
  end
568
774
 
775
+ ##
776
+ # @return [Hash]
569
777
  def compress_algorithms
570
778
  {
571
779
  :none => nil,
@@ -575,9 +783,11 @@ module OpenPGP module Client
575
783
  }
576
784
  end
577
785
 
786
+ ##
787
+ # @param [String, #to_s] usage
788
+ # @return [void]
578
789
  def wrong_args(usage)
579
790
  abort "usage: gpg.rb [options] #{usage}"
580
791
  end
581
792
  end
582
-
583
793
  end end