ruby-gpgme 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|