gpgme 2.0.12 → 2.0.13

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d24d559bd1f5f4944e6a57b3ef114d45369a087b
4
- data.tar.gz: d5e2c6420f7ad647c35793452cdb04821c7c2960
3
+ metadata.gz: d1404d6456af3680a442805ede037a138b5d7ed9
4
+ data.tar.gz: 5a6fc1cadbfaab728a4abed17824736b31bbdf8c
5
5
  SHA512:
6
- metadata.gz: a810f53185fa5b76531868fa34ac6269dd7aa137a24341225e3c35b51e6b1e689ee7e129416cb4ca04a6f8e4cdc18bbed079077cd7bded49afcca058c5ab3903
7
- data.tar.gz: 89af31db1dc5b7c30e4c0e0fadcf112fc4e946a5f667114d4c7511d31faa5632449f75b1a56a8072325098c5793625df1a5874740f0ff1087692f6c4442e9e6b
6
+ metadata.gz: c58514fedfc607814b68d6b714018ffcd07ae8e189ff5aed7d8a7bd890bfde10f19c8683774b8d2bfe8bc55a7a087a51f58d8dadd304e6a1eac9848406ade80e
7
+ data.tar.gz: c28c1583beab052240c4fe115a1650343d39ada4511eedce726e9e61c57588a6bd2c7a86d6c930fe594226c0390e78b8b73a921bf29f1cd1f16a36ba72d91627
data/ext/gpgme/extconf.rb CHANGED
@@ -62,9 +62,12 @@ EOS
62
62
  require 'rubygems'
63
63
  require 'mini_portile2'
64
64
 
65
- libgpg_error_recipe = MiniPortile.new('libgpg-error', '1.21').tap do |recipe|
65
+ libgpg_error_recipe = MiniPortile.new('libgpg-error', '1.27').tap do |recipe|
66
66
  recipe.target = File.join(ROOT, "ports")
67
- recipe.files = ["ftp://ftp.gnupg.org/gcrypt/#{recipe.name}/#{recipe.name}-#{recipe.version}.tar.bz2"]
67
+ recipe.files = [{
68
+ :url => "https://www.gnupg.org/ftp/gcrypt/#{recipe.name}/#{recipe.name}-#{recipe.version}.tar.bz2",
69
+ :sha256 => '4f93aac6fecb7da2b92871bb9ee33032be6a87b174f54abf8ddf0911a22d29d2'
70
+ }]
68
71
  recipe.configure_options = [
69
72
  '--disable-shared',
70
73
  '--enable-static',
@@ -79,9 +82,12 @@ EOS
79
82
  recipe.activate
80
83
  end
81
84
 
82
- libassuan_recipe = MiniPortile.new('libassuan', '2.4.2').tap do |recipe|
85
+ libassuan_recipe = MiniPortile.new('libassuan', '2.4.3').tap do |recipe|
83
86
  recipe.target = File.join(ROOT, "ports")
84
- recipe.files = ["ftp://ftp.gnupg.org/gcrypt/#{recipe.name}/#{recipe.name}-#{recipe.version}.tar.bz2"]
87
+ recipe.files = [{
88
+ :url => "https://www.gnupg.org/ftp/gcrypt/#{recipe.name}/#{recipe.name}-#{recipe.version}.tar.bz2",
89
+ :sha256 => '22843a3bdb256f59be49842abf24da76700354293a066d82ade8134bb5aa2b71'
90
+ }]
85
91
  recipe.configure_options = [
86
92
  '--disable-shared',
87
93
  '--enable-static',
@@ -96,9 +102,12 @@ EOS
96
102
  recipe.activate
97
103
  end
98
104
 
99
- gpgme_recipe = MiniPortile.new('gpgme', '1.6.0').tap do |recipe|
105
+ gpgme_recipe = MiniPortile.new('gpgme', '1.9.0').tap do |recipe|
100
106
  recipe.target = File.join(ROOT, "ports")
101
- recipe.files = ["ftp://ftp.gnupg.org/gcrypt/#{recipe.name}/#{recipe.name}-#{recipe.version}.tar.bz2"]
107
+ recipe.files = [{
108
+ :url => "https://www.gnupg.org/ftp/gcrypt/#{recipe.name}/#{recipe.name}-#{recipe.version}.tar.bz2",
109
+ :sha256 => '1b29fedb8bfad775e70eafac5b0590621683b2d9869db994568e6401f4034ceb'
110
+ }]
102
111
  recipe.configure_options = [
103
112
  '--disable-shared',
104
113
  '--enable-static',
data/ext/gpgme/gpgme_n.c CHANGED
@@ -196,6 +196,53 @@ rb_s_gpgme_set_engine_info (VALUE dummy, VALUE vproto, VALUE vfile_name,
196
196
  return LONG2NUM(err);
197
197
  }
198
198
 
199
+ static VALUE
200
+ rb_s_gpgme_ctx_get_engine_info (VALUE dummy, VALUE vctx, VALUE rinfo)
201
+ {
202
+ long idx;
203
+
204
+ gpgme_ctx_t ctx;
205
+
206
+ UNWRAP_GPGME_CTX(vctx, ctx);
207
+ if (!ctx)
208
+ rb_raise (rb_eArgError, "released ctx");
209
+
210
+ gpgme_engine_info_t info = gpgme_ctx_get_engine_info (ctx);
211
+ for (idx = 0; info; info = info->next, idx++)
212
+ {
213
+ VALUE vinfo = rb_class_new_instance (0, NULL, cEngineInfo);
214
+ rb_iv_set (vinfo, "@protocol", INT2FIX(info->protocol));
215
+ if (info->file_name)
216
+ rb_iv_set (vinfo, "@file_name", rb_str_new2 (info->file_name));
217
+ if (info->version)
218
+ rb_iv_set (vinfo, "@version", rb_str_new2 (info->version));
219
+ if (info->req_version)
220
+ rb_iv_set (vinfo, "@req_version", rb_str_new2 (info->req_version));
221
+ if (info->home_dir)
222
+ rb_iv_set (vinfo, "@home_dir", rb_str_new2 (info->home_dir));
223
+ rb_ary_store (rinfo, idx, vinfo);
224
+ }
225
+ return Qnil;
226
+ }
227
+
228
+ static VALUE
229
+ rb_s_gpgme_ctx_set_engine_info (VALUE dummy, VALUE vctx, VALUE vproto, VALUE vfile_name,
230
+ VALUE vhome_dir)
231
+ {
232
+ gpgme_ctx_t ctx;
233
+
234
+ UNWRAP_GPGME_CTX(vctx, ctx);
235
+ if (!ctx)
236
+ rb_raise (rb_eArgError, "released ctx");
237
+ gpgme_error_t err = gpgme_ctx_set_engine_info (ctx,
238
+ NUM2INT(vproto),
239
+ NIL_P(vfile_name) ? NULL :
240
+ StringValueCStr(vfile_name),
241
+ NIL_P(vhome_dir) ? NULL :
242
+ StringValueCStr(vhome_dir));
243
+ return LONG2NUM(err);
244
+ }
245
+
199
246
  static VALUE
200
247
  rb_s_gpgme_pubkey_algo_name (VALUE dummy, VALUE valgo)
201
248
  {
@@ -843,7 +890,13 @@ utf8_str_new (const char *data)
843
890
  {
844
891
  VALUE string = rb_str_new2 (data);
845
892
  #ifdef HAVE_RUBY_ENCODING_H
893
+ /* We assume all the C strings from GPGME are in UTF-8 encoding.
894
+ If there is any string which cannot be represented in UTF-8,
895
+ set the string's encoding to ASCII-8BIT and leave the caller to
896
+ detect the encoding. */
846
897
  rb_enc_associate_index (string, rb_enc_find_index ("UTF-8"));
898
+ if (rb_enc_str_coderange (string) == ENC_CODERANGE_BROKEN)
899
+ rb_enc_associate_index (string, rb_enc_find_index ("ASCII-8BIT"));
847
900
  #endif
848
901
  return string;
849
902
  }
@@ -2203,7 +2256,10 @@ Init_gpgme_n (void)
2203
2256
  rb_s_gpgme_get_engine_info, 1);
2204
2257
  rb_define_module_function (mGPGME, "gpgme_set_engine_info",
2205
2258
  rb_s_gpgme_set_engine_info, 3);
2206
-
2259
+ rb_define_module_function (mGPGME, "gpgme_ctx_get_engine_info",
2260
+ rb_s_gpgme_ctx_get_engine_info, 2);
2261
+ rb_define_module_function (mGPGME, "gpgme_ctx_set_engine_info",
2262
+ rb_s_gpgme_ctx_set_engine_info, 4);
2207
2263
  rb_define_module_function (mGPGME, "gpgme_pubkey_algo_name",
2208
2264
  rb_s_gpgme_pubkey_algo_name, 1);
2209
2265
  rb_define_module_function (mGPGME, "gpgme_hash_algo_name",
@@ -16,10 +16,10 @@ module GPGME
16
16
  # +:encrypt+, +:sign+, +:certify+ or +:authenticate+
17
17
  def capability
18
18
  caps = []
19
- caps << :encrypt if @can_encrypt
20
- caps << :sign if @can_sign
21
- caps << :certify if @can_certify
22
- caps << :authenticate if @can_authenticate
19
+ caps << :encrypt if @can_encrypt == 1
20
+ caps << :sign if @can_sign == 1
21
+ caps << :certify if @can_certify == 1
22
+ caps << :authenticate if @can_authenticate == 1
23
23
  caps
24
24
  end
25
25
 
data/lib/gpgme/sub_key.rb CHANGED
@@ -30,7 +30,7 @@ module GPGME
30
30
  end
31
31
 
32
32
  def sha
33
- (@fingerprint || @keyid)[-8 .. -1]
33
+ (@fpr || @keyid)[-8 .. -1]
34
34
  end
35
35
 
36
36
  PUBKEY_ALGO_LETTERS = {
@@ -49,7 +49,7 @@ module GPGME
49
49
  secret? ? 'ssc' : 'sub',
50
50
  length,
51
51
  pubkey_algo_letter,
52
- (@fingerprint || @keyid)[-8 .. -1],
52
+ (@fpr || @keyid)[-8 .. -1],
53
53
  timestamp.strftime('%Y-%m-%d'),
54
54
  trust.inspect,
55
55
  capability.inspect)
@@ -60,7 +60,7 @@ module GPGME
60
60
  secret? ? 'ssc' : 'sub',
61
61
  length,
62
62
  pubkey_algo_letter,
63
- (@fingerprint || @keyid)[-8 .. -1],
63
+ (@fpr || @keyid)[-8 .. -1],
64
64
  timestamp.strftime('%Y-%m-%d'))
65
65
  end
66
66
  end
data/lib/gpgme/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module GPGME
2
2
  # The version of GPGME ruby binding you are using
3
- VERSION = "2.0.12"
3
+ VERSION = "2.0.13"
4
4
  end
Binary file
data/test/crypto_test.rb CHANGED
@@ -4,7 +4,7 @@ require 'tempfile'
4
4
 
5
5
  describe GPGME::Crypto do
6
6
  before do
7
- skip unless GPGME::Engine.check_version GPGME::PROTOCOL_OpenPGP
7
+ skip unless ensure_keys GPGME::PROTOCOL_OpenPGP
8
8
  end
9
9
 
10
10
  describe "default options functionality" do
@@ -43,7 +43,7 @@ describe GPGME::Crypto do
43
43
 
44
44
  describe :encrypt do
45
45
  it "should raise an error if the recipients aren't trusted" do
46
- assert_raises GPGME::Error::General do
46
+ assert_raises GPGME::Error::UnusablePublicKey do
47
47
  GPGME::Crypto.new.encrypt TEXT[:plain]
48
48
  end
49
49
  end
data/test/ctx_test.rb CHANGED
@@ -3,7 +3,7 @@ require 'test_helper'
3
3
 
4
4
  describe GPGME::Ctx do
5
5
  before do
6
- skip unless GPGME::Engine.check_version GPGME::PROTOCOL_OpenPGP
6
+ skip unless ensure_keys GPGME::PROTOCOL_OpenPGP
7
7
  end
8
8
 
9
9
  it "can instantiate" do
data/test/key_test.rb CHANGED
@@ -3,7 +3,7 @@ require 'test_helper'
3
3
 
4
4
  describe GPGME::Key do
5
5
  before do
6
- skip unless GPGME::Engine.check_version GPGME::PROTOCOL_OpenPGP
6
+ skip unless ensure_keys GPGME::PROTOCOL_OpenPGP
7
7
  end
8
8
 
9
9
  it "has certain attributes" do
@@ -3,7 +3,7 @@ require 'test_helper'
3
3
 
4
4
  describe GPGME::Signature do
5
5
  before do
6
- skip unless GPGME::Engine.check_version GPGME::PROTOCOL_OpenPGP
6
+ skip unless ensure_keys GPGME::PROTOCOL_OpenPGP
7
7
  end
8
8
 
9
9
  it "#valid? is true when the signature is valid" do
data/test/sub_key_test.rb CHANGED
@@ -3,7 +3,7 @@ require 'test_helper'
3
3
 
4
4
  describe GPGME::SubKey do
5
5
  before do
6
- skip unless GPGME::Engine.check_version GPGME::PROTOCOL_OpenPGP
6
+ skip unless ensure_keys GPGME::PROTOCOL_OpenPGP
7
7
  end
8
8
 
9
9
  # We trust Key for common methods that come from KeyCommon
data/test/test_helper.rb CHANGED
@@ -82,12 +82,33 @@ def without_key(key, &block)
82
82
  end
83
83
  end
84
84
 
85
- if GPGME::Engine.check_version GPGME::PROTOCOL_OpenPGP
86
- # We use a different home directory for the keys to not disturb current
87
- # installation
88
-
89
- require 'tmpdir'
90
- GPGME::Engine.home_dir = Dir.tmpdir
91
- remove_all_keys
92
- import_keys
85
+ DIRS = []
86
+
87
+ at_exit do
88
+ DIRS.each do |dir|
89
+ FileUtils.remove_entry dir
90
+ end
91
+ DIRS.clear
92
+ end
93
+
94
+ def ensure_keys(proto)
95
+ return false unless GPGME::Engine.check_version proto
96
+
97
+ case proto
98
+ when GPGME::PROTOCOL_OpenPGP
99
+ # We use a different home directory for the keys to not disturb current
100
+ # installation
101
+ require 'tmpdir'
102
+
103
+ if DIRS.empty?
104
+ dir = Dir.mktmpdir
105
+ GPGME::Engine.home_dir = dir
106
+ DIRS.push(dir)
107
+ remove_all_keys
108
+ import_keys
109
+ end
110
+ true
111
+ else
112
+ return false
113
+ end
93
114
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gpgme
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.12
4
+ version: 2.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daiki Ueno
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-01-19 00:00:00.000000000 Z
12
+ date: 2017-07-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mini_portile2
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 2.1.0
20
+ version: '2.1'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 2.1.0
27
+ version: '2.1'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: mocha
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -131,9 +131,9 @@ files:
131
131
  - lib/gpgme/sub_key.rb
132
132
  - lib/gpgme/user_id.rb
133
133
  - lib/gpgme/version.rb
134
- - ports/archives/gpgme-1.6.0.tar.bz2
135
- - ports/archives/libassuan-2.4.2.tar.bz2
136
- - ports/archives/libgpg-error-1.21.tar.bz2
134
+ - ports/archives/gpgme-1.9.0.tar.bz2
135
+ - ports/archives/libassuan-2.4.3.tar.bz2
136
+ - ports/archives/libgpg-error-1.27.tar.bz2
137
137
  - test/crypto_test.rb
138
138
  - test/ctx_test.rb
139
139
  - test/data_test.rb
@@ -166,9 +166,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
166
  version: '0'
167
167
  requirements: []
168
168
  rubyforge_project: ruby-gpgme
169
- rubygems_version: 2.4.8
169
+ rubygems_version: 2.5.2
170
170
  signing_key:
171
171
  specification_version: 4
172
172
  summary: Ruby binding of GPGME.
173
173
  test_files: []
174
- has_rdoc: true
Binary file
Binary file