gpgme 2.0.9 → 2.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 951cbd78a24fe8e4fe2f8f6c1506acefdfe89983
4
- data.tar.gz: 9c42d5bdcfd002bcfe530465e5a1f9c09b7ae5a5
3
+ metadata.gz: 4ce47e59e5bd44bbd0317f79a67556f7abc31afd
4
+ data.tar.gz: aa43c99f2a7e2e1fa09b7a46600755ec7c7d81a3
5
5
  SHA512:
6
- metadata.gz: 9cef9e58e878228e4b41d2678f2dd9f880e67570de2b26066199bc8ba143280d329bdf3f0f1f8f48ef70914d6662f899de8be6586d5f3704b5808729f32b516f
7
- data.tar.gz: 5854d59c8edfff9c3ec68c3d39b511b415fefcd8cf325964d2c288a5781040efaaf58eecbdbda0e11fc3609fc81a6858f9c55e44863a3940e3297849523dc066
6
+ metadata.gz: 63dd5843ee14da10265d8612215efaa77ca46e27928d04cb5bdef7724f78f039ef6d1ffe27c175669f12860fca5c8cc486709633b26675cae2f78070bd0b94d4
7
+ data.tar.gz: a4a7395de03e7fdf35d27b3957945970de8f2449fcd9146391fc177456ad6fbc1296cbfbb52851024f5791e48668491e3634482a08cdd41704b2d5ed4108eceb
data/ext/gpgme/extconf.rb CHANGED
@@ -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.19').tap do |recipe|
65
+ libgpg_error_recipe = MiniPortile.new('libgpg-error', '1.20').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 = [
@@ -96,7 +96,7 @@ EOS
96
96
  recipe.activate
97
97
  end
98
98
 
99
- gpgme_recipe = MiniPortile.new('gpgme', '1.5.5').tap do |recipe|
99
+ gpgme_recipe = MiniPortile.new('gpgme', '1.6.0').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 = [
data/ext/gpgme/gpgme_n.c CHANGED
@@ -622,6 +622,54 @@ rb_s_gpgme_get_passphrase_cb (VALUE dummy, VALUE vctx, VALUE rpassfunc,
622
622
  return Qnil;
623
623
  }
624
624
 
625
+ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010600
626
+ static gpgme_error_t
627
+ status_cb (void *hook, const char *keyword, const char *args)
628
+ {
629
+ VALUE vcb = (VALUE)hook, vstatusfunc, vhook_value;
630
+
631
+ vstatusfunc = RARRAY_PTR(vcb)[0];
632
+ vhook_value = RARRAY_PTR(vcb)[1];
633
+
634
+ rb_funcall (vstatusfunc, rb_intern ("call"), 3,
635
+ vhook_value,
636
+ keyword ? rb_str_new2 (keyword) : Qnil,
637
+ args ? rb_str_new2 (args) : Qnil);
638
+ return gpgme_err_make (GPG_ERR_SOURCE_USER_1, GPG_ERR_NO_ERROR);
639
+ }
640
+
641
+ static VALUE
642
+ rb_s_gpgme_set_status_cb (VALUE dummy, VALUE vctx, VALUE vstatusfunc,
643
+ VALUE vhook_value)
644
+ {
645
+ gpgme_ctx_t ctx;
646
+ VALUE vcb = rb_ary_new ();
647
+
648
+ rb_ary_push (vcb, vstatusfunc);
649
+ rb_ary_push (vcb, vhook_value);
650
+ /* Keep a reference to avoid GC. */
651
+ rb_iv_set (vctx, "@status_cb", vcb);
652
+
653
+ UNWRAP_GPGME_CTX(vctx, ctx);
654
+ if (!ctx)
655
+ rb_raise (rb_eArgError, "released ctx");
656
+ gpgme_set_status_cb (ctx, status_cb, (void*)vcb);
657
+ return Qnil;
658
+ }
659
+
660
+ static VALUE
661
+ rb_s_gpgme_get_status_cb (VALUE dummy, VALUE vctx, VALUE rstatusfunc,
662
+ VALUE rhook_value)
663
+ {
664
+ VALUE vcb = rb_iv_get (vctx, "@status_cb");
665
+
666
+ /* No need to call gpgme_get_status_cb. */
667
+ rb_ary_store (rstatusfunc, 0, RARRAY_PTR(vcb)[0]);
668
+ rb_ary_store (rhook_value, 0, RARRAY_PTR(vcb)[1]);
669
+ return Qnil;
670
+ }
671
+ #endif
672
+
625
673
  static void
626
674
  progress_cb (void *hook, const char *what, int type, int current, int total)
627
675
  {
@@ -709,6 +757,35 @@ rb_s_gpgme_get_pinentry_mode (VALUE dummy, VALUE vctx)
709
757
  }
710
758
  #endif
711
759
 
760
+ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010600
761
+ static VALUE
762
+ rb_s_gpgme_set_offline (VALUE dummy, VALUE vctx, VALUE vyes)
763
+ {
764
+ gpgme_ctx_t ctx;
765
+
766
+ UNWRAP_GPGME_CTX(vctx, ctx);
767
+ if (!ctx)
768
+ rb_raise (rb_eArgError, "released ctx");
769
+
770
+ gpgme_set_offline (ctx, vyes == Qtrue);
771
+ return Qnil;
772
+ }
773
+
774
+ static VALUE
775
+ rb_s_gpgme_get_offline (VALUE dummy, VALUE vctx)
776
+ {
777
+ gpgme_ctx_t ctx;
778
+ int yes;
779
+
780
+ UNWRAP_GPGME_CTX(vctx, ctx);
781
+ if (!ctx)
782
+ rb_raise (rb_eArgError, "released ctx");
783
+
784
+ yes = gpgme_get_offline (ctx);
785
+ return yes ? Qtrue : Qfalse;
786
+ }
787
+ #endif
788
+
712
789
  static VALUE
713
790
  rb_s_gpgme_op_keylist_start (VALUE dummy, VALUE vctx, VALUE vpattern,
714
791
  VALUE vsecret_only)
@@ -2246,6 +2323,16 @@ Init_gpgme_n (void)
2246
2323
  rb_s_gpgme_get_progress_cb, 3);
2247
2324
  rb_define_module_function (mGPGME, "gpgme_set_locale",
2248
2325
  rb_s_gpgme_set_locale, 3);
2326
+ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010600
2327
+ rb_define_module_function (mGPGME, "gpgme_set_offline",
2328
+ rb_s_gpgme_set_offline, 2);
2329
+ rb_define_module_function (mGPGME, "gpgme_get_offline",
2330
+ rb_s_gpgme_get_offline, 1);
2331
+ rb_define_module_function (mGPGME, "gpgme_set_status_cb",
2332
+ rb_s_gpgme_set_status_cb, 3);
2333
+ rb_define_module_function (mGPGME, "gpgme_get_status_cb",
2334
+ rb_s_gpgme_get_status_cb, 3);
2335
+ #endif
2249
2336
 
2250
2337
  /* Key Management */
2251
2338
  rb_define_module_function (mGPGME, "gpgme_op_keylist_start",
@@ -2877,4 +2964,26 @@ Init_gpgme_n (void)
2877
2964
  rb_define_const (mGPGME, "GPGME_SPAWN_ALLOW_SET_FG",
2878
2965
  INT2FIX(GPGME_SPAWN_ALLOW_SET_FG));
2879
2966
  #endif
2967
+
2968
+ /* This flag was added in 1.2.0. */
2969
+ #ifdef GPGME_EXPORT_MODE_EXTERN
2970
+ rb_define_const (mGPGME, "GPGME_EXPORT_MODE_EXTERN",
2971
+ INT2FIX(GPGME_EXPORT_MODE_EXTERN));
2972
+ #endif
2973
+
2974
+ /* This flag was added in 1.3.0. */
2975
+ #ifdef GPGME_EXPORT_MODE_MINIMAL
2976
+ rb_define_const (mGPGME, "GPGME_EXPORT_MODE_MINIMAL",
2977
+ INT2FIX(GPGME_EXPORT_MODE_MINIMAL));
2978
+ #endif
2979
+
2980
+ /* These flags were added in 1.6.0. */
2981
+ #if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER >= 0x010600
2982
+ rb_define_const (mGPGME, "GPGME_EXPORT_MODE_SECRET",
2983
+ INT2FIX(GPGME_EXPORT_MODE_SECRET));
2984
+ rb_define_const (mGPGME, "GPGME_EXPORT_MODE_RAW",
2985
+ INT2FIX(GPGME_EXPORT_MODE_RAW));
2986
+ rb_define_const (mGPGME, "GPGME_EXPORT_MODE_PKCS12",
2987
+ INT2FIX(GPGME_EXPORT_MODE_PKCS12));
2988
+ #endif
2880
2989
  }
@@ -236,6 +236,20 @@ module GPGME
236
236
  SPAWN_ALLOW_SET_FG = GPGME_SPAWN_ALLOW_SET_FG
237
237
  end
238
238
 
239
+ if defined?(GPGME_EXPORT_MODE_EXTERN)
240
+ EXPORT_MODE_EXTERN = GPGME_EXPORT_MODE_EXTERN
241
+ end
242
+
243
+ if defined?(GPGME_EXPORT_MODE_MINIMAL)
244
+ EXPORT_MODE_MINIMAL = GPGME_EXPORT_MODE_MINIMAL
245
+ end
246
+
247
+ if defined?(GPGME_EXPORT_MODE_SECRET)
248
+ EXPORT_MODE_SECRET = GPGME_EXPORT_MODE_SECRET
249
+ EXPORT_MODE_RAW = GPGME_EXPORT_MODE_RAW
250
+ EXPORT_MODE_PKCS12 = GPGME_EXPORT_MODE_PKCS12
251
+ end
252
+
239
253
  KEYLIST_MODE_NAMES = {
240
254
  KEYLIST_MODE_LOCAL => :local,
241
255
  KEYLIST_MODE_EXTERN => :extern,
data/lib/gpgme/ctx.rb CHANGED
@@ -23,11 +23,14 @@ module GPGME
23
23
  # * +:pinentry_mode+ One of: +PINENTRY_MODE_DEFAULT+,
24
24
  # +PINENTRY_MODE_ASK+, +PINENTRY_MODE_CANCEL+,
25
25
  # +PINENTRY_MODE_ERROR+, or +PINENTRY_MODE_LOOPBACK+.
26
+ # * +:offline+ if set to true, dirmngr will not contact external services
26
27
  # * +:password+ password of the passphrased password being used.
27
28
  # * +:passphrase_callback+ A callback function. See {#set_passphrase_callback}.
28
29
  # * +:passphrase_callback_value+ An object passed to passphrase_callback.
29
30
  # * +:progress_callback+ A callback function. See {#set_progress_callback}.
30
31
  # * +:progress_callback_value+ An object passed to progress_callback.
32
+ # * +:status_callback+ A callback function. See {#set_status_callback}.
33
+ # * +:status_callback_value+ An object passed to status_callback.
31
34
  #
32
35
  # @example
33
36
  # ctx = GPGME::Ctx.new
@@ -51,6 +54,7 @@ module GPGME
51
54
  ctx.textmode = options[:textmode] if options[:textmode]
52
55
  ctx.keylist_mode = options[:keylist_mode] if options[:keylist_mode]
53
56
  ctx.pinentry_mode = options[:pinentry_mode] if options[:pinentry_mode]
57
+ ctx.offline = options[:offline] if options[:offline]
54
58
 
55
59
  if options[:password]
56
60
  ctx.set_passphrase_callback GPGME::Ctx.method(:pass_function),
@@ -65,6 +69,10 @@ module GPGME
65
69
  ctx.set_progress_callback options[:progress_callback],
66
70
  options[:progress_callback_value]
67
71
  end
72
+ if options[:status_callback]
73
+ ctx.set_status_callback options[:status_callback],
74
+ options[:status_callback_value]
75
+ end
68
76
 
69
77
  if block_given?
70
78
  begin
@@ -153,6 +161,18 @@ module GPGME
153
161
  GPGME::gpgme_get_pinentry_mode(self)
154
162
  end
155
163
 
164
+ # Change the default behaviour of the dirmngr that might require
165
+ # connections to external services.
166
+ def offline=(mode)
167
+ GPGME::gpgme_set_offline(self, mode)
168
+ mode
169
+ end
170
+
171
+ # Return the current offline mode.
172
+ def offline
173
+ GPGME::gpgme_get_offline(self)
174
+ end
175
+
156
176
  ##
157
177
  # Passphrase and progress callbacks
158
178
  ##
@@ -223,6 +243,23 @@ module GPGME
223
243
  end
224
244
  alias set_progress_cb set_progress_callback
225
245
 
246
+ # Set the status callback with given hook value.
247
+ # +statusfunc+ should respond to +call+ with 3 arguments.
248
+ #
249
+ # * +obj+ the parameter +:status_callback_value+ passed when creating
250
+ # the {GPGME::Ctx} object.
251
+ # * +keyword+ the name of the status message
252
+ # * +args+ any arguments for the status message
253
+ #
254
+ # def status_function(obj, keyword, args)
255
+ # $stderr.puts("#{keyword} #{args}")
256
+ # return 0
257
+ # end
258
+ def set_status_callback(statusfunc, hook_value = nil)
259
+ GPGME::gpgme_set_status_cb(self, statusfunc, hook_value)
260
+ end
261
+ alias set_status_cb set_status_callback
262
+
226
263
  ##
227
264
  # Searching and iterating through keys. Used by {GPGME::Key.find}
228
265
  ##
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.9"
3
+ VERSION = "2.0.10"
4
4
  end
Binary file
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.9
4
+ version: 2.0.10
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: 2015-07-24 00:00:00.000000000 Z
12
+ date: 2015-08-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mini_portile
@@ -131,9 +131,12 @@ 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.5.5.tar.bz2
134
+ - ports/archives/gpgme-1.6.0.tar.bz2
135
+ - ports/archives/gpgme-1.6.0.tar.bz2.sig
136
+ - ports/archives/libassuan-2.1.2.tar.bz2
135
137
  - ports/archives/libassuan-2.2.1.tar.bz2
136
- - ports/archives/libgpg-error-1.19.tar.bz2
138
+ - ports/archives/libgpg-error-1.20.tar.bz2
139
+ - ports/archives/libgpg-error-1.20.tar.bz2.sig
137
140
  - test/crypto_test.rb
138
141
  - test/ctx_test.rb
139
142
  - test/data_test.rb
@@ -166,8 +169,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
169
  version: '0'
167
170
  requirements: []
168
171
  rubyforge_project: ruby-gpgme
169
- rubygems_version: 2.2.2
172
+ rubygems_version: 2.4.8
170
173
  signing_key:
171
174
  specification_version: 4
172
175
  summary: Ruby binding of GPGME.
173
176
  test_files: []
177
+ has_rdoc: true
Binary file