gpgme 2.0.7 → 2.0.8

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.
@@ -62,7 +62,7 @@ EOS
62
62
  require 'rubygems'
63
63
  require 'mini_portile'
64
64
 
65
- libgpg_error_recipe = MiniPortile.new('libgpg-error', '1.13').tap do |recipe|
65
+ libgpg_error_recipe = MiniPortile.new('libgpg-error', '1.17').tap do |recipe|
66
66
  recipe.target = File.join(ROOT, "ports")
67
67
  recipe.files = ["ftp://ftp.gnupg.org/gcrypt/#{recipe.name}/#{recipe.name}-#{recipe.version}.tar.bz2"]
68
68
  recipe.configure_options = [
@@ -79,7 +79,7 @@ EOS
79
79
  recipe.activate
80
80
  end
81
81
 
82
- libassuan_recipe = MiniPortile.new('libassuan', '2.1.2').tap do |recipe|
82
+ libassuan_recipe = MiniPortile.new('libassuan', '2.2.0').tap do |recipe|
83
83
  recipe.target = File.join(ROOT, "ports")
84
84
  recipe.files = ["ftp://ftp.gnupg.org/gcrypt/#{recipe.name}/#{recipe.name}-#{recipe.version}.tar.bz2"]
85
85
  recipe.configure_options = [
@@ -96,7 +96,7 @@ EOS
96
96
  recipe.activate
97
97
  end
98
98
 
99
- gpgme_recipe = MiniPortile.new('gpgme', '1.5.1').tap do |recipe|
99
+ gpgme_recipe = MiniPortile.new('gpgme', '1.5.3').tap do |recipe|
100
100
  recipe.target = File.join(ROOT, "ports")
101
101
  recipe.files = ["ftp://ftp.gnupg.org/gcrypt/#{recipe.name}/#{recipe.name}-#{recipe.version}.tar.bz2"]
102
102
  recipe.configure_options = [
@@ -1205,6 +1205,9 @@ rb_s_gpgme_op_import_result (VALUE dummy, VALUE vctx)
1205
1205
  rb_raise (rb_eArgError, "released ctx");
1206
1206
 
1207
1207
  result = gpgme_op_import_result (ctx);
1208
+ if (!result)
1209
+ rb_raise (rb_eArgError, "no result");
1210
+
1208
1211
  vresult = rb_class_new_instance (0, NULL, cImportResult);
1209
1212
  rb_iv_set (vresult, "@considered", INT2NUM(result->considered));
1210
1213
  rb_iv_set (vresult, "@no_user_id", INT2NUM(result->no_user_id));
@@ -1517,6 +1520,9 @@ rb_s_gpgme_op_decrypt_result (VALUE dummy, VALUE vctx)
1517
1520
  rb_raise (rb_eArgError, "released ctx");
1518
1521
 
1519
1522
  result = gpgme_op_decrypt_result (ctx);
1523
+ if (!result)
1524
+ rb_raise (rb_eArgError, "no result");
1525
+
1520
1526
  vresult = rb_class_new_instance (0, NULL, cDecryptResult);
1521
1527
  if (result->unsupported_algorithm)
1522
1528
  rb_iv_set (vresult, "@unsupported_algorithm",
@@ -1532,7 +1538,8 @@ rb_s_gpgme_op_decrypt_result (VALUE dummy, VALUE vctx)
1532
1538
  rb_iv_set (vrecipient, "@status", UINT2NUM(recipient->status));
1533
1539
  rb_ary_push (vrecipients, vrecipient);
1534
1540
  }
1535
- rb_iv_set (vresult, "@file_name", rb_str_new2 (result->file_name));
1541
+ if (result->file_name)
1542
+ rb_iv_set (vresult, "@file_name", rb_str_new2 (result->file_name));
1536
1543
  return vresult;
1537
1544
  }
1538
1545
 
@@ -1595,6 +1602,9 @@ rb_s_gpgme_op_verify_result (VALUE dummy, VALUE vctx)
1595
1602
  rb_raise (rb_eArgError, "released ctx");
1596
1603
 
1597
1604
  verify_result = gpgme_op_verify_result (ctx);
1605
+ if (!verify_result)
1606
+ rb_raise (rb_eArgError, "no result");
1607
+
1598
1608
  vverify_result = rb_class_new_instance(0, NULL, cVerifyResult);
1599
1609
  rb_iv_set (vverify_result, "@signatures", vsignatures);
1600
1610
  for (signature = verify_result->signatures; signature;
@@ -1778,6 +1788,9 @@ rb_s_gpgme_op_sign_result (VALUE dummy, VALUE vctx)
1778
1788
  rb_raise (rb_eArgError, "released ctx");
1779
1789
 
1780
1790
  result = gpgme_op_sign_result (ctx);
1791
+ if (!result)
1792
+ rb_raise (rb_eArgError, "no result");
1793
+
1781
1794
  vresult = rb_class_new_instance (0, NULL, cSignResult);
1782
1795
  vinvalid_signers = rb_ary_new ();
1783
1796
  rb_iv_set (vresult, "@invalid_signers", vinvalid_signers);
@@ -1893,6 +1906,9 @@ rb_s_gpgme_op_encrypt_result (VALUE dummy, VALUE vctx)
1893
1906
  rb_raise (rb_eArgError, "released ctx");
1894
1907
 
1895
1908
  result = gpgme_op_encrypt_result (ctx);
1909
+ if (!result)
1910
+ rb_raise (rb_eArgError, "no result");
1911
+
1896
1912
  vresult = rb_class_new_instance (0, NULL, cEncryptResult);
1897
1913
  vinvalid_recipients = rb_ary_new ();
1898
1914
  rb_iv_set (vresult, "@invalid_recipients", vinvalid_recipients);
@@ -151,6 +151,12 @@ module GPGME
151
151
  end
152
152
  end
153
153
 
154
+ ##
155
+ # Returns true if the key has an expiry date else false
156
+ def expires?
157
+ primary_subkey.expires?
158
+ end
159
+
154
160
  ##
155
161
  # Returns the expiry date for this key
156
162
  def expires
@@ -8,16 +8,25 @@ module GPGME
8
8
  include KeyCommon
9
9
 
10
10
  def timestamp
11
- Time.at(@timestamp)
11
+ case @timestamp
12
+ when -1, 0
13
+ # FIXME: add a special value for invalid timestamp, or throw an error
14
+ return nil
15
+ else
16
+ return Time.at(@timestamp)
17
+ end
18
+ end
19
+
20
+ def expires?
21
+ @expires != 0
12
22
  end
13
23
 
14
24
  def expires
15
- Time.at(@expires)
25
+ expires? ? Time.at(@expires) : nil
16
26
  end
17
27
 
18
28
  def expired
19
- return false if @expires == 0
20
- @expires < Time.now.to_i
29
+ expires? && @expires < Time.now.to_i
21
30
  end
22
31
 
23
32
  def sha
@@ -127,6 +127,29 @@ describe GPGME::Ctx do
127
127
  # it ":progress_callback_value"
128
128
  end
129
129
 
130
+ describe :decrypt_result do
131
+ it "returns the list of encyption recipients" do
132
+ cipher = GPGME::Data.new(KEY_1_ENCRYPTED)
133
+ output = GPGME::Data.new
134
+
135
+ GPGME::Ctx.new do |ctx|
136
+ ctx.decrypt_verify(cipher, output)
137
+ assert_equal 1, ctx.decrypt_result.recipients.size
138
+ end
139
+ end
140
+
141
+ it "should not segfault" do
142
+ cipher = GPGME::Data.new(KEY_1_ENCRYPTED)
143
+ ouput = GPGME::Data.new
144
+
145
+ GPGME::Ctx.new do |ctx|
146
+ assert_raises ArgumentError do
147
+ ctx.decrypt_result
148
+ end
149
+ end
150
+ end
151
+ end
152
+
130
153
  describe :armor do
131
154
  it "sets false by default" do
132
155
  ctx = GPGME::Ctx.new
@@ -492,6 +492,8 @@ KEYS << { :sha => 'test2@example.com', :public => key2_public, :secret => key2_s
492
492
  KEYS << { :sha => 'test3@example.com', :public => key3_public, :secret => key3_secret}
493
493
  KEYS << { :sha => 'test4@example.com', :public => key4_public, :secret => key4_secret}
494
494
 
495
+ PLAIN_KEY = { :sha => 'test1@example.com', :public => key1_public, :secret => key1_secret }
496
+
495
497
  PASSWORD_KEY = {
496
498
  :sha => 'test_with_password@example.com',
497
499
  :public => password_key_public,
@@ -514,3 +516,17 @@ TEXT = {
514
516
  :passwored => passwored.chomp,
515
517
  :expired_key_sign => signed_with_expired_key_text.chomp
516
518
  }
519
+
520
+ KEY_1_ENCRYPTED = <<-RUBY
521
+ -----BEGIN PGP MESSAGE-----
522
+ Version: GnuPG v1
523
+
524
+ hIwDbJ4P+uQnvtQBBACOzUqiKHRS8cEDPpQl1dQznpxcWW3Md8X3eFRx3+qD0X7+
525
+ aEadz/cUXf7nO9KimeO7qhqNBJoPQEzZTqirebLgq2pq+Rtp2zGCvU1hUnAmVm27
526
+ CZE/quNaBV33V0haddWm4Y8AD7e7T2a2LBDrMNGsD9eKjREJ+g/Pmm5WLRDx69JP
527
+ AaXe0Msjfyapj07hCPZptE8iP2/tCSvRDmiSgidPAZM4NnL2ANwfT6kslVha0mos
528
+ MH+qcPlxAMrMnjuWs+wFiVnWLEYfIqNzH7Z2irC2NA==
529
+ =O59i
530
+ -----END PGP MESSAGE-----
531
+ RUBY
532
+
@@ -16,9 +16,14 @@ require 'minitest/autorun'
16
16
  require 'minitest/spec'
17
17
  require 'minitest/pride'
18
18
  require 'mocha'
19
- require 'ruby-debug'
20
19
  require 'gpgme'
21
20
 
21
+ if RUBY_VERSION.split('.').first.to_i > 1
22
+ require 'byebug'
23
+ else
24
+ require 'ruby-debug'
25
+ end
26
+
22
27
  require File.dirname(__FILE__) + "/support/resources"
23
28
 
24
29
 
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gpgme
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.7
4
+ version: 2.0.8
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Daiki Ueno
@@ -9,31 +10,28 @@ authors:
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2014-09-09 00:00:00.000000000 Z
13
+ date: 2014-12-31 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: mini_portile
16
17
  requirement: !ruby/object:Gem::Requirement
18
+ none: false
17
19
  requirements:
18
- - - '>='
20
+ - - ! '>='
19
21
  - !ruby/object:Gem::Version
20
22
  version: 0.5.0
21
- - - <=
22
- - !ruby/object:Gem::Version
23
- version: 0.6.0
24
23
  type: :runtime
25
24
  prerelease: false
26
25
  version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
27
  requirements:
28
- - - '>='
28
+ - - ! '>='
29
29
  - !ruby/object:Gem::Version
30
30
  version: 0.5.0
31
- - - <=
32
- - !ruby/object:Gem::Version
33
- version: 0.6.0
34
31
  - !ruby/object:Gem::Dependency
35
32
  name: mocha
36
33
  requirement: !ruby/object:Gem::Requirement
34
+ none: false
37
35
  requirements:
38
36
  - - ~>
39
37
  - !ruby/object:Gem::Version
@@ -41,6 +39,7 @@ dependencies:
41
39
  type: :development
42
40
  prerelease: false
43
41
  version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
44
43
  requirements:
45
44
  - - ~>
46
45
  - !ruby/object:Gem::Version
@@ -48,6 +47,7 @@ dependencies:
48
47
  - !ruby/object:Gem::Dependency
49
48
  name: minitest
50
49
  requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
@@ -55,6 +55,7 @@ dependencies:
55
55
  type: :development
56
56
  prerelease: false
57
57
  version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
58
59
  requirements:
59
60
  - - ~>
60
61
  - !ruby/object:Gem::Version
@@ -62,6 +63,7 @@ dependencies:
62
63
  - !ruby/object:Gem::Dependency
63
64
  name: yard
64
65
  requirement: !ruby/object:Gem::Requirement
66
+ none: false
65
67
  requirements:
66
68
  - - ~>
67
69
  - !ruby/object:Gem::Version
@@ -69,6 +71,7 @@ dependencies:
69
71
  type: :development
70
72
  prerelease: false
71
73
  version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
72
75
  requirements:
73
76
  - - ~>
74
77
  - !ruby/object:Gem::Version
@@ -76,20 +79,23 @@ dependencies:
76
79
  - !ruby/object:Gem::Dependency
77
80
  name: coveralls
78
81
  requirement: !ruby/object:Gem::Requirement
82
+ none: false
79
83
  requirements:
80
- - - '>='
84
+ - - ! '>='
81
85
  - !ruby/object:Gem::Version
82
86
  version: '0'
83
87
  type: :development
84
88
  prerelease: false
85
89
  version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
86
91
  requirements:
87
- - - '>='
92
+ - - ! '>='
88
93
  - !ruby/object:Gem::Version
89
94
  version: '0'
90
95
  - !ruby/object:Gem::Dependency
91
96
  name: debugger
92
97
  requirement: !ruby/object:Gem::Requirement
98
+ none: false
93
99
  requirements:
94
100
  - - ~>
95
101
  - !ruby/object:Gem::Version
@@ -97,86 +103,87 @@ dependencies:
97
103
  type: :development
98
104
  prerelease: false
99
105
  version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
100
107
  requirements:
101
108
  - - ~>
102
109
  - !ruby/object:Gem::Version
103
110
  version: 1.6.6
104
- description: |-
105
- Ruby-GPGME is a Ruby language binding of GPGME (GnuPG
111
+ description: ! 'Ruby-GPGME is a Ruby language binding of GPGME (GnuPG
112
+
106
113
  Made Easy). GnuPG Made Easy (GPGME) is a library designed to make access to
114
+
107
115
  GnuPG easier for applications. It provides a High-Level Crypto API for
108
- encryption, decryption, signing, signature verification and key management.
116
+
117
+ encryption, decryption, signing, signature verification and key management.'
109
118
  email: ueno@gnu.org
110
119
  executables: []
111
120
  extensions:
112
121
  - ext/gpgme/extconf.rb
113
122
  extra_rdoc_files: []
114
123
  files:
115
- - lib/gpgme.rb
116
- - lib/gpgme/error.rb
124
+ - lib/gpgme/ctx.rb
125
+ - lib/gpgme/io_callbacks.rb
126
+ - lib/gpgme/crypto.rb
127
+ - lib/gpgme/user_id.rb
117
128
  - lib/gpgme/version.rb
118
- - lib/gpgme/signature.rb
119
- - lib/gpgme/engine.rb
120
- - lib/gpgme/key.rb
121
- - lib/gpgme/misc.rb
122
129
  - lib/gpgme/data.rb
123
- - lib/gpgme/io_callbacks.rb
124
- - lib/gpgme/key_sig.rb
125
- - lib/gpgme/constants.rb
130
+ - lib/gpgme/misc.rb
126
131
  - lib/gpgme/sub_key.rb
127
- - lib/gpgme/compat.rb
132
+ - lib/gpgme/error.rb
133
+ - lib/gpgme/key.rb
134
+ - lib/gpgme/constants.rb
135
+ - lib/gpgme/signature.rb
136
+ - lib/gpgme/engine.rb
128
137
  - lib/gpgme/key_common.rb
129
- - lib/gpgme/ctx.rb
130
- - lib/gpgme/crypto.rb
131
- - lib/gpgme/user_id.rb
132
- - ext/gpgme/gpgme_n.c
138
+ - lib/gpgme/compat.rb
139
+ - lib/gpgme/key_sig.rb
140
+ - lib/gpgme.rb
133
141
  - ext/gpgme/extconf.rb
134
- - test/key_test.rb
135
- - test/sub_key_test.rb
136
- - test/test_helper.rb
137
- - test/data_test.rb
138
- - test/crypto_test.rb
142
+ - ext/gpgme/gpgme_n.c
139
143
  - test/gpgme_test.rb
144
+ - test/data_test.rb
145
+ - test/files/testkey_pub.gpg
146
+ - test/files/testkey_sec.gpg
140
147
  - test/signature_test.rb
141
- - test/support/resources.rb
148
+ - test/crypto_test.rb
142
149
  - test/ctx_test.rb
143
- - test/files/testkey_sec.gpg
144
- - test/files/testkey_pub.gpg
145
- - examples/sign.rb
150
+ - test/support/resources.rb
151
+ - test/test_helper.rb
152
+ - test/sub_key_test.rb
153
+ - test/key_test.rb
154
+ - examples/keylist.rb
155
+ - examples/edit.rb
146
156
  - examples/roundtrip.rb
147
157
  - examples/verify.rb
148
158
  - examples/genkey.rb
149
- - examples/keylist.rb
150
- - examples/edit.rb
151
- - ports/archives/libassuan-2.1.2.tar.bz2.sig
152
- - ports/archives/libgpg-error-1.13.tar.bz2
153
- - ports/archives/gpgme-1.5.1.tar.bz2
154
- - ports/archives/libassuan-2.1.2.tar.bz2
155
- - ports/archives/gpgme-1.5.1.tar.bz2.sig
159
+ - examples/sign.rb
160
+ - ports/archives/libassuan-2.2.0.tar.bz2
161
+ - ports/archives/libgpg-error-1.17.tar.bz2
162
+ - ports/archives/gpgme-1.5.3.tar.bz2
156
163
  homepage: http://github.com/ueno/ruby-gpgme
157
164
  licenses:
158
165
  - LGPL-2.1+
159
- metadata: {}
160
166
  post_install_message:
161
167
  rdoc_options: []
162
168
  require_paths:
163
169
  - lib
164
170
  - ext
165
171
  required_ruby_version: !ruby/object:Gem::Requirement
172
+ none: false
166
173
  requirements:
167
- - - '>='
174
+ - - ! '>='
168
175
  - !ruby/object:Gem::Version
169
176
  version: '0'
170
177
  required_rubygems_version: !ruby/object:Gem::Requirement
178
+ none: false
171
179
  requirements:
172
- - - '>='
180
+ - - ! '>='
173
181
  - !ruby/object:Gem::Version
174
182
  version: '0'
175
183
  requirements: []
176
184
  rubyforge_project: ruby-gpgme
177
- rubygems_version: 2.1.11
185
+ rubygems_version: 1.8.23
178
186
  signing_key:
179
- specification_version: 4
187
+ specification_version: 3
180
188
  summary: Ruby binding of GPGME.
181
189
  test_files: []
182
- has_rdoc: true
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: ddad2098d7948b2270488e28182d4cb8caab2dcf
4
- data.tar.gz: f7df6a6384be5d81de6695158a5cf1b858f9402d
5
- SHA512:
6
- metadata.gz: ddc16711b30e02461dbf3d570e88aa48b97993b7741baf5354ce79a7d1f17789cd430a68d25244e3b4f212f77c2b93a204385e26957f23c9413f4b6e6aae4629
7
- data.tar.gz: 21112836148bf1a1f976c8b3890b27a38e69506e69b21dfd09b00c74bec3dae93f561c1ef4c70d71bbac381b3cd039cde9294e7ea95d40f6fb024f3b8d16f09a