ruby-gpgme 1.0.2 → 1.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.
- data/gpgme_n.c +54 -15
- data/lib/gpgme.rb +25 -6
- metadata +3 -3
data/gpgme_n.c
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/* gpgme_n.c -- low level interface to GPGME
|
2
|
-
Copyright (C) 2003,2006,2007 Daiki Ueno
|
2
|
+
Copyright (C) 2003,2006,2007,2008,2009 Daiki Ueno
|
3
3
|
|
4
4
|
This file is a part of Ruby-GPGME.
|
5
5
|
|
@@ -18,19 +18,23 @@ along with GNU Emacs; see the file COPYING. If not, write to the
|
|
18
18
|
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
19
19
|
Boston, MA 02110-1301, USA. */
|
20
20
|
|
21
|
-
/*
|
22
|
-
|
21
|
+
/* While this file was written by hand, it is (semi) automatically
|
22
|
+
generated. High-level functions are written in Ruby instead of C
|
23
|
+
(See "lib/gpgme.rb"). If you are about to edit this file, you may
|
24
|
+
want to check out the translation rules:
|
23
25
|
|
24
|
-
1. Each symbol
|
25
|
-
function, or a constant.
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
constants.
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
26
|
+
1. Each symbol defined in this file is either a class, a module
|
27
|
+
function, or a constant. _No instance methods are defined here_.
|
28
|
+
|
29
|
+
2. Each symbol defined in this file follows the same naming convention
|
30
|
+
as the GPGME API. That is, symbol names are followed by `gpgme_'
|
31
|
+
for functions, and `GPGME_' or `GPG_' for constants.
|
32
|
+
|
33
|
+
3. Output arguments are wrapped in arrays. For example, the first
|
34
|
+
argument of `gpgme_data_new' has the type `gpgme_data_t *', and to
|
35
|
+
be used to hold a newly created gpgme_data_t object. The
|
36
|
+
corresponding Ruby interface expects an array (empty for typical
|
37
|
+
cases) for that. */
|
34
38
|
|
35
39
|
#include "ruby.h"
|
36
40
|
#include "gpgme.h"
|
@@ -139,11 +143,12 @@ rb_s_gpgme_get_engine_info (VALUE dummy, VALUE rinfo)
|
|
139
143
|
{
|
140
144
|
gpgme_engine_info_t info;
|
141
145
|
gpgme_error_t err;
|
146
|
+
long idx;
|
142
147
|
|
143
148
|
err = gpgme_get_engine_info (&info);
|
144
149
|
if (gpgme_err_code(err) == GPG_ERR_NO_ERROR)
|
145
150
|
{
|
146
|
-
for (; info; info = info->next)
|
151
|
+
for (idx = 0; info; info = info->next, idx++)
|
147
152
|
{
|
148
153
|
VALUE vinfo = rb_class_new_instance (0, NULL, cEngineInfo);
|
149
154
|
rb_iv_set (vinfo, "@protocol", INT2FIX(info->protocol));
|
@@ -153,12 +158,26 @@ rb_s_gpgme_get_engine_info (VALUE dummy, VALUE rinfo)
|
|
153
158
|
rb_iv_set (vinfo, "@version", rb_str_new2 (info->version));
|
154
159
|
if (info->req_version)
|
155
160
|
rb_iv_set (vinfo, "@req_version", rb_str_new2 (info->req_version));
|
156
|
-
|
161
|
+
if (info->home_dir)
|
162
|
+
rb_iv_set (vinfo, "@home_dir", rb_str_new2 (info->home_dir));
|
163
|
+
rb_ary_store (rinfo, idx, vinfo);
|
157
164
|
}
|
158
165
|
}
|
159
166
|
return LONG2NUM(err);
|
160
167
|
}
|
161
168
|
|
169
|
+
static VALUE
|
170
|
+
rb_s_gpgme_set_engine_info (VALUE dummy, VALUE vproto, VALUE vfile_name,
|
171
|
+
VALUE vhome_dir)
|
172
|
+
{
|
173
|
+
gpgme_error_t err = gpgme_set_engine_info (NUM2INT(vproto),
|
174
|
+
NIL_P(vfile_name) ? NULL :
|
175
|
+
StringValueCStr(vfile_name),
|
176
|
+
NIL_P(vhome_dir) ? NULL :
|
177
|
+
StringValueCStr(vhome_dir));
|
178
|
+
return LONG2NUM(err);
|
179
|
+
}
|
180
|
+
|
162
181
|
static VALUE
|
163
182
|
rb_s_gpgme_pubkey_algo_name (VALUE dummy, VALUE valgo)
|
164
183
|
{
|
@@ -1183,6 +1202,12 @@ rb_s_gpgme_op_verify_result (VALUE dummy, VALUE vctx)
|
|
1183
1202
|
rb_iv_set (vsignature, "@validity", INT2FIX(signature->validity));
|
1184
1203
|
rb_iv_set (vsignature, "@validity_reason",
|
1185
1204
|
LONG2NUM(signature->validity_reason));
|
1205
|
+
/* PKA related fields were added in 1.1.1. */
|
1206
|
+
#ifdef GPGME_STATUS_PKA_TRUST_BAD
|
1207
|
+
rb_iv_set (vsignature, "@pka_trust", INT2FIX(signature->pka_trust));
|
1208
|
+
rb_iv_set (vsignature, "@pka_address",
|
1209
|
+
rb_str_new2 (signature->pka_address));
|
1210
|
+
#endif
|
1186
1211
|
rb_ary_push (vsignatures, vsignature);
|
1187
1212
|
}
|
1188
1213
|
return vverify_result;
|
@@ -1532,6 +1557,8 @@ Init_gpgme_n (void)
|
|
1532
1557
|
rb_s_gpgme_engine_check_version, 1);
|
1533
1558
|
rb_define_module_function (mGPGME, "gpgme_get_engine_info",
|
1534
1559
|
rb_s_gpgme_get_engine_info, 1);
|
1560
|
+
rb_define_module_function (mGPGME, "gpgme_set_engine_info",
|
1561
|
+
rb_s_gpgme_set_engine_info, 3);
|
1535
1562
|
|
1536
1563
|
rb_define_module_function (mGPGME, "gpgme_pubkey_algo_name",
|
1537
1564
|
rb_s_gpgme_pubkey_algo_name, 1);
|
@@ -2140,6 +2167,13 @@ Init_gpgme_n (void)
|
|
2140
2167
|
INT2FIX(GPGME_STATUS_TRUNCATED));
|
2141
2168
|
rb_define_const (mGPGME, "GPGME_STATUS_ERROR",
|
2142
2169
|
INT2FIX(GPGME_STATUS_ERROR));
|
2170
|
+
/* These status codes have been available since 1.1.1. */
|
2171
|
+
#ifdef GPGME_STATUS_PKA_TRUST_BAD
|
2172
|
+
rb_define_const (mGPGME, "GPGME_STATUS_PKA_TRUST_BAD",
|
2173
|
+
INT2FIX(GPGME_STATUS_PKA_TRUST_BAD));
|
2174
|
+
rb_define_const (mGPGME, "GPGME_STATUS_PKA_TRUST_GOOD",
|
2175
|
+
INT2FIX(GPGME_STATUS_PKA_TRUST_GOOD));
|
2176
|
+
#endif
|
2143
2177
|
|
2144
2178
|
/* The available keylist mode flags. */
|
2145
2179
|
rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_LOCAL",
|
@@ -2148,6 +2182,11 @@ Init_gpgme_n (void)
|
|
2148
2182
|
INT2FIX(GPGME_KEYLIST_MODE_EXTERN));
|
2149
2183
|
rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_SIGS",
|
2150
2184
|
INT2FIX(GPGME_KEYLIST_MODE_SIGS));
|
2185
|
+
/* This flag was added in 1.1.1. */
|
2186
|
+
#ifdef GPGME_KEYLIST_MODE_SIG_NOTATIONS
|
2187
|
+
rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_SIG_NOTATIONS",
|
2188
|
+
INT2FIX(GPGME_KEYLIST_MODE_SIG_NOTATIONS));
|
2189
|
+
#endif
|
2151
2190
|
rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_VALIDATE",
|
2152
2191
|
INT2FIX(GPGME_KEYLIST_MODE_VALIDATE));
|
2153
2192
|
|
data/lib/gpgme.rb
CHANGED
@@ -72,7 +72,7 @@ level API.
|
|
72
72
|
|
73
73
|
= License
|
74
74
|
|
75
|
-
Copyright (C) 2003,2006 Daiki Ueno
|
75
|
+
Copyright (C) 2003,2006,2007,2008,2009 Daiki Ueno
|
76
76
|
|
77
77
|
This file is a part of Ruby-GPGME.
|
78
78
|
|
@@ -715,12 +715,16 @@ module GPGME
|
|
715
715
|
alias hash_algo_name gpgme_hash_algo_name
|
716
716
|
end
|
717
717
|
|
718
|
-
|
719
|
-
|
718
|
+
# Verify that the engine implementing the protocol <i>proto</i> is
|
719
|
+
# installed in the system.
|
720
|
+
def engine_check_version(proto)
|
721
|
+
err = GPGME::gpgme_engine_check_version(proto)
|
720
722
|
exc = GPGME::error_to_exception(err)
|
721
723
|
raise exc if exc
|
722
724
|
end
|
725
|
+
module_function :engine_check_version
|
723
726
|
|
727
|
+
# Return a list of info structures of enabled engines.
|
724
728
|
def engine_info
|
725
729
|
rinfo = Array.new
|
726
730
|
GPGME::gpgme_get_engine_info(rinfo)
|
@@ -728,6 +732,19 @@ module GPGME
|
|
728
732
|
end
|
729
733
|
module_function :engine_info
|
730
734
|
|
735
|
+
# Change the default configuration of the crypto engine implementing
|
736
|
+
# protocol <i>proto</i>.
|
737
|
+
#
|
738
|
+
# <i>file_name</i> is the file name of the executable program
|
739
|
+
# implementing the protocol.
|
740
|
+
# <i>home_dir</i> is the directory name of the configuration directory.
|
741
|
+
def set_engine_info(proto, file_name, home_dir)
|
742
|
+
err = GPGME::gpgme_set_engine_info(proto, file_name, home_dir)
|
743
|
+
exc = GPGME::error_to_exception(err)
|
744
|
+
raise exc if exc
|
745
|
+
end
|
746
|
+
module_function :set_engine_info
|
747
|
+
|
731
748
|
# A class for managing data buffers.
|
732
749
|
class Data
|
733
750
|
BLOCK_SIZE = 4096
|
@@ -835,7 +852,7 @@ module GPGME
|
|
835
852
|
class EngineInfo
|
836
853
|
private_class_method :new
|
837
854
|
|
838
|
-
attr_reader :protocol, :file_name, :version, :req_version
|
855
|
+
attr_reader :protocol, :file_name, :version, :req_version, :home_dir
|
839
856
|
alias required_version req_version
|
840
857
|
end
|
841
858
|
|
@@ -958,7 +975,7 @@ keylist_mode=#{KEYLIST_MODE_NAMES[keylist_mode]}>"
|
|
958
975
|
# (0 ... $_.length).each do |i| $_[i] = ?0 end if $_
|
959
976
|
# system('stty echo')
|
960
977
|
# end
|
961
|
-
# puts
|
978
|
+
# $stderr.puts
|
962
979
|
# end
|
963
980
|
#
|
964
981
|
# ctx.set_passphrase_callback(method(:passfunc))
|
@@ -1379,7 +1396,9 @@ validity=#{VALIDITY_NAMES[validity]}, signatures=#{signatures.inspect}>"
|
|
1379
1396
|
class Signature
|
1380
1397
|
private_class_method :new
|
1381
1398
|
|
1382
|
-
attr_reader :summary, :fpr, :status, :notations
|
1399
|
+
attr_reader :summary, :fpr, :status, :notations, :wrong_key_usage
|
1400
|
+
attr_reader :validity, :validity_reason
|
1401
|
+
attr_reader :pka_trust, :pka_address
|
1383
1402
|
alias fingerprint fpr
|
1384
1403
|
|
1385
1404
|
def timestamp
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-gpgme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daiki Ueno
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-01-19 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -58,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements: []
|
59
59
|
|
60
60
|
rubyforge_project: ruby-gpgme
|
61
|
-
rubygems_version: 1.
|
61
|
+
rubygems_version: 1.3.1
|
62
62
|
signing_key:
|
63
63
|
specification_version: 2
|
64
64
|
summary: Ruby binding of GPGME.
|