gpgme 1.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.
- data.tar.gz.sig +3 -0
- data/COPYING +340 -0
- data/COPYING.LESSER +510 -0
- data/Makefile +172 -0
- data/Manifest.txt +18 -0
- data/README +86 -0
- data/Rakefile +17 -0
- data/THANKS +15 -0
- data/examples/edit.rb +77 -0
- data/examples/genkey.rb +55 -0
- data/examples/keylist.rb +6 -0
- data/examples/roundtrip.rb +39 -0
- data/examples/sign.rb +29 -0
- data/examples/verify.rb +6 -0
- data/extconf.rb +26 -0
- data/gpgme_n.c +2622 -0
- data/lib/gpgme.rb +1561 -0
- data/lib/gpgme/compat.rb +46 -0
- data/lib/gpgme/constants.rb +164 -0
- metadata +109 -0
- metadata.gz.sig +0 -0
data/examples/keylist.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'gpgme'
|
3
|
+
|
4
|
+
# If you do not have gpg-agent installed, comment out the following
|
5
|
+
# and set it as :passphrase_callback.
|
6
|
+
#
|
7
|
+
# def passfunc(hook, uid_hint, passphrase_info, prev_was_bad, fd)
|
8
|
+
# $stderr.write("Passphrase for #{uid_hint}: ")
|
9
|
+
# $stderr.flush
|
10
|
+
# begin
|
11
|
+
# system('stty -echo')
|
12
|
+
# io = IO.for_fd(fd, 'w')
|
13
|
+
# io.puts(gets)
|
14
|
+
# io.flush
|
15
|
+
# ensure
|
16
|
+
# (0 ... $_.length).each do |i| $_[i] = ?0 end if $_
|
17
|
+
# system('stty echo')
|
18
|
+
# end
|
19
|
+
# $stderr.puts
|
20
|
+
# end
|
21
|
+
|
22
|
+
unless ENV['GPG_AGENT_INFO']
|
23
|
+
$stderr.puts("gpg-agent is not running. See the comment in #{$0}.")
|
24
|
+
exit(1)
|
25
|
+
end
|
26
|
+
|
27
|
+
plain = 'test test test'
|
28
|
+
puts("Plaintext:\n#{plain}")
|
29
|
+
|
30
|
+
# Perform symmetric encryption on PLAIN.
|
31
|
+
cipher = GPGME::encrypt(nil, plain, {:armor => true,
|
32
|
+
# :passphrase_callback => method(:passfunc)
|
33
|
+
})
|
34
|
+
puts("Ciphertext:\n#{cipher}")
|
35
|
+
|
36
|
+
plain = GPGME::decrypt(cipher, {
|
37
|
+
# :passphrase_callback => method(:passfunc)
|
38
|
+
})
|
39
|
+
puts("Plaintext:\n#{plain}")
|
data/examples/sign.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'gpgme'
|
3
|
+
|
4
|
+
# If you do not have gpg-agent installed, comment out the following
|
5
|
+
# and set it as :passphrase_callback.
|
6
|
+
#
|
7
|
+
# def passfunc(hook, uid_hint, passphrase_info, prev_was_bad, fd)
|
8
|
+
# $stderr.write("Passphrase for #{uid_hint}: ")
|
9
|
+
# $stderr.flush
|
10
|
+
# begin
|
11
|
+
# system('stty -echo')
|
12
|
+
# io = IO.for_fd(fd, 'w')
|
13
|
+
# io.puts(gets)
|
14
|
+
# io.flush
|
15
|
+
# ensure
|
16
|
+
# (0 ... $_.length).each do |i| $_[i] = ?0 end if $_
|
17
|
+
# system('stty echo')
|
18
|
+
# end
|
19
|
+
# $stderr.puts
|
20
|
+
# end
|
21
|
+
|
22
|
+
unless ENV['GPG_AGENT_INFO']
|
23
|
+
$stderr.puts("gpg-agent is not running. See the comment in #{$0}.")
|
24
|
+
exit(1)
|
25
|
+
end
|
26
|
+
|
27
|
+
puts GPGME::clearsign('test test test', {
|
28
|
+
# :passphrase_callback => method(:passfunc)
|
29
|
+
})
|
data/examples/verify.rb
ADDED
data/extconf.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'mkmf'
|
2
|
+
|
3
|
+
unless find_executable('gpgme-config')
|
4
|
+
$stderr.puts("gpgme-config not found")
|
5
|
+
exit(1)
|
6
|
+
end
|
7
|
+
|
8
|
+
$CFLAGS += ' ' << `gpgme-config --cflags`.chomp
|
9
|
+
$libs += ' ' << `gpgme-config --libs`.chomp
|
10
|
+
|
11
|
+
checking_for('gpgme >= 1.1.3') do
|
12
|
+
if try_run(<<'End')
|
13
|
+
#include <gpgme.h>
|
14
|
+
#include <stdlib.h>
|
15
|
+
int main (void) {
|
16
|
+
return gpgme_check_version ("1.1.3") == NULL;
|
17
|
+
}
|
18
|
+
End
|
19
|
+
true
|
20
|
+
else
|
21
|
+
$CFLAGS += ' -DRUBY_GPGME_NEED_WORKAROUND_KEYLIST_NEXT'
|
22
|
+
false
|
23
|
+
end
|
24
|
+
end
|
25
|
+
have_func('gpgme_op_export_keys')
|
26
|
+
create_makefile ('gpgme_n')
|
data/gpgme_n.c
ADDED
@@ -0,0 +1,2622 @@
|
|
1
|
+
/* gpgme_n.c -- low level interface to GPGME
|
2
|
+
Copyright (C) 2003,2006,2007,2008,2009 Daiki Ueno
|
3
|
+
|
4
|
+
This file is a part of Ruby-GPGME.
|
5
|
+
|
6
|
+
This library is free software; you can redistribute it and/or
|
7
|
+
modify it under the terms of the GNU Lesser General Public
|
8
|
+
License as published by the Free Software Foundation; either
|
9
|
+
version 2.1 of the License, or (at your option) any later version.
|
10
|
+
|
11
|
+
This library is distributed in the hope that it will be useful,
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14
|
+
Lesser General Public License for more details.
|
15
|
+
|
16
|
+
You should have received a copy of the GNU Lesser General Public
|
17
|
+
License along with this library; if not, write to the Free Software
|
18
|
+
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
19
|
+
02110-1301 USA */
|
20
|
+
|
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:
|
25
|
+
|
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. */
|
38
|
+
|
39
|
+
#include "ruby.h"
|
40
|
+
#include "gpgme.h"
|
41
|
+
#include <errno.h>
|
42
|
+
|
43
|
+
/* Define this if you use GPGME 1.1.2 and earlier.
|
44
|
+
https://bugs.g10code.com/gnupg/issue715 */
|
45
|
+
#ifdef RUBY_GPGME_NEED_WORKAROUND_KEYLIST_NEXT
|
46
|
+
#define CHECK_KEYLIST_IN_PROGRESS(vctx) \
|
47
|
+
if (rb_iv_get (vctx, "ruby_gpgme_keylist_in_progress") != Qtrue) \
|
48
|
+
return LONG2NUM(gpgme_error (GPG_ERR_INV_STATE))
|
49
|
+
#define CHECK_KEYLIST_NOT_IN_PROGRESS(vctx) \
|
50
|
+
if (rb_iv_get (vctx, "ruby_gpgme_keylist_in_progress") == Qtrue) \
|
51
|
+
return LONG2NUM(gpgme_error (GPG_ERR_INV_STATE))
|
52
|
+
#define SET_KEYLIST_IN_PROGRESS(vctx) \
|
53
|
+
rb_iv_set (vctx, "ruby_gpgme_keylist_in_progress", Qtrue)
|
54
|
+
#define RESET_KEYLIST_IN_PROGRESS(vctx) \
|
55
|
+
rb_iv_set (vctx, "ruby_gpgme_keylist_in_progress", Qfalse)
|
56
|
+
#else
|
57
|
+
#define CHECK_KEYLIST_IN_PROGRESS(vctx)
|
58
|
+
#define CHECK_KEYLIST_NOT_IN_PROGRESS(vctx)
|
59
|
+
#define SET_KEYLIST_IN_PROGRESS(vctx)
|
60
|
+
#define RESET_KEYLIST_IN_PROGRESS(vctx)
|
61
|
+
#endif
|
62
|
+
|
63
|
+
/* StringValuePtr is not available in 1.6. */
|
64
|
+
#ifndef StringValuePtr
|
65
|
+
#define StringValuePtr(str) RSTRING(str)->ptr
|
66
|
+
#endif
|
67
|
+
|
68
|
+
/* STR2CSTR is obsoleted in 1.8. */
|
69
|
+
#ifndef StringValueCStr
|
70
|
+
#define StringValueCStr STR2CSTR
|
71
|
+
#endif
|
72
|
+
|
73
|
+
/* RARRAY_LEN is not available in 1.8. */
|
74
|
+
#ifndef RARRAY_LEN
|
75
|
+
#define RARRAY_LEN(a) RARRAY(a)->len
|
76
|
+
#endif
|
77
|
+
|
78
|
+
/* RARRAY_PTR is not available in 1.8. */
|
79
|
+
#ifndef RARRAY_PTR
|
80
|
+
#define RARRAY_PTR(a) RARRAY(a)->ptr
|
81
|
+
#endif
|
82
|
+
|
83
|
+
/* RSTRING_LEN is not available in 1.8.5. */
|
84
|
+
#ifndef RSTRING_LEN
|
85
|
+
#define RSTRING_LEN(a) RSTRING(a)->len
|
86
|
+
#endif
|
87
|
+
|
88
|
+
#define WRAP_GPGME_DATA(dh) \
|
89
|
+
Data_Wrap_Struct(cData, 0, gpgme_data_release, dh)
|
90
|
+
/* `gpgme_data_t' is typedef'ed as `struct gpgme_data *'. */
|
91
|
+
#define UNWRAP_GPGME_DATA(vdh, dh) \
|
92
|
+
Data_Get_Struct(vdh, struct gpgme_data, dh);
|
93
|
+
|
94
|
+
#define WRAP_GPGME_CTX(ctx) \
|
95
|
+
Data_Wrap_Struct(cCtx, 0, gpgme_release, ctx)
|
96
|
+
/* `gpgme_ctx_t' is typedef'ed as `struct gpgme_context *'. */
|
97
|
+
#define UNWRAP_GPGME_CTX(vctx, ctx) \
|
98
|
+
Data_Get_Struct(vctx, struct gpgme_context, ctx)
|
99
|
+
|
100
|
+
#define WRAP_GPGME_KEY(key) \
|
101
|
+
Data_Wrap_Struct(cKey, 0, gpgme_key_unref, key)
|
102
|
+
/* `gpgme_key_t' is typedef'ed as `struct _gpgme_key *'. */
|
103
|
+
#define UNWRAP_GPGME_KEY(vkey, key) \
|
104
|
+
Data_Get_Struct(vkey, struct _gpgme_key, key)
|
105
|
+
|
106
|
+
#define WRAP_GPGME_TRUST_ITEM(item) \
|
107
|
+
Data_Wrap_Struct(cTrustItem, 0, gpgme_trust_item_unref, item)
|
108
|
+
/* `gpgme_trust_item_t' is typedef'ed as `struct _gpgme_trust_item *'. */
|
109
|
+
#define UNWRAP_GPGME_TRUST_ITEM(vitem, item) \
|
110
|
+
Data_Get_Struct(vitem, struct _gpgme_trust_item, item)
|
111
|
+
|
112
|
+
static VALUE cEngineInfo,
|
113
|
+
cCtx,
|
114
|
+
cData,
|
115
|
+
cKey,
|
116
|
+
cSubKey,
|
117
|
+
cUserID,
|
118
|
+
cKeySig,
|
119
|
+
cInvalidKey,
|
120
|
+
cNewSignature,
|
121
|
+
cSignature,
|
122
|
+
cSigNotation,
|
123
|
+
cTrustItem,
|
124
|
+
cDecryptResult,
|
125
|
+
cVerifyResult,
|
126
|
+
cSignResult,
|
127
|
+
cEncryptResult,
|
128
|
+
cImportStatus,
|
129
|
+
cImportResult;
|
130
|
+
|
131
|
+
static VALUE
|
132
|
+
rb_s_gpgme_check_version (VALUE dummy, VALUE vreq)
|
133
|
+
{
|
134
|
+
const char *result = gpgme_check_version (NIL_P(vreq) ? NULL :
|
135
|
+
StringValueCStr(vreq));
|
136
|
+
return result ? rb_str_new2 (result) : Qnil;
|
137
|
+
}
|
138
|
+
|
139
|
+
static VALUE
|
140
|
+
rb_s_gpgme_engine_check_version (VALUE dummy, VALUE vproto)
|
141
|
+
{
|
142
|
+
gpgme_error_t err = gpgme_engine_check_version (NUM2INT(vproto));
|
143
|
+
return LONG2NUM(err);
|
144
|
+
}
|
145
|
+
|
146
|
+
static VALUE
|
147
|
+
rb_s_gpgme_get_engine_info (VALUE dummy, VALUE rinfo)
|
148
|
+
{
|
149
|
+
gpgme_engine_info_t info;
|
150
|
+
gpgme_error_t err;
|
151
|
+
long idx;
|
152
|
+
|
153
|
+
err = gpgme_get_engine_info (&info);
|
154
|
+
if (gpgme_err_code(err) == GPG_ERR_NO_ERROR)
|
155
|
+
{
|
156
|
+
for (idx = 0; info; info = info->next, idx++)
|
157
|
+
{
|
158
|
+
VALUE vinfo = rb_class_new_instance (0, NULL, cEngineInfo);
|
159
|
+
rb_iv_set (vinfo, "@protocol", INT2FIX(info->protocol));
|
160
|
+
if (info->file_name)
|
161
|
+
rb_iv_set (vinfo, "@file_name", rb_str_new2 (info->file_name));
|
162
|
+
if (info->version)
|
163
|
+
rb_iv_set (vinfo, "@version", rb_str_new2 (info->version));
|
164
|
+
if (info->req_version)
|
165
|
+
rb_iv_set (vinfo, "@req_version", rb_str_new2 (info->req_version));
|
166
|
+
if (info->home_dir)
|
167
|
+
rb_iv_set (vinfo, "@home_dir", rb_str_new2 (info->home_dir));
|
168
|
+
rb_ary_store (rinfo, idx, vinfo);
|
169
|
+
}
|
170
|
+
}
|
171
|
+
return LONG2NUM(err);
|
172
|
+
}
|
173
|
+
|
174
|
+
static VALUE
|
175
|
+
rb_s_gpgme_set_engine_info (VALUE dummy, VALUE vproto, VALUE vfile_name,
|
176
|
+
VALUE vhome_dir)
|
177
|
+
{
|
178
|
+
gpgme_error_t err = gpgme_set_engine_info (NUM2INT(vproto),
|
179
|
+
NIL_P(vfile_name) ? NULL :
|
180
|
+
StringValueCStr(vfile_name),
|
181
|
+
NIL_P(vhome_dir) ? NULL :
|
182
|
+
StringValueCStr(vhome_dir));
|
183
|
+
return LONG2NUM(err);
|
184
|
+
}
|
185
|
+
|
186
|
+
static VALUE
|
187
|
+
rb_s_gpgme_pubkey_algo_name (VALUE dummy, VALUE valgo)
|
188
|
+
{
|
189
|
+
const char *name = gpgme_pubkey_algo_name (NUM2INT(valgo));
|
190
|
+
if (name)
|
191
|
+
return rb_str_new2 (name);
|
192
|
+
return Qnil;
|
193
|
+
}
|
194
|
+
|
195
|
+
static VALUE
|
196
|
+
rb_s_gpgme_hash_algo_name (VALUE dummy, VALUE valgo)
|
197
|
+
{
|
198
|
+
const char *name = gpgme_hash_algo_name (NUM2INT(valgo));
|
199
|
+
if (name)
|
200
|
+
return rb_str_new2 (name);
|
201
|
+
return Qnil;
|
202
|
+
}
|
203
|
+
|
204
|
+
static VALUE
|
205
|
+
rb_s_gpgme_err_code (VALUE dummy, VALUE verr)
|
206
|
+
{
|
207
|
+
return INT2FIX(gpgme_err_code (NUM2LONG(verr)));
|
208
|
+
}
|
209
|
+
|
210
|
+
static VALUE
|
211
|
+
rb_s_gpgme_err_source (VALUE dummy, VALUE verr)
|
212
|
+
{
|
213
|
+
return INT2FIX(gpgme_err_source (NUM2LONG(verr)));
|
214
|
+
}
|
215
|
+
|
216
|
+
static VALUE
|
217
|
+
rb_s_gpgme_strerror (VALUE dummy, VALUE verr)
|
218
|
+
{
|
219
|
+
return rb_str_new2 (gpgme_strerror (NUM2LONG(verr)));
|
220
|
+
}
|
221
|
+
|
222
|
+
static VALUE
|
223
|
+
rb_s_gpgme_data_new (VALUE dummy, VALUE rdh)
|
224
|
+
{
|
225
|
+
gpgme_data_t dh;
|
226
|
+
gpgme_error_t err = gpgme_data_new (&dh);
|
227
|
+
|
228
|
+
if (gpgme_err_code(err) == GPG_ERR_NO_ERROR)
|
229
|
+
rb_ary_store (rdh, 0, WRAP_GPGME_DATA(dh));
|
230
|
+
return LONG2NUM(err);
|
231
|
+
}
|
232
|
+
|
233
|
+
static VALUE
|
234
|
+
rb_s_gpgme_data_new_from_mem (VALUE dummy, VALUE rdh, VALUE vbuffer,
|
235
|
+
VALUE vsize)
|
236
|
+
{
|
237
|
+
gpgme_data_t dh;
|
238
|
+
VALUE vdh;
|
239
|
+
size_t size = NUM2UINT(vsize);
|
240
|
+
gpgme_error_t err;
|
241
|
+
|
242
|
+
if (RSTRING_LEN(vbuffer) < size)
|
243
|
+
rb_raise (rb_eArgError, "argument out of range");
|
244
|
+
|
245
|
+
err = gpgme_data_new_from_mem (&dh, StringValuePtr(vbuffer), size, 1);
|
246
|
+
if (gpgme_err_code(err) == GPG_ERR_NO_ERROR)
|
247
|
+
{
|
248
|
+
vdh = WRAP_GPGME_DATA(dh);
|
249
|
+
rb_ary_store (rdh, 0, vdh);
|
250
|
+
}
|
251
|
+
return LONG2NUM(err);
|
252
|
+
}
|
253
|
+
|
254
|
+
static VALUE
|
255
|
+
rb_s_gpgme_data_new_from_fd (VALUE dummy, VALUE rdh, VALUE vfd)
|
256
|
+
{
|
257
|
+
gpgme_data_t dh;
|
258
|
+
gpgme_error_t err = gpgme_data_new_from_fd (&dh, NUM2INT(vfd));
|
259
|
+
if (gpgme_err_code(err) == GPG_ERR_NO_ERROR)
|
260
|
+
rb_ary_store (rdh, 0, WRAP_GPGME_DATA(dh));
|
261
|
+
return LONG2NUM(err);
|
262
|
+
}
|
263
|
+
|
264
|
+
static ssize_t
|
265
|
+
read_cb (void *handle, void *buffer, size_t size)
|
266
|
+
{
|
267
|
+
VALUE vcb = (VALUE)handle, vcbs, vhook_value, vbuffer;
|
268
|
+
|
269
|
+
vcbs = RARRAY_PTR(vcb)[0];
|
270
|
+
vhook_value = RARRAY_PTR(vcb)[1];
|
271
|
+
|
272
|
+
vbuffer = rb_funcall (vcbs, rb_intern ("read"), 2, vhook_value,
|
273
|
+
LONG2NUM(size));
|
274
|
+
if (NIL_P(vbuffer))
|
275
|
+
return 0;
|
276
|
+
memcpy (buffer, StringValuePtr(vbuffer), RSTRING_LEN(vbuffer));
|
277
|
+
return RSTRING_LEN(vbuffer);
|
278
|
+
}
|
279
|
+
|
280
|
+
static ssize_t
|
281
|
+
write_cb (void *handle, const void *buffer, size_t size)
|
282
|
+
{
|
283
|
+
VALUE vcb = (VALUE)handle, vcbs, vhook_value, vbuffer, vnwrite;
|
284
|
+
|
285
|
+
vcbs = RARRAY_PTR(vcb)[0];
|
286
|
+
vhook_value = RARRAY_PTR(vcb)[1];
|
287
|
+
vbuffer = rb_str_new (buffer, size);
|
288
|
+
|
289
|
+
vnwrite = rb_funcall (vcbs, rb_intern ("write"), 3,
|
290
|
+
vhook_value, vbuffer, LONG2NUM(size));
|
291
|
+
return NUM2LONG(vnwrite);
|
292
|
+
}
|
293
|
+
|
294
|
+
static off_t
|
295
|
+
seek_cb (void *handle, off_t offset, int whence)
|
296
|
+
{
|
297
|
+
VALUE vcb = (VALUE)handle, vcbs, vhook_value, vpos;
|
298
|
+
ID id_seek = rb_intern ("seek");
|
299
|
+
|
300
|
+
vcbs = RARRAY_PTR(vcb)[0];
|
301
|
+
vhook_value = RARRAY_PTR(vcb)[1];
|
302
|
+
|
303
|
+
if (rb_respond_to (vcbs, id_seek))
|
304
|
+
{
|
305
|
+
vpos = rb_funcall (vcbs, id_seek, 3,
|
306
|
+
vhook_value, LONG2NUM(offset), INT2FIX(whence));
|
307
|
+
return NUM2LONG(vpos);
|
308
|
+
}
|
309
|
+
errno = ENOSYS;
|
310
|
+
return -1;
|
311
|
+
}
|
312
|
+
|
313
|
+
static struct gpgme_data_cbs cbs =
|
314
|
+
{
|
315
|
+
.read = read_cb,
|
316
|
+
.write = write_cb,
|
317
|
+
.seek = seek_cb,
|
318
|
+
.release = NULL
|
319
|
+
};
|
320
|
+
|
321
|
+
static VALUE
|
322
|
+
rb_s_gpgme_data_new_from_cbs (VALUE dummy, VALUE rdh, VALUE vcbs,
|
323
|
+
VALUE vhandle)
|
324
|
+
{
|
325
|
+
gpgme_data_t dh;
|
326
|
+
gpgme_error_t err;
|
327
|
+
VALUE vcbs_handle = rb_ary_new ();
|
328
|
+
|
329
|
+
rb_ary_push (vcbs_handle, vcbs);
|
330
|
+
rb_ary_push (vcbs_handle, vhandle);
|
331
|
+
|
332
|
+
err = gpgme_data_new_from_cbs (&dh, &cbs, (void*)vcbs_handle);
|
333
|
+
if (gpgme_err_code(err) == GPG_ERR_NO_ERROR)
|
334
|
+
{
|
335
|
+
VALUE vdh = WRAP_GPGME_DATA(dh);
|
336
|
+
/* Keep a reference to avoid GC. */
|
337
|
+
rb_iv_set (vdh, "@cbs_handle", vcbs_handle);
|
338
|
+
rb_ary_store (rdh, 0, vdh);
|
339
|
+
}
|
340
|
+
return LONG2NUM(err);
|
341
|
+
}
|
342
|
+
|
343
|
+
static VALUE
|
344
|
+
rb_s_gpgme_data_read (VALUE dummy, VALUE vdh, VALUE vlength)
|
345
|
+
{
|
346
|
+
gpgme_data_t dh;
|
347
|
+
ssize_t length = NUM2LONG(vlength), nread;
|
348
|
+
void *buffer;
|
349
|
+
VALUE vbuffer = Qnil;
|
350
|
+
|
351
|
+
UNWRAP_GPGME_DATA(vdh, dh);
|
352
|
+
|
353
|
+
buffer = ALLOC_N (char, length);
|
354
|
+
nread = gpgme_data_read (dh, buffer, length);
|
355
|
+
if (nread > 0)
|
356
|
+
vbuffer = rb_str_new (buffer, nread);
|
357
|
+
xfree (buffer);
|
358
|
+
if (nread < 0)
|
359
|
+
rb_sys_fail ("rb_s_gpgme_data_read");
|
360
|
+
return vbuffer;
|
361
|
+
}
|
362
|
+
|
363
|
+
static VALUE
|
364
|
+
rb_s_gpgme_data_seek (VALUE dummy, VALUE vdh, VALUE voffset, VALUE vwhence)
|
365
|
+
{
|
366
|
+
gpgme_data_t dh;
|
367
|
+
off_t pos;
|
368
|
+
|
369
|
+
UNWRAP_GPGME_DATA(vdh, dh);
|
370
|
+
pos = gpgme_data_seek (dh, NUM2LONG(voffset), NUM2INT(vwhence));
|
371
|
+
if (pos < 0)
|
372
|
+
rb_sys_fail ("rb_s_gpgme_data_seek");
|
373
|
+
return LONG2NUM(pos);
|
374
|
+
}
|
375
|
+
|
376
|
+
static VALUE
|
377
|
+
rb_s_gpgme_data_write (VALUE dummy, VALUE vdh, VALUE vbuf, VALUE vlen)
|
378
|
+
{
|
379
|
+
gpgme_data_t dh;
|
380
|
+
ssize_t nwrite;
|
381
|
+
|
382
|
+
UNWRAP_GPGME_DATA(vdh, dh);
|
383
|
+
nwrite = gpgme_data_write (dh, StringValuePtr(vbuf), NUM2UINT(vlen));
|
384
|
+
if (nwrite < 0)
|
385
|
+
rb_sys_fail ("rb_s_gpgme_data_write");
|
386
|
+
return LONG2NUM(nwrite);
|
387
|
+
}
|
388
|
+
|
389
|
+
static VALUE
|
390
|
+
rb_s_gpgme_data_get_encoding (VALUE dummy, VALUE vdh)
|
391
|
+
{
|
392
|
+
gpgme_data_t dh;
|
393
|
+
gpgme_error_t err;
|
394
|
+
|
395
|
+
UNWRAP_GPGME_DATA(vdh, dh);
|
396
|
+
err = gpgme_data_get_encoding (dh);
|
397
|
+
return LONG2NUM(err);
|
398
|
+
}
|
399
|
+
|
400
|
+
static VALUE
|
401
|
+
rb_s_gpgme_data_set_encoding (VALUE dummy, VALUE vdh, VALUE venc)
|
402
|
+
{
|
403
|
+
gpgme_data_t dh;
|
404
|
+
gpgme_error_t err;
|
405
|
+
|
406
|
+
UNWRAP_GPGME_DATA(vdh, dh);
|
407
|
+
err = gpgme_data_set_encoding (dh, NUM2INT(venc));
|
408
|
+
return LONG2NUM(err);
|
409
|
+
}
|
410
|
+
|
411
|
+
static VALUE
|
412
|
+
rb_s_gpgme_new (VALUE dummy, VALUE rctx)
|
413
|
+
{
|
414
|
+
gpgme_ctx_t ctx;
|
415
|
+
gpgme_error_t err = gpgme_new (&ctx);
|
416
|
+
|
417
|
+
if (gpgme_err_code(err) == GPG_ERR_NO_ERROR)
|
418
|
+
rb_ary_store (rctx, 0, WRAP_GPGME_CTX(ctx));
|
419
|
+
return LONG2NUM(err);
|
420
|
+
}
|
421
|
+
|
422
|
+
static VALUE
|
423
|
+
rb_s_gpgme_release (VALUE dummy, VALUE vctx)
|
424
|
+
{
|
425
|
+
gpgme_ctx_t ctx;
|
426
|
+
|
427
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
428
|
+
if (!ctx)
|
429
|
+
rb_raise (rb_eArgError, "released ctx");
|
430
|
+
gpgme_release (ctx);
|
431
|
+
DATA_PTR(vctx) = NULL;
|
432
|
+
return Qnil;
|
433
|
+
}
|
434
|
+
|
435
|
+
static VALUE
|
436
|
+
rb_s_gpgme_set_protocol (VALUE dummy, VALUE vctx, VALUE vproto)
|
437
|
+
{
|
438
|
+
gpgme_ctx_t ctx;
|
439
|
+
gpgme_error_t err;
|
440
|
+
|
441
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
442
|
+
if (!ctx)
|
443
|
+
rb_raise (rb_eArgError, "released ctx");
|
444
|
+
err = gpgme_set_protocol (ctx, NUM2INT(vproto));
|
445
|
+
return LONG2NUM(err);
|
446
|
+
}
|
447
|
+
|
448
|
+
static VALUE
|
449
|
+
rb_s_gpgme_get_protocol (VALUE dummy, VALUE vctx)
|
450
|
+
{
|
451
|
+
gpgme_ctx_t ctx;
|
452
|
+
gpgme_protocol_t proto;
|
453
|
+
|
454
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
455
|
+
if (!ctx)
|
456
|
+
rb_raise (rb_eArgError, "released ctx");
|
457
|
+
proto = gpgme_get_protocol (ctx);
|
458
|
+
return INT2FIX(proto);
|
459
|
+
}
|
460
|
+
|
461
|
+
static VALUE
|
462
|
+
rb_s_gpgme_set_armor (VALUE dummy, VALUE vctx, VALUE vyes)
|
463
|
+
{
|
464
|
+
gpgme_ctx_t ctx;
|
465
|
+
|
466
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
467
|
+
if (!ctx)
|
468
|
+
rb_raise (rb_eArgError, "released ctx");
|
469
|
+
gpgme_set_armor (ctx, NUM2INT(vyes));
|
470
|
+
|
471
|
+
return Qnil;
|
472
|
+
}
|
473
|
+
|
474
|
+
static VALUE
|
475
|
+
rb_s_gpgme_get_armor (VALUE dummy, VALUE vctx)
|
476
|
+
{
|
477
|
+
gpgme_ctx_t ctx;
|
478
|
+
int yes;
|
479
|
+
|
480
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
481
|
+
if (!ctx)
|
482
|
+
rb_raise (rb_eArgError, "released ctx");
|
483
|
+
yes = gpgme_get_armor (ctx);
|
484
|
+
return INT2FIX(yes);
|
485
|
+
}
|
486
|
+
|
487
|
+
static VALUE
|
488
|
+
rb_s_gpgme_set_textmode (VALUE dummy, VALUE vctx, VALUE vyes)
|
489
|
+
{
|
490
|
+
gpgme_ctx_t ctx;
|
491
|
+
|
492
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
493
|
+
if (!ctx)
|
494
|
+
rb_raise (rb_eArgError, "released ctx");
|
495
|
+
gpgme_set_textmode (ctx, NUM2INT(vyes));
|
496
|
+
return Qnil;
|
497
|
+
}
|
498
|
+
|
499
|
+
static VALUE
|
500
|
+
rb_s_gpgme_get_textmode (VALUE dummy, VALUE vctx)
|
501
|
+
{
|
502
|
+
gpgme_ctx_t ctx;
|
503
|
+
int yes;
|
504
|
+
|
505
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
506
|
+
if (!ctx)
|
507
|
+
rb_raise (rb_eArgError, "released ctx");
|
508
|
+
yes = gpgme_get_textmode (ctx);
|
509
|
+
return INT2FIX(yes);
|
510
|
+
}
|
511
|
+
|
512
|
+
static VALUE
|
513
|
+
rb_s_gpgme_set_include_certs (VALUE dummy, VALUE vctx, VALUE vnr_of_certs)
|
514
|
+
{
|
515
|
+
gpgme_ctx_t ctx;
|
516
|
+
|
517
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
518
|
+
if (!ctx)
|
519
|
+
rb_raise (rb_eArgError, "released ctx");
|
520
|
+
gpgme_set_include_certs (ctx, NUM2INT(vnr_of_certs));
|
521
|
+
return Qnil;
|
522
|
+
}
|
523
|
+
|
524
|
+
static VALUE
|
525
|
+
rb_s_gpgme_get_include_certs (VALUE dummy, VALUE vctx)
|
526
|
+
{
|
527
|
+
gpgme_ctx_t ctx;
|
528
|
+
gpgme_error_t err;
|
529
|
+
|
530
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
531
|
+
if (!ctx)
|
532
|
+
rb_raise (rb_eArgError, "released ctx");
|
533
|
+
err = gpgme_get_include_certs (ctx);
|
534
|
+
return LONG2NUM(err);
|
535
|
+
}
|
536
|
+
|
537
|
+
static VALUE
|
538
|
+
rb_s_gpgme_set_keylist_mode (VALUE dummy, VALUE vctx, VALUE vmode)
|
539
|
+
{
|
540
|
+
gpgme_ctx_t ctx;
|
541
|
+
gpgme_error_t err;
|
542
|
+
|
543
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
544
|
+
if (!ctx)
|
545
|
+
rb_raise (rb_eArgError, "released ctx");
|
546
|
+
err = gpgme_set_keylist_mode (ctx, NUM2INT(vmode));
|
547
|
+
return LONG2NUM(err);
|
548
|
+
}
|
549
|
+
|
550
|
+
static VALUE
|
551
|
+
rb_s_gpgme_get_keylist_mode (VALUE dummy, VALUE vctx)
|
552
|
+
{
|
553
|
+
gpgme_ctx_t ctx;
|
554
|
+
int mode;
|
555
|
+
|
556
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
557
|
+
if (!ctx)
|
558
|
+
rb_raise (rb_eArgError, "released ctx");
|
559
|
+
mode = gpgme_get_keylist_mode (ctx);
|
560
|
+
return INT2FIX(mode);
|
561
|
+
}
|
562
|
+
|
563
|
+
static gpgme_error_t
|
564
|
+
passphrase_cb (void *hook, const char *uid_hint, const char *passphrase_info,
|
565
|
+
int prev_was_bad, int fd)
|
566
|
+
{
|
567
|
+
VALUE vcb = (VALUE)hook, vpassfunc, vhook_value;
|
568
|
+
|
569
|
+
vpassfunc = RARRAY_PTR(vcb)[0];
|
570
|
+
vhook_value = RARRAY_PTR(vcb)[1];
|
571
|
+
|
572
|
+
rb_funcall (vpassfunc, rb_intern ("call"), 5,
|
573
|
+
vhook_value,
|
574
|
+
uid_hint ? rb_str_new2 (uid_hint) : Qnil,
|
575
|
+
passphrase_info ? rb_str_new2 (passphrase_info) : Qnil,
|
576
|
+
INT2FIX(prev_was_bad),
|
577
|
+
INT2NUM(fd));
|
578
|
+
return gpgme_err_make (GPG_ERR_SOURCE_USER_1, GPG_ERR_NO_ERROR);
|
579
|
+
}
|
580
|
+
|
581
|
+
static VALUE
|
582
|
+
rb_s_gpgme_set_passphrase_cb (VALUE dummy, VALUE vctx, VALUE vpassfunc,
|
583
|
+
VALUE vhook_value)
|
584
|
+
{
|
585
|
+
gpgme_ctx_t ctx;
|
586
|
+
VALUE vcb = rb_ary_new ();
|
587
|
+
|
588
|
+
rb_ary_push (vcb, vpassfunc);
|
589
|
+
rb_ary_push (vcb, vhook_value);
|
590
|
+
/* Keep a reference to avoid GC. */
|
591
|
+
rb_iv_set (vctx, "@passphrase_cb", vcb);
|
592
|
+
|
593
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
594
|
+
if (!ctx)
|
595
|
+
rb_raise (rb_eArgError, "released ctx");
|
596
|
+
gpgme_set_passphrase_cb (ctx, passphrase_cb, (void*)vcb);
|
597
|
+
return Qnil;
|
598
|
+
}
|
599
|
+
|
600
|
+
static VALUE
|
601
|
+
rb_s_gpgme_get_passphrase_cb (VALUE dummy, VALUE vctx, VALUE rpassfunc,
|
602
|
+
VALUE rhook_value)
|
603
|
+
{
|
604
|
+
VALUE vcb = rb_iv_get (vctx, "@passphrase_cb");
|
605
|
+
|
606
|
+
/* No need to call gpgme_get_passphrase_cb. */
|
607
|
+
rb_ary_store (rpassfunc, 0, RARRAY_PTR(vcb)[0]);
|
608
|
+
rb_ary_store (rhook_value, 0, RARRAY_PTR(vcb)[1]);
|
609
|
+
return Qnil;
|
610
|
+
}
|
611
|
+
|
612
|
+
static void
|
613
|
+
progress_cb (void *hook, const char *what, int type, int current, int total)
|
614
|
+
{
|
615
|
+
VALUE vcb = (VALUE)hook, vprogfunc, vhook_value;
|
616
|
+
|
617
|
+
vprogfunc = RARRAY_PTR(vcb)[0];
|
618
|
+
vhook_value = RARRAY_PTR(vcb)[1];
|
619
|
+
|
620
|
+
rb_funcall (vprogfunc, rb_intern ("call"), 5, vhook_value,
|
621
|
+
rb_str_new2 (what), INT2NUM(type), INT2NUM(current),
|
622
|
+
INT2NUM(total));
|
623
|
+
}
|
624
|
+
|
625
|
+
static VALUE
|
626
|
+
rb_s_gpgme_set_progress_cb (VALUE dummy, VALUE vctx, VALUE vprogfunc,
|
627
|
+
VALUE vhook_value)
|
628
|
+
{
|
629
|
+
gpgme_ctx_t ctx;
|
630
|
+
VALUE vcb = rb_ary_new ();
|
631
|
+
|
632
|
+
rb_ary_push (vcb, vprogfunc);
|
633
|
+
rb_ary_push (vcb, vhook_value);
|
634
|
+
/* Keep a reference to avoid GC. */
|
635
|
+
rb_iv_set (vctx, "@progress_cb", vcb);
|
636
|
+
|
637
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
638
|
+
if (!ctx)
|
639
|
+
rb_raise (rb_eArgError, "released ctx");
|
640
|
+
gpgme_set_progress_cb (ctx, progress_cb, (void*)vcb);
|
641
|
+
|
642
|
+
return Qnil;
|
643
|
+
}
|
644
|
+
|
645
|
+
static VALUE
|
646
|
+
rb_s_gpgme_get_progress_cb (VALUE dummy, VALUE vctx, VALUE rprogfunc,
|
647
|
+
VALUE rhook_value)
|
648
|
+
{
|
649
|
+
VALUE vcb = rb_iv_get (vctx, "@progress_cb");
|
650
|
+
rb_ary_store (rprogfunc, 0, RARRAY_PTR(vcb)[0]);
|
651
|
+
rb_ary_store (rhook_value, 0, RARRAY_PTR(vcb)[1]);
|
652
|
+
return Qnil;
|
653
|
+
}
|
654
|
+
|
655
|
+
static VALUE
|
656
|
+
rb_s_gpgme_set_locale (VALUE dummy, VALUE vctx, VALUE vcategory, VALUE vvalue)
|
657
|
+
{
|
658
|
+
gpgme_ctx_t ctx;
|
659
|
+
gpgme_error_t err;
|
660
|
+
|
661
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
662
|
+
if (!ctx)
|
663
|
+
rb_raise (rb_eArgError, "released ctx");
|
664
|
+
|
665
|
+
err = gpgme_set_locale (ctx, NUM2INT(vcategory), StringValueCStr(vvalue));
|
666
|
+
return LONG2NUM(err);
|
667
|
+
}
|
668
|
+
|
669
|
+
static VALUE
|
670
|
+
rb_s_gpgme_op_keylist_start (VALUE dummy, VALUE vctx, VALUE vpattern,
|
671
|
+
VALUE vsecret_only)
|
672
|
+
{
|
673
|
+
gpgme_ctx_t ctx;
|
674
|
+
gpgme_error_t err;
|
675
|
+
|
676
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
677
|
+
|
678
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
679
|
+
if (!ctx)
|
680
|
+
rb_raise (rb_eArgError, "released ctx");
|
681
|
+
|
682
|
+
err = gpgme_op_keylist_start (ctx, NIL_P(vpattern) ? NULL :
|
683
|
+
StringValueCStr(vpattern),
|
684
|
+
NUM2INT(vsecret_only));
|
685
|
+
if (gpgme_err_code (err) == GPG_ERR_NO_ERROR)
|
686
|
+
SET_KEYLIST_IN_PROGRESS(vctx);
|
687
|
+
return LONG2NUM(err);
|
688
|
+
}
|
689
|
+
|
690
|
+
static VALUE
|
691
|
+
rb_s_gpgme_op_keylist_ext_start (VALUE dummy, VALUE vctx, VALUE vpattern,
|
692
|
+
VALUE vsecret_only)
|
693
|
+
{
|
694
|
+
gpgme_ctx_t ctx;
|
695
|
+
const char **pattern = NULL;
|
696
|
+
int i, err;
|
697
|
+
|
698
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
699
|
+
|
700
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
701
|
+
if (!ctx)
|
702
|
+
rb_raise (rb_eArgError, "released ctx");
|
703
|
+
|
704
|
+
if (!NIL_P(vpattern))
|
705
|
+
{
|
706
|
+
/* Convert RARRAY into `const char *' array. */
|
707
|
+
pattern = ALLOC_N(const char *, RARRAY_LEN(vpattern) + 1);
|
708
|
+
for (i = 0; i<RARRAY_LEN(vpattern); i++)
|
709
|
+
pattern[i] = StringValueCStr(RARRAY_PTR(vpattern)[i]);
|
710
|
+
pattern[RARRAY_LEN(vpattern)] = NULL;
|
711
|
+
}
|
712
|
+
|
713
|
+
err = gpgme_op_keylist_ext_start (ctx, pattern, NUM2INT(vsecret_only), 0);
|
714
|
+
if (gpgme_err_code (err) == GPG_ERR_NO_ERROR)
|
715
|
+
SET_KEYLIST_IN_PROGRESS(vctx);
|
716
|
+
if (pattern)
|
717
|
+
xfree (pattern);
|
718
|
+
return LONG2NUM(err);
|
719
|
+
}
|
720
|
+
|
721
|
+
static VALUE
|
722
|
+
save_gpgme_key_attrs (VALUE vkey, gpgme_key_t key)
|
723
|
+
{
|
724
|
+
VALUE vsubkeys, vuids;
|
725
|
+
gpgme_subkey_t subkey;
|
726
|
+
gpgme_user_id_t user_id;
|
727
|
+
|
728
|
+
rb_iv_set (vkey, "@keylist_mode", INT2FIX(key->keylist_mode));
|
729
|
+
rb_iv_set (vkey, "@revoked", INT2FIX(key->revoked));
|
730
|
+
rb_iv_set (vkey, "@expired", INT2FIX(key->expired));
|
731
|
+
rb_iv_set (vkey, "@disabled", INT2FIX(key->disabled));
|
732
|
+
rb_iv_set (vkey, "@invalid", INT2FIX(key->invalid));
|
733
|
+
rb_iv_set (vkey, "@can_encrypt", INT2FIX(key->can_encrypt));
|
734
|
+
rb_iv_set (vkey, "@can_sign", INT2FIX(key->can_sign));
|
735
|
+
rb_iv_set (vkey, "@can_certify", INT2FIX(key->can_certify));
|
736
|
+
rb_iv_set (vkey, "@can_authenticate", INT2FIX(key->can_authenticate));
|
737
|
+
rb_iv_set (vkey, "@secret", INT2FIX(key->secret));
|
738
|
+
rb_iv_set (vkey, "@protocol", INT2FIX(key->protocol));
|
739
|
+
if (key->issuer_serial)
|
740
|
+
rb_iv_set (vkey, "@issuer_serial", rb_str_new2 (key->issuer_serial));
|
741
|
+
if (key->issuer_name)
|
742
|
+
rb_iv_set (vkey, "@issuer_name", rb_str_new2 (key->issuer_name));
|
743
|
+
if (key->chain_id)
|
744
|
+
rb_iv_set (vkey, "@chain_id", rb_str_new2 (key->chain_id));
|
745
|
+
rb_iv_set (vkey, "@owner_trust", INT2FIX(key->owner_trust));
|
746
|
+
vsubkeys = rb_ary_new ();
|
747
|
+
rb_iv_set (vkey, "@subkeys", vsubkeys);
|
748
|
+
for (subkey = key->subkeys; subkey; subkey = subkey->next)
|
749
|
+
{
|
750
|
+
VALUE vsubkey = rb_class_new_instance(0, NULL, cSubKey);
|
751
|
+
rb_iv_set (vsubkey, "@revoked", INT2FIX(subkey->revoked));
|
752
|
+
rb_iv_set (vsubkey, "@expired", INT2FIX(subkey->expired));
|
753
|
+
rb_iv_set (vsubkey, "@disabled", INT2FIX(subkey->disabled));
|
754
|
+
rb_iv_set (vsubkey, "@invalid", INT2FIX(subkey->invalid));
|
755
|
+
rb_iv_set (vsubkey, "@can_encrypt", INT2FIX(subkey->can_encrypt));
|
756
|
+
rb_iv_set (vsubkey, "@can_sign", INT2FIX(subkey->can_sign));
|
757
|
+
rb_iv_set (vsubkey, "@can_certify", INT2FIX(subkey->can_certify));
|
758
|
+
rb_iv_set (vsubkey, "@can_authenticate",
|
759
|
+
INT2FIX(subkey->can_authenticate));
|
760
|
+
rb_iv_set (vsubkey, "@secret", INT2FIX(subkey->secret));
|
761
|
+
rb_iv_set (vsubkey, "@pubkey_algo", INT2FIX(subkey->pubkey_algo));
|
762
|
+
rb_iv_set (vsubkey, "@length", UINT2NUM(subkey->length));
|
763
|
+
rb_iv_set (vsubkey, "@keyid", rb_str_new2 (subkey->keyid));
|
764
|
+
if (subkey->fpr)
|
765
|
+
rb_iv_set (vsubkey, "@fpr", rb_str_new2 (subkey->fpr));
|
766
|
+
rb_iv_set (vsubkey, "@timestamp", LONG2NUM(subkey->timestamp));
|
767
|
+
rb_iv_set (vsubkey, "@expires", LONG2NUM(subkey->expires));
|
768
|
+
rb_ary_push (vsubkeys, vsubkey);
|
769
|
+
}
|
770
|
+
vuids = rb_ary_new ();
|
771
|
+
rb_iv_set (vkey, "@uids", vuids);
|
772
|
+
for (user_id = key->uids; user_id; user_id = user_id->next)
|
773
|
+
{
|
774
|
+
VALUE vuser_id = rb_class_new_instance(0, NULL, cUserID), vsignatures;
|
775
|
+
rb_iv_set (vuser_id, "@revoked", INT2FIX(user_id->revoked));
|
776
|
+
rb_iv_set (vuser_id, "@invalid", INT2FIX(user_id->invalid));
|
777
|
+
rb_iv_set (vuser_id, "@validity", INT2FIX(user_id->validity));
|
778
|
+
rb_iv_set (vuser_id, "@uid", rb_str_new2 (user_id->uid));
|
779
|
+
rb_iv_set (vuser_id, "@name", rb_str_new2 (user_id->name));
|
780
|
+
rb_iv_set (vuser_id, "@comment", rb_str_new2 (user_id->comment));
|
781
|
+
rb_iv_set (vuser_id, "@email", rb_str_new2 (user_id->email));
|
782
|
+
|
783
|
+
vsignatures = rb_ary_new ();
|
784
|
+
rb_iv_set (vuser_id, "@signatures", vsignatures);
|
785
|
+
gpgme_key_sig_t key_sig;
|
786
|
+
for (key_sig = user_id->signatures; key_sig; key_sig = key_sig->next)
|
787
|
+
{
|
788
|
+
VALUE vkey_sig = rb_class_new_instance(0, NULL, cKeySig);
|
789
|
+
rb_iv_set (vkey_sig, "@revoked", INT2FIX(key_sig->revoked));
|
790
|
+
rb_iv_set (vkey_sig, "@expired", INT2FIX(key_sig->expired));
|
791
|
+
rb_iv_set (vkey_sig, "@invalid", INT2FIX(key_sig->invalid));
|
792
|
+
rb_iv_set (vkey_sig, "@exportable", INT2FIX(key_sig->exportable));
|
793
|
+
rb_iv_set (vkey_sig, "@pubkey_algo", INT2FIX(key_sig->pubkey_algo));
|
794
|
+
rb_iv_set (vkey_sig, "@keyid", rb_str_new2 (key_sig->keyid));
|
795
|
+
rb_iv_set (vkey_sig, "@timestamp", LONG2NUM(key_sig->timestamp));
|
796
|
+
rb_iv_set (vkey_sig, "@expires", LONG2NUM(key_sig->expires));
|
797
|
+
rb_ary_push (vsignatures, vkey_sig);
|
798
|
+
}
|
799
|
+
rb_ary_push (vuids, vuser_id);
|
800
|
+
}
|
801
|
+
return vkey;
|
802
|
+
}
|
803
|
+
|
804
|
+
static VALUE
|
805
|
+
rb_s_gpgme_op_keylist_next (VALUE dummy, VALUE vctx, VALUE rkey)
|
806
|
+
{
|
807
|
+
gpgme_ctx_t ctx;
|
808
|
+
gpgme_key_t key;
|
809
|
+
gpgme_error_t err;
|
810
|
+
|
811
|
+
CHECK_KEYLIST_IN_PROGRESS(vctx);
|
812
|
+
|
813
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
814
|
+
if (!ctx)
|
815
|
+
rb_raise (rb_eArgError, "released ctx");
|
816
|
+
|
817
|
+
err = gpgme_op_keylist_next (ctx, &key);
|
818
|
+
if (gpgme_err_code(err) == GPG_ERR_NO_ERROR)
|
819
|
+
{
|
820
|
+
VALUE vkey = WRAP_GPGME_KEY(key);
|
821
|
+
save_gpgme_key_attrs (vkey, key);
|
822
|
+
rb_ary_store (rkey, 0, vkey);
|
823
|
+
}
|
824
|
+
return LONG2NUM(err);
|
825
|
+
}
|
826
|
+
|
827
|
+
static VALUE
|
828
|
+
rb_s_gpgme_op_keylist_end (VALUE dummy, VALUE vctx)
|
829
|
+
{
|
830
|
+
gpgme_ctx_t ctx;
|
831
|
+
gpgme_error_t err;
|
832
|
+
|
833
|
+
CHECK_KEYLIST_IN_PROGRESS(vctx);
|
834
|
+
|
835
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
836
|
+
if (!ctx)
|
837
|
+
rb_raise (rb_eArgError, "released ctx");
|
838
|
+
|
839
|
+
err = gpgme_op_keylist_end (ctx);
|
840
|
+
RESET_KEYLIST_IN_PROGRESS(vctx);
|
841
|
+
return LONG2NUM(err);
|
842
|
+
}
|
843
|
+
|
844
|
+
static VALUE
|
845
|
+
rb_s_gpgme_get_key (VALUE dummy, VALUE vctx, VALUE vfpr, VALUE rkey,
|
846
|
+
VALUE vsecret)
|
847
|
+
{
|
848
|
+
gpgme_ctx_t ctx;
|
849
|
+
gpgme_error_t err;
|
850
|
+
gpgme_key_t key;
|
851
|
+
|
852
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
853
|
+
if (!ctx)
|
854
|
+
rb_raise (rb_eArgError, "released ctx");
|
855
|
+
err = gpgme_get_key (ctx, StringValueCStr(vfpr), &key, NUM2INT(vsecret));
|
856
|
+
|
857
|
+
if (gpgme_err_code(err) == GPG_ERR_NO_ERROR)
|
858
|
+
{
|
859
|
+
VALUE vkey = WRAP_GPGME_KEY(key);
|
860
|
+
save_gpgme_key_attrs (vkey, key);
|
861
|
+
rb_ary_store (rkey, 0, vkey);
|
862
|
+
}
|
863
|
+
return LONG2NUM(err);
|
864
|
+
}
|
865
|
+
|
866
|
+
static VALUE
|
867
|
+
rb_s_gpgme_op_genkey (VALUE dummy, VALUE vctx, VALUE vparms, VALUE vpubkey,
|
868
|
+
VALUE vseckey)
|
869
|
+
{
|
870
|
+
gpgme_ctx_t ctx;
|
871
|
+
gpgme_data_t pubkey = NULL, seckey = NULL;
|
872
|
+
gpgme_error_t err;
|
873
|
+
|
874
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
875
|
+
|
876
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
877
|
+
if (!ctx)
|
878
|
+
rb_raise (rb_eArgError, "released ctx");
|
879
|
+
if (!NIL_P(vpubkey))
|
880
|
+
UNWRAP_GPGME_DATA(vpubkey, pubkey);
|
881
|
+
if (!NIL_P(vseckey))
|
882
|
+
UNWRAP_GPGME_DATA(vseckey, seckey);
|
883
|
+
|
884
|
+
err = gpgme_op_genkey (ctx, StringValueCStr(vparms), pubkey, seckey);
|
885
|
+
return LONG2NUM(err);
|
886
|
+
}
|
887
|
+
|
888
|
+
static VALUE
|
889
|
+
rb_s_gpgme_op_genkey_start (VALUE dummy, VALUE vctx, VALUE vparms,
|
890
|
+
VALUE vpubkey, VALUE vseckey)
|
891
|
+
{
|
892
|
+
gpgme_ctx_t ctx;
|
893
|
+
gpgme_data_t pubkey = NULL, seckey = NULL;
|
894
|
+
gpgme_error_t err;
|
895
|
+
|
896
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
897
|
+
|
898
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
899
|
+
if (!ctx)
|
900
|
+
rb_raise (rb_eArgError, "released ctx");
|
901
|
+
if (!NIL_P(vpubkey))
|
902
|
+
UNWRAP_GPGME_DATA(vpubkey, pubkey);
|
903
|
+
if (!NIL_P(vseckey))
|
904
|
+
UNWRAP_GPGME_DATA(vseckey, seckey);
|
905
|
+
|
906
|
+
err = gpgme_op_genkey_start (ctx, StringValueCStr(vparms), pubkey, seckey);
|
907
|
+
return LONG2NUM(err);
|
908
|
+
}
|
909
|
+
|
910
|
+
static VALUE
|
911
|
+
rb_s_gpgme_op_export (VALUE dummy, VALUE vctx, VALUE vpattern, VALUE vmode,
|
912
|
+
VALUE vkeydata)
|
913
|
+
{
|
914
|
+
gpgme_ctx_t ctx;
|
915
|
+
gpgme_data_t keydata;
|
916
|
+
gpgme_error_t err;
|
917
|
+
|
918
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
919
|
+
|
920
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
921
|
+
if (!ctx)
|
922
|
+
rb_raise (rb_eArgError, "released ctx");
|
923
|
+
UNWRAP_GPGME_DATA(vkeydata, keydata);
|
924
|
+
|
925
|
+
err = gpgme_op_export (ctx, StringValueCStr(vpattern), NUM2UINT(vmode),
|
926
|
+
keydata);
|
927
|
+
return LONG2NUM(err);
|
928
|
+
}
|
929
|
+
|
930
|
+
static VALUE
|
931
|
+
rb_s_gpgme_op_export_start (VALUE dummy, VALUE vctx, VALUE vpattern,
|
932
|
+
VALUE vmode, VALUE vkeydata)
|
933
|
+
{
|
934
|
+
gpgme_ctx_t ctx;
|
935
|
+
gpgme_data_t keydata;
|
936
|
+
gpgme_error_t err;
|
937
|
+
|
938
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
939
|
+
|
940
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
941
|
+
if (!ctx)
|
942
|
+
rb_raise (rb_eArgError, "released ctx");
|
943
|
+
UNWRAP_GPGME_DATA(vkeydata, keydata);
|
944
|
+
|
945
|
+
err = gpgme_op_export_start (ctx, StringValueCStr(vpattern),
|
946
|
+
NUM2UINT(vmode), keydata);
|
947
|
+
return LONG2NUM(err);
|
948
|
+
}
|
949
|
+
|
950
|
+
static VALUE
|
951
|
+
rb_s_gpgme_op_export_ext (VALUE dummy, VALUE vctx, VALUE vpattern, VALUE vmode,
|
952
|
+
VALUE vkeydata)
|
953
|
+
{
|
954
|
+
gpgme_ctx_t ctx;
|
955
|
+
gpgme_data_t keydata;
|
956
|
+
gpgme_error_t err;
|
957
|
+
const char **pattern;
|
958
|
+
int i;
|
959
|
+
|
960
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
961
|
+
|
962
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
963
|
+
if (!ctx)
|
964
|
+
rb_raise (rb_eArgError, "released ctx");
|
965
|
+
pattern = ALLOC_N(const char *, RARRAY_LEN(vpattern));
|
966
|
+
for (i = 0; i < RARRAY_LEN(vpattern); i++)
|
967
|
+
pattern[i] = StringValueCStr(RARRAY_PTR(vpattern)[i]);
|
968
|
+
UNWRAP_GPGME_DATA(vkeydata, keydata);
|
969
|
+
|
970
|
+
err = gpgme_op_export_ext (ctx, pattern, NUM2UINT(vmode), keydata);
|
971
|
+
return LONG2NUM(err);
|
972
|
+
}
|
973
|
+
|
974
|
+
static VALUE
|
975
|
+
rb_s_gpgme_op_export_ext_start (VALUE dummy, VALUE vctx, VALUE vpattern,
|
976
|
+
VALUE vmode, VALUE vkeydata)
|
977
|
+
{
|
978
|
+
gpgme_ctx_t ctx;
|
979
|
+
gpgme_data_t keydata;
|
980
|
+
gpgme_error_t err;
|
981
|
+
const char **pattern;
|
982
|
+
int i;
|
983
|
+
|
984
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
985
|
+
|
986
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
987
|
+
if (!ctx)
|
988
|
+
rb_raise (rb_eArgError, "released ctx");
|
989
|
+
pattern = ALLOC_N(const char *, RARRAY_LEN(vpattern));
|
990
|
+
for (i = 0; i < RARRAY_LEN(vpattern); i++)
|
991
|
+
pattern[i] = StringValueCStr(RARRAY_PTR(vpattern)[i]);
|
992
|
+
UNWRAP_GPGME_DATA(vkeydata, keydata);
|
993
|
+
|
994
|
+
err = gpgme_op_export_ext_start (ctx, pattern, NUM2UINT(vmode), keydata);
|
995
|
+
return LONG2NUM(err);
|
996
|
+
}
|
997
|
+
|
998
|
+
#ifdef HAVE_GPGME_OP_EXPORT_KEYS
|
999
|
+
static VALUE
|
1000
|
+
rb_s_gpgme_op_export_keys (VALUE dummy, VALUE vctx, VALUE vkeys,
|
1001
|
+
VALUE vmode, VALUE vkeydata)
|
1002
|
+
{
|
1003
|
+
gpgme_ctx_t ctx;
|
1004
|
+
gpgme_key_t *keys;
|
1005
|
+
gpgme_data_t keydata;
|
1006
|
+
gpgme_error_t err;
|
1007
|
+
int i;
|
1008
|
+
|
1009
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1010
|
+
|
1011
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1012
|
+
if (!ctx)
|
1013
|
+
rb_raise (rb_eArgError, "released ctx");
|
1014
|
+
|
1015
|
+
keys = ALLOC_N(gpgme_key_t, RARRAY_LEN(vkeys) + 1);
|
1016
|
+
for (i = 0; i < RARRAY_LEN(vkeys); i++)
|
1017
|
+
UNWRAP_GPGME_KEY(RARRAY_PTR(vkeys)[i], keys[i]);
|
1018
|
+
|
1019
|
+
UNWRAP_GPGME_DATA(vkeydata, keydata);
|
1020
|
+
|
1021
|
+
err = gpgme_op_export_keys (ctx, keys, NUM2UINT(vmode), keydata);
|
1022
|
+
return LONG2NUM(err);
|
1023
|
+
}
|
1024
|
+
|
1025
|
+
static VALUE
|
1026
|
+
rb_s_gpgme_op_export_keys_start (VALUE dummy, VALUE vctx, VALUE vkeys,
|
1027
|
+
VALUE vmode, VALUE vkeydata)
|
1028
|
+
{
|
1029
|
+
gpgme_ctx_t ctx;
|
1030
|
+
gpgme_key_t *keys;
|
1031
|
+
gpgme_data_t keydata;
|
1032
|
+
gpgme_error_t err;
|
1033
|
+
int i;
|
1034
|
+
|
1035
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1036
|
+
|
1037
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1038
|
+
if (!ctx)
|
1039
|
+
rb_raise (rb_eArgError, "released ctx");
|
1040
|
+
|
1041
|
+
keys = ALLOC_N(gpgme_key_t, RARRAY_LEN(vkeys) + 1);
|
1042
|
+
for (i = 0; i < RARRAY_LEN(vkeys); i++)
|
1043
|
+
UNWRAP_GPGME_KEY(RARRAY_PTR(vkeys)[i], keys[i]);
|
1044
|
+
|
1045
|
+
UNWRAP_GPGME_DATA(vkeydata, keydata);
|
1046
|
+
|
1047
|
+
err = gpgme_op_export_keys_start (ctx, keys, NUM2UINT(vmode), keydata);
|
1048
|
+
return LONG2NUM(err);
|
1049
|
+
}
|
1050
|
+
#endif /*HAVE_GPGME_OP_EXPORT_KEYS*/
|
1051
|
+
|
1052
|
+
static VALUE
|
1053
|
+
rb_s_gpgme_op_import (VALUE dummy, VALUE vctx, VALUE vkeydata)
|
1054
|
+
{
|
1055
|
+
gpgme_ctx_t ctx;
|
1056
|
+
gpgme_data_t keydata;
|
1057
|
+
gpgme_error_t err;
|
1058
|
+
|
1059
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1060
|
+
|
1061
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1062
|
+
if (!ctx)
|
1063
|
+
rb_raise (rb_eArgError, "released ctx");
|
1064
|
+
UNWRAP_GPGME_DATA(vkeydata, keydata);
|
1065
|
+
|
1066
|
+
err = gpgme_op_import (ctx, keydata);
|
1067
|
+
return LONG2NUM(err);
|
1068
|
+
}
|
1069
|
+
|
1070
|
+
static VALUE
|
1071
|
+
rb_s_gpgme_op_import_start (VALUE dummy, VALUE vctx, VALUE vkeydata)
|
1072
|
+
{
|
1073
|
+
gpgme_ctx_t ctx;
|
1074
|
+
gpgme_data_t keydata;
|
1075
|
+
gpgme_error_t err;
|
1076
|
+
|
1077
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1078
|
+
|
1079
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1080
|
+
if (!ctx)
|
1081
|
+
rb_raise (rb_eArgError, "released ctx");
|
1082
|
+
UNWRAP_GPGME_DATA(vkeydata, keydata);
|
1083
|
+
|
1084
|
+
err = gpgme_op_import_start (ctx, keydata);
|
1085
|
+
return LONG2NUM(err);
|
1086
|
+
}
|
1087
|
+
|
1088
|
+
#ifdef HAVE_GPGME_OP_EXPORT_KEYS
|
1089
|
+
static VALUE
|
1090
|
+
rb_s_gpgme_op_import_keys (VALUE dummy, VALUE vctx, VALUE vkeys)
|
1091
|
+
{
|
1092
|
+
gpgme_ctx_t ctx;
|
1093
|
+
gpgme_key_t *keys;
|
1094
|
+
gpgme_error_t err;
|
1095
|
+
int i;
|
1096
|
+
|
1097
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1098
|
+
|
1099
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1100
|
+
if (!ctx)
|
1101
|
+
rb_raise (rb_eArgError, "released ctx");
|
1102
|
+
|
1103
|
+
keys = ALLOC_N(gpgme_key_t, RARRAY_LEN(vkeys) + 1);
|
1104
|
+
for (i = 0; i < RARRAY_LEN(vkeys); i++)
|
1105
|
+
UNWRAP_GPGME_KEY(RARRAY_PTR(vkeys)[i], keys[i]);
|
1106
|
+
keys[i] = NULL;
|
1107
|
+
|
1108
|
+
err = gpgme_op_import_keys (ctx, keys);
|
1109
|
+
return LONG2NUM(err);
|
1110
|
+
}
|
1111
|
+
|
1112
|
+
static VALUE
|
1113
|
+
rb_s_gpgme_op_import_keys_start (VALUE dummy, VALUE vctx, VALUE vkeys)
|
1114
|
+
{
|
1115
|
+
gpgme_ctx_t ctx;
|
1116
|
+
gpgme_key_t *keys;
|
1117
|
+
gpgme_error_t err;
|
1118
|
+
int i;
|
1119
|
+
|
1120
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1121
|
+
|
1122
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1123
|
+
if (!ctx)
|
1124
|
+
rb_raise (rb_eArgError, "released ctx");
|
1125
|
+
|
1126
|
+
keys = ALLOC_N(gpgme_key_t, RARRAY_LEN(vkeys) + 1);
|
1127
|
+
for (i = 0; i < RARRAY_LEN(vkeys); i++)
|
1128
|
+
UNWRAP_GPGME_KEY(RARRAY_PTR(vkeys)[i], keys[i]);
|
1129
|
+
keys[i] = NULL;
|
1130
|
+
|
1131
|
+
err = gpgme_op_import_keys_start (ctx, keys);
|
1132
|
+
return LONG2NUM(err);
|
1133
|
+
}
|
1134
|
+
#endif /*HAVE_GPGME_OP_EXPORT_KEYS*/
|
1135
|
+
|
1136
|
+
static VALUE
|
1137
|
+
rb_s_gpgme_op_import_result (VALUE dummy, VALUE vctx)
|
1138
|
+
{
|
1139
|
+
gpgme_ctx_t ctx;
|
1140
|
+
gpgme_import_result_t result;
|
1141
|
+
gpgme_import_status_t status;
|
1142
|
+
VALUE vresult, vimports;
|
1143
|
+
|
1144
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1145
|
+
if (!ctx)
|
1146
|
+
rb_raise (rb_eArgError, "released ctx");
|
1147
|
+
|
1148
|
+
result = gpgme_op_import_result (ctx);
|
1149
|
+
vresult = rb_class_new_instance (0, NULL, cImportResult);
|
1150
|
+
rb_iv_set (vresult, "@considered", INT2NUM(result->considered));
|
1151
|
+
rb_iv_set (vresult, "@no_user_id", INT2NUM(result->no_user_id));
|
1152
|
+
rb_iv_set (vresult, "@imported", INT2NUM(result->imported));
|
1153
|
+
rb_iv_set (vresult, "@imported_rsa", INT2NUM(result->imported_rsa));
|
1154
|
+
rb_iv_set (vresult, "@unchanged", INT2NUM(result->unchanged));
|
1155
|
+
rb_iv_set (vresult, "@new_user_ids", INT2NUM(result->new_user_ids));
|
1156
|
+
rb_iv_set (vresult, "@new_sub_keys", INT2NUM(result->new_sub_keys));
|
1157
|
+
rb_iv_set (vresult, "@new_signatures", INT2NUM(result->new_signatures));
|
1158
|
+
rb_iv_set (vresult, "@new_revocations", INT2NUM(result->new_revocations));
|
1159
|
+
rb_iv_set (vresult, "@secret_read", INT2NUM(result->secret_read));
|
1160
|
+
rb_iv_set (vresult, "@secret_imported", INT2NUM(result->secret_imported));
|
1161
|
+
rb_iv_set (vresult, "@secret_unchanged", INT2NUM(result->secret_unchanged));
|
1162
|
+
rb_iv_set (vresult, "@not_imported", INT2NUM(result->not_imported));
|
1163
|
+
vimports = rb_ary_new ();
|
1164
|
+
rb_iv_set (vresult, "@imports", vimports);
|
1165
|
+
for (status = result->imports; status;
|
1166
|
+
status = status->next)
|
1167
|
+
{
|
1168
|
+
VALUE vstatus =
|
1169
|
+
rb_class_new_instance (0, NULL, cImportStatus);
|
1170
|
+
rb_iv_set (vstatus, "@fpr", rb_str_new2 (status->fpr));
|
1171
|
+
rb_iv_set (vstatus, "@result", LONG2NUM(status->result));
|
1172
|
+
rb_iv_set (vstatus, "@status", UINT2NUM(status->status));
|
1173
|
+
rb_ary_push (vimports, vstatus);
|
1174
|
+
}
|
1175
|
+
return vresult;
|
1176
|
+
}
|
1177
|
+
|
1178
|
+
static VALUE
|
1179
|
+
rb_s_gpgme_op_delete (VALUE dummy, VALUE vctx, VALUE vkey, VALUE vallow_secret)
|
1180
|
+
{
|
1181
|
+
gpgme_ctx_t ctx;
|
1182
|
+
gpgme_key_t key;
|
1183
|
+
gpgme_error_t err;
|
1184
|
+
|
1185
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1186
|
+
|
1187
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1188
|
+
if (!ctx)
|
1189
|
+
rb_raise (rb_eArgError, "released ctx");
|
1190
|
+
UNWRAP_GPGME_KEY(vkey, key);
|
1191
|
+
|
1192
|
+
err = gpgme_op_delete (ctx, key, NUM2INT(vallow_secret));
|
1193
|
+
return LONG2NUM(err);
|
1194
|
+
}
|
1195
|
+
|
1196
|
+
static VALUE
|
1197
|
+
rb_s_gpgme_op_delete_start (VALUE dummy, VALUE vctx, VALUE vkey,
|
1198
|
+
VALUE vallow_secret)
|
1199
|
+
{
|
1200
|
+
gpgme_ctx_t ctx;
|
1201
|
+
gpgme_key_t key;
|
1202
|
+
gpgme_error_t err;
|
1203
|
+
|
1204
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1205
|
+
|
1206
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1207
|
+
if (!ctx)
|
1208
|
+
rb_raise (rb_eArgError, "released ctx");
|
1209
|
+
UNWRAP_GPGME_KEY(vkey, key);
|
1210
|
+
|
1211
|
+
err = gpgme_op_delete_start (ctx, key, NUM2INT(vallow_secret));
|
1212
|
+
return LONG2NUM(err);
|
1213
|
+
}
|
1214
|
+
|
1215
|
+
static gpgme_error_t
|
1216
|
+
edit_cb (void *hook, gpgme_status_code_t status, const char *args, int fd)
|
1217
|
+
{
|
1218
|
+
VALUE vcb = (VALUE)hook, veditfunc, vhook_value;
|
1219
|
+
|
1220
|
+
|
1221
|
+
veditfunc = RARRAY_PTR(vcb)[0];
|
1222
|
+
vhook_value = RARRAY_PTR(vcb)[1];
|
1223
|
+
|
1224
|
+
rb_funcall (veditfunc, rb_intern ("call"), 4, vhook_value, INT2FIX(status),
|
1225
|
+
rb_str_new2 (args), INT2NUM(fd));
|
1226
|
+
return gpgme_err_make (GPG_ERR_SOURCE_USER_1, GPG_ERR_NO_ERROR);
|
1227
|
+
}
|
1228
|
+
|
1229
|
+
static VALUE
|
1230
|
+
rb_s_gpgme_op_edit (VALUE dummy, VALUE vctx, VALUE vkey,
|
1231
|
+
VALUE veditfunc, VALUE vhook_value, VALUE vout)
|
1232
|
+
{
|
1233
|
+
gpgme_ctx_t ctx;
|
1234
|
+
gpgme_key_t key;
|
1235
|
+
gpgme_data_t out = NULL;
|
1236
|
+
VALUE vcb;
|
1237
|
+
gpgme_error_t err;
|
1238
|
+
|
1239
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1240
|
+
|
1241
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1242
|
+
if (!ctx)
|
1243
|
+
rb_raise (rb_eArgError, "released ctx");
|
1244
|
+
UNWRAP_GPGME_KEY(vkey, key);
|
1245
|
+
if (!NIL_P(vout))
|
1246
|
+
UNWRAP_GPGME_DATA(vout, out);
|
1247
|
+
|
1248
|
+
vcb = rb_ary_new ();
|
1249
|
+
rb_ary_push (vcb, veditfunc);
|
1250
|
+
rb_ary_push (vcb, vhook_value);
|
1251
|
+
/* Keep a reference to avoid GC. */
|
1252
|
+
rb_iv_set (vctx, "@edit_cb", vcb);
|
1253
|
+
|
1254
|
+
err = gpgme_op_edit (ctx, key, edit_cb, (void *)vcb, out);
|
1255
|
+
return LONG2NUM(err);
|
1256
|
+
}
|
1257
|
+
|
1258
|
+
static VALUE
|
1259
|
+
rb_s_gpgme_op_edit_start (VALUE dummy, VALUE vctx, VALUE vkey,
|
1260
|
+
VALUE veditfunc, VALUE vhook_value, VALUE vout)
|
1261
|
+
{
|
1262
|
+
gpgme_ctx_t ctx;
|
1263
|
+
gpgme_key_t key;
|
1264
|
+
gpgme_data_t out = NULL;
|
1265
|
+
VALUE vcb;
|
1266
|
+
gpgme_error_t err;
|
1267
|
+
|
1268
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1269
|
+
|
1270
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1271
|
+
if (!ctx)
|
1272
|
+
rb_raise (rb_eArgError, "released ctx");
|
1273
|
+
UNWRAP_GPGME_KEY(vkey, key);
|
1274
|
+
if (!NIL_P(vout))
|
1275
|
+
UNWRAP_GPGME_DATA(vout, out);
|
1276
|
+
|
1277
|
+
vcb = rb_ary_new ();
|
1278
|
+
rb_ary_push (vcb, veditfunc);
|
1279
|
+
rb_ary_push (vcb, vhook_value);
|
1280
|
+
/* Keep a reference to avoid GC. */
|
1281
|
+
rb_iv_set (vctx, "@edit_cb", vcb);
|
1282
|
+
|
1283
|
+
err = gpgme_op_edit_start (ctx, key, edit_cb, (void *)vcb, out);
|
1284
|
+
return LONG2NUM(err);
|
1285
|
+
}
|
1286
|
+
|
1287
|
+
static VALUE
|
1288
|
+
rb_s_gpgme_op_card_edit (VALUE dummy, VALUE vctx, VALUE vkey,
|
1289
|
+
VALUE veditfunc, VALUE vhook_value, VALUE vout)
|
1290
|
+
{
|
1291
|
+
gpgme_ctx_t ctx;
|
1292
|
+
gpgme_key_t key;
|
1293
|
+
gpgme_data_t out = NULL;
|
1294
|
+
VALUE vcb;
|
1295
|
+
gpgme_error_t err;
|
1296
|
+
|
1297
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1298
|
+
|
1299
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1300
|
+
if (!ctx)
|
1301
|
+
rb_raise (rb_eArgError, "released ctx");
|
1302
|
+
UNWRAP_GPGME_KEY(vkey, key);
|
1303
|
+
if (!NIL_P(vout))
|
1304
|
+
UNWRAP_GPGME_DATA(vout, out);
|
1305
|
+
|
1306
|
+
vcb = rb_ary_new ();
|
1307
|
+
rb_ary_push (vcb, veditfunc);
|
1308
|
+
rb_ary_push (vcb, vhook_value);
|
1309
|
+
/* Keep a reference to avoid GC. */
|
1310
|
+
rb_iv_set (vctx, "@card_edit_cb", vcb);
|
1311
|
+
|
1312
|
+
err = gpgme_op_card_edit (ctx, key, edit_cb, (void *)vcb, out);
|
1313
|
+
return LONG2NUM(err);
|
1314
|
+
}
|
1315
|
+
|
1316
|
+
static VALUE
|
1317
|
+
rb_s_gpgme_op_card_edit_start (VALUE dummy, VALUE vctx, VALUE vkey,
|
1318
|
+
VALUE veditfunc, VALUE vhook_value, VALUE vout)
|
1319
|
+
{
|
1320
|
+
gpgme_ctx_t ctx;
|
1321
|
+
gpgme_key_t key;
|
1322
|
+
gpgme_data_t out = NULL;
|
1323
|
+
VALUE vcb;
|
1324
|
+
gpgme_error_t err;
|
1325
|
+
|
1326
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1327
|
+
|
1328
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1329
|
+
if (!ctx)
|
1330
|
+
rb_raise (rb_eArgError, "released ctx");
|
1331
|
+
UNWRAP_GPGME_KEY(vkey, key);
|
1332
|
+
if (!NIL_P(vout))
|
1333
|
+
UNWRAP_GPGME_DATA(vout, out);
|
1334
|
+
|
1335
|
+
vcb = rb_ary_new ();
|
1336
|
+
rb_ary_push (vcb, veditfunc);
|
1337
|
+
rb_ary_push (vcb, vhook_value);
|
1338
|
+
/* Keep a reference to avoid GC. */
|
1339
|
+
rb_iv_set (vctx, "@card_edit_cb", vcb);
|
1340
|
+
|
1341
|
+
err = gpgme_op_card_edit_start (ctx, key, edit_cb, (void *)vcb, out);
|
1342
|
+
return LONG2NUM(err);
|
1343
|
+
}
|
1344
|
+
|
1345
|
+
static VALUE
|
1346
|
+
rb_s_gpgme_op_trustlist_start (VALUE dummy, VALUE vctx, VALUE vpattern,
|
1347
|
+
VALUE vmax_level)
|
1348
|
+
{
|
1349
|
+
gpgme_ctx_t ctx;
|
1350
|
+
gpgme_error_t err;
|
1351
|
+
|
1352
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1353
|
+
|
1354
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1355
|
+
if (!ctx)
|
1356
|
+
rb_raise (rb_eArgError, "released ctx");
|
1357
|
+
err = gpgme_op_trustlist_start (ctx, StringValueCStr(vpattern),
|
1358
|
+
NUM2INT(vmax_level));
|
1359
|
+
return LONG2NUM(err);
|
1360
|
+
}
|
1361
|
+
|
1362
|
+
static VALUE
|
1363
|
+
rb_s_gpgme_op_trustlist_next (VALUE dummy, VALUE vctx, VALUE ritem)
|
1364
|
+
{
|
1365
|
+
gpgme_ctx_t ctx;
|
1366
|
+
gpgme_trust_item_t item;
|
1367
|
+
gpgme_error_t err;
|
1368
|
+
VALUE vitem;
|
1369
|
+
|
1370
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1371
|
+
|
1372
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1373
|
+
if (!ctx)
|
1374
|
+
rb_raise (rb_eArgError, "released ctx");
|
1375
|
+
|
1376
|
+
err = gpgme_op_trustlist_next (ctx, &item);
|
1377
|
+
if (gpgme_err_code(err) == GPG_ERR_NO_ERROR)
|
1378
|
+
{
|
1379
|
+
vitem = WRAP_GPGME_TRUST_ITEM(item);
|
1380
|
+
rb_iv_set (vitem, "@keyid", rb_str_new2 (item->keyid));
|
1381
|
+
rb_iv_set (vitem, "@type", INT2FIX(item->type));
|
1382
|
+
rb_iv_set (vitem, "@level", INT2FIX(item->level));
|
1383
|
+
if (item->owner_trust)
|
1384
|
+
rb_iv_set (vitem, "@owner_trust", rb_str_new2 (item->owner_trust));
|
1385
|
+
rb_iv_set (vitem, "@validity", rb_str_new2 (item->validity));
|
1386
|
+
if (item->name)
|
1387
|
+
rb_iv_set (vitem, "@name", rb_str_new2 (item->name));
|
1388
|
+
rb_ary_store (ritem, 0, vitem);
|
1389
|
+
}
|
1390
|
+
return LONG2NUM(err);
|
1391
|
+
}
|
1392
|
+
|
1393
|
+
static VALUE
|
1394
|
+
rb_s_gpgme_op_trustlist_end (VALUE dummy, VALUE vctx)
|
1395
|
+
{
|
1396
|
+
gpgme_ctx_t ctx;
|
1397
|
+
gpgme_error_t err;
|
1398
|
+
|
1399
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1400
|
+
|
1401
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1402
|
+
if (!ctx)
|
1403
|
+
rb_raise (rb_eArgError, "released ctx");
|
1404
|
+
|
1405
|
+
err = gpgme_op_trustlist_end (ctx);
|
1406
|
+
return LONG2NUM(err);
|
1407
|
+
}
|
1408
|
+
|
1409
|
+
static VALUE
|
1410
|
+
rb_s_gpgme_op_decrypt (VALUE dummy, VALUE vctx, VALUE vcipher, VALUE vplain)
|
1411
|
+
{
|
1412
|
+
gpgme_ctx_t ctx;
|
1413
|
+
gpgme_data_t cipher, plain;
|
1414
|
+
gpgme_error_t err;
|
1415
|
+
|
1416
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1417
|
+
|
1418
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1419
|
+
if (!ctx)
|
1420
|
+
rb_raise (rb_eArgError, "released ctx");
|
1421
|
+
UNWRAP_GPGME_DATA(vcipher, cipher);
|
1422
|
+
UNWRAP_GPGME_DATA(vplain, plain);
|
1423
|
+
|
1424
|
+
err = gpgme_op_decrypt (ctx, cipher, plain);
|
1425
|
+
return LONG2NUM(err);
|
1426
|
+
}
|
1427
|
+
|
1428
|
+
static VALUE
|
1429
|
+
rb_s_gpgme_op_decrypt_start (VALUE dummy, VALUE vctx, VALUE vcipher,
|
1430
|
+
VALUE vplain)
|
1431
|
+
{
|
1432
|
+
gpgme_ctx_t ctx;
|
1433
|
+
gpgme_data_t cipher, plain;
|
1434
|
+
gpgme_error_t err;
|
1435
|
+
|
1436
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1437
|
+
|
1438
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1439
|
+
if (!ctx)
|
1440
|
+
rb_raise (rb_eArgError, "released ctx");
|
1441
|
+
UNWRAP_GPGME_DATA(vcipher, cipher);
|
1442
|
+
UNWRAP_GPGME_DATA(vplain, plain);
|
1443
|
+
|
1444
|
+
err = gpgme_op_decrypt_start (ctx, cipher, plain);
|
1445
|
+
return LONG2NUM(err);
|
1446
|
+
}
|
1447
|
+
|
1448
|
+
static VALUE
|
1449
|
+
rb_s_gpgme_op_decrypt_result (VALUE dummy, VALUE vctx)
|
1450
|
+
{
|
1451
|
+
gpgme_ctx_t ctx;
|
1452
|
+
gpgme_decrypt_result_t result;
|
1453
|
+
VALUE vresult;
|
1454
|
+
|
1455
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1456
|
+
if (!ctx)
|
1457
|
+
rb_raise (rb_eArgError, "released ctx");
|
1458
|
+
|
1459
|
+
result = gpgme_op_decrypt_result (ctx);
|
1460
|
+
vresult = rb_class_new_instance (0, NULL, cDecryptResult);
|
1461
|
+
if (result->unsupported_algorithm)
|
1462
|
+
rb_iv_set (vresult, "@unsupported_algorithm",
|
1463
|
+
rb_str_new2 (result->unsupported_algorithm));
|
1464
|
+
rb_iv_set (vresult, "@wrong_key_usage", INT2FIX(result->wrong_key_usage));
|
1465
|
+
return vresult;
|
1466
|
+
}
|
1467
|
+
|
1468
|
+
static VALUE
|
1469
|
+
rb_s_gpgme_op_verify (VALUE dummy, VALUE vctx, VALUE vsig, VALUE vsigned_text,
|
1470
|
+
VALUE vplain)
|
1471
|
+
{
|
1472
|
+
gpgme_ctx_t ctx;
|
1473
|
+
gpgme_data_t sig, signed_text = NULL, plain = NULL;
|
1474
|
+
gpgme_error_t err;
|
1475
|
+
|
1476
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1477
|
+
|
1478
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1479
|
+
if (!ctx)
|
1480
|
+
rb_raise (rb_eArgError, "released ctx");
|
1481
|
+
UNWRAP_GPGME_DATA(vsig, sig);
|
1482
|
+
if (!NIL_P(vsigned_text))
|
1483
|
+
UNWRAP_GPGME_DATA(vsigned_text, signed_text);
|
1484
|
+
if (!NIL_P(vplain))
|
1485
|
+
UNWRAP_GPGME_DATA(vplain, plain);
|
1486
|
+
|
1487
|
+
err = gpgme_op_verify (ctx, sig, signed_text, plain);
|
1488
|
+
return LONG2NUM(err);
|
1489
|
+
}
|
1490
|
+
|
1491
|
+
static VALUE
|
1492
|
+
rb_s_gpgme_op_verify_start (VALUE dummy, VALUE vctx, VALUE vsig,
|
1493
|
+
VALUE vsigned_text, VALUE vplain)
|
1494
|
+
{
|
1495
|
+
gpgme_ctx_t ctx;
|
1496
|
+
gpgme_data_t sig, signed_text = NULL, plain = NULL;
|
1497
|
+
gpgme_error_t err;
|
1498
|
+
|
1499
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1500
|
+
|
1501
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1502
|
+
if (!ctx)
|
1503
|
+
rb_raise (rb_eArgError, "released ctx");
|
1504
|
+
UNWRAP_GPGME_DATA(vsig, sig);
|
1505
|
+
if (!NIL_P(vsigned_text))
|
1506
|
+
UNWRAP_GPGME_DATA(vsigned_text, signed_text);
|
1507
|
+
if (!NIL_P(vplain))
|
1508
|
+
UNWRAP_GPGME_DATA(vplain, plain);
|
1509
|
+
|
1510
|
+
err = gpgme_op_verify_start (ctx, sig, signed_text, plain);
|
1511
|
+
return LONG2NUM(err);
|
1512
|
+
}
|
1513
|
+
|
1514
|
+
static VALUE
|
1515
|
+
rb_s_gpgme_op_verify_result (VALUE dummy, VALUE vctx)
|
1516
|
+
{
|
1517
|
+
gpgme_ctx_t ctx;
|
1518
|
+
gpgme_verify_result_t verify_result;
|
1519
|
+
gpgme_signature_t signature;
|
1520
|
+
VALUE vverify_result, vsignatures = rb_ary_new ();
|
1521
|
+
|
1522
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1523
|
+
if (!ctx)
|
1524
|
+
rb_raise (rb_eArgError, "released ctx");
|
1525
|
+
|
1526
|
+
verify_result = gpgme_op_verify_result (ctx);
|
1527
|
+
vverify_result = rb_class_new_instance(0, NULL, cVerifyResult);
|
1528
|
+
rb_iv_set (vverify_result, "@signatures", vsignatures);
|
1529
|
+
for (signature = verify_result->signatures; signature;
|
1530
|
+
signature = signature->next)
|
1531
|
+
{
|
1532
|
+
VALUE vsignature = rb_class_new_instance(0, NULL, cSignature),
|
1533
|
+
vnotations = rb_ary_new ();
|
1534
|
+
gpgme_sig_notation_t notation;
|
1535
|
+
rb_iv_set (vsignature, "@summary", INT2FIX(signature->summary));
|
1536
|
+
rb_iv_set (vsignature, "@fpr", rb_str_new2 (signature->fpr));
|
1537
|
+
rb_iv_set (vsignature, "@status", LONG2NUM(signature->status));
|
1538
|
+
rb_iv_set (vsignature, "@notations", vnotations);
|
1539
|
+
for (notation = signature->notations; notation;
|
1540
|
+
notation = notation->next)
|
1541
|
+
{
|
1542
|
+
VALUE vnotation = rb_class_new_instance(0, NULL, cSigNotation);
|
1543
|
+
rb_iv_set (vnotation, "@name", rb_str_new2 (notation->name));
|
1544
|
+
rb_iv_set (vnotation, "@value", rb_str_new2 (notation->value));
|
1545
|
+
rb_ary_push (vnotations, vnotation);
|
1546
|
+
}
|
1547
|
+
rb_iv_set (vsignature, "@timestamp", ULONG2NUM(signature->timestamp));
|
1548
|
+
rb_iv_set (vsignature, "@exp_timestamp",
|
1549
|
+
ULONG2NUM(signature->exp_timestamp));
|
1550
|
+
rb_iv_set (vsignature, "@wrong_key_usage",
|
1551
|
+
INT2FIX(signature->wrong_key_usage));
|
1552
|
+
rb_iv_set (vsignature, "@validity", INT2FIX(signature->validity));
|
1553
|
+
rb_iv_set (vsignature, "@validity_reason",
|
1554
|
+
LONG2NUM(signature->validity_reason));
|
1555
|
+
/* PKA related fields were added in 1.1.1. */
|
1556
|
+
#ifdef GPGME_STATUS_PKA_TRUST_BAD
|
1557
|
+
rb_iv_set (vsignature, "@pka_trust", INT2FIX(signature->pka_trust));
|
1558
|
+
rb_iv_set (vsignature, "@pka_address",
|
1559
|
+
rb_str_new2 (signature->pka_address));
|
1560
|
+
#endif
|
1561
|
+
rb_ary_push (vsignatures, vsignature);
|
1562
|
+
}
|
1563
|
+
return vverify_result;
|
1564
|
+
}
|
1565
|
+
|
1566
|
+
static VALUE
|
1567
|
+
rb_s_gpgme_op_decrypt_verify (VALUE dummy, VALUE vctx, VALUE vcipher,
|
1568
|
+
VALUE vplain)
|
1569
|
+
{
|
1570
|
+
gpgme_ctx_t ctx;
|
1571
|
+
gpgme_data_t cipher, plain;
|
1572
|
+
gpgme_error_t err;
|
1573
|
+
|
1574
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1575
|
+
|
1576
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1577
|
+
if (!ctx)
|
1578
|
+
rb_raise (rb_eArgError, "released ctx");
|
1579
|
+
UNWRAP_GPGME_DATA(vcipher, cipher);
|
1580
|
+
UNWRAP_GPGME_DATA(vplain, plain);
|
1581
|
+
|
1582
|
+
err = gpgme_op_decrypt_verify (ctx, cipher, plain);
|
1583
|
+
return LONG2NUM(err);
|
1584
|
+
}
|
1585
|
+
|
1586
|
+
static VALUE
|
1587
|
+
rb_s_gpgme_op_decrypt_verify_start (VALUE dummy, VALUE vctx, VALUE vcipher,
|
1588
|
+
VALUE vplain)
|
1589
|
+
{
|
1590
|
+
gpgme_ctx_t ctx;
|
1591
|
+
gpgme_data_t cipher, plain;
|
1592
|
+
gpgme_error_t err;
|
1593
|
+
|
1594
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1595
|
+
|
1596
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1597
|
+
if (!ctx)
|
1598
|
+
rb_raise (rb_eArgError, "released ctx");
|
1599
|
+
UNWRAP_GPGME_DATA(vcipher, cipher);
|
1600
|
+
UNWRAP_GPGME_DATA(vplain, plain);
|
1601
|
+
|
1602
|
+
err = gpgme_op_decrypt_verify_start (ctx, cipher, plain);
|
1603
|
+
return LONG2NUM(err);
|
1604
|
+
}
|
1605
|
+
|
1606
|
+
static VALUE
|
1607
|
+
rb_s_gpgme_signers_clear (VALUE dummy, VALUE vctx)
|
1608
|
+
{
|
1609
|
+
gpgme_ctx_t ctx;
|
1610
|
+
|
1611
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1612
|
+
if (!ctx)
|
1613
|
+
rb_raise (rb_eArgError, "released ctx");
|
1614
|
+
gpgme_signers_clear (ctx);
|
1615
|
+
return Qnil;
|
1616
|
+
}
|
1617
|
+
|
1618
|
+
static VALUE
|
1619
|
+
rb_s_gpgme_signers_add (VALUE dummy, VALUE vctx, VALUE vkey)
|
1620
|
+
{
|
1621
|
+
gpgme_ctx_t ctx;
|
1622
|
+
gpgme_key_t key;
|
1623
|
+
gpgme_error_t err;
|
1624
|
+
|
1625
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1626
|
+
if (!ctx)
|
1627
|
+
rb_raise (rb_eArgError, "released ctx");
|
1628
|
+
UNWRAP_GPGME_KEY(vkey, key);
|
1629
|
+
|
1630
|
+
err = gpgme_signers_add (ctx, key);
|
1631
|
+
return LONG2NUM(err);
|
1632
|
+
}
|
1633
|
+
|
1634
|
+
static VALUE
|
1635
|
+
rb_s_gpgme_signers_enum (VALUE dummy, VALUE vctx, VALUE vseq)
|
1636
|
+
{
|
1637
|
+
gpgme_ctx_t ctx;
|
1638
|
+
gpgme_key_t key;
|
1639
|
+
|
1640
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1641
|
+
if (!ctx)
|
1642
|
+
rb_raise (rb_eArgError, "released ctx");
|
1643
|
+
|
1644
|
+
key = gpgme_signers_enum (ctx, NUM2INT(vseq));
|
1645
|
+
if (!key)
|
1646
|
+
return Qnil;
|
1647
|
+
return WRAP_GPGME_KEY(key);
|
1648
|
+
}
|
1649
|
+
|
1650
|
+
static VALUE
|
1651
|
+
rb_s_gpgme_op_sign (VALUE dummy, VALUE vctx, VALUE vplain, VALUE vsig,
|
1652
|
+
VALUE vmode)
|
1653
|
+
{
|
1654
|
+
gpgme_ctx_t ctx;
|
1655
|
+
gpgme_data_t plain, sig;
|
1656
|
+
gpgme_error_t err;
|
1657
|
+
|
1658
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1659
|
+
|
1660
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1661
|
+
if (!ctx)
|
1662
|
+
rb_raise (rb_eArgError, "released ctx");
|
1663
|
+
UNWRAP_GPGME_DATA(vplain, plain);
|
1664
|
+
UNWRAP_GPGME_DATA(vsig, sig);
|
1665
|
+
|
1666
|
+
err = gpgme_op_sign (ctx, plain, sig, NUM2INT(vmode));
|
1667
|
+
return LONG2NUM(err);
|
1668
|
+
}
|
1669
|
+
|
1670
|
+
static VALUE
|
1671
|
+
rb_s_gpgme_op_sign_start (VALUE dummy, VALUE vctx, VALUE vplain, VALUE vsig,
|
1672
|
+
VALUE vmode)
|
1673
|
+
{
|
1674
|
+
gpgme_ctx_t ctx;
|
1675
|
+
gpgme_data_t plain, sig;
|
1676
|
+
gpgme_error_t err;
|
1677
|
+
|
1678
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1679
|
+
|
1680
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1681
|
+
if (!ctx)
|
1682
|
+
rb_raise (rb_eArgError, "released ctx");
|
1683
|
+
UNWRAP_GPGME_DATA(vplain, plain);
|
1684
|
+
UNWRAP_GPGME_DATA(vsig, sig);
|
1685
|
+
|
1686
|
+
err = gpgme_op_sign_start (ctx, plain, sig, NUM2INT(vmode));
|
1687
|
+
return LONG2NUM(err);
|
1688
|
+
}
|
1689
|
+
|
1690
|
+
static VALUE
|
1691
|
+
rb_s_gpgme_op_sign_result (VALUE dummy, VALUE vctx)
|
1692
|
+
{
|
1693
|
+
gpgme_ctx_t ctx;
|
1694
|
+
gpgme_sign_result_t result;
|
1695
|
+
gpgme_invalid_key_t invalid_key;
|
1696
|
+
gpgme_new_signature_t new_signature;
|
1697
|
+
VALUE vresult, vinvalid_signers, vsignatures;
|
1698
|
+
|
1699
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1700
|
+
if (!ctx)
|
1701
|
+
rb_raise (rb_eArgError, "released ctx");
|
1702
|
+
|
1703
|
+
result = gpgme_op_sign_result (ctx);
|
1704
|
+
vresult = rb_class_new_instance (0, NULL, cSignResult);
|
1705
|
+
vinvalid_signers = rb_ary_new ();
|
1706
|
+
rb_iv_set (vresult, "@invalid_signers", vinvalid_signers);
|
1707
|
+
for (invalid_key = result->invalid_signers; invalid_key;
|
1708
|
+
invalid_key = invalid_key->next)
|
1709
|
+
{
|
1710
|
+
VALUE vinvalid_key =
|
1711
|
+
rb_class_new_instance (0, NULL, cInvalidKey);
|
1712
|
+
rb_iv_set (vinvalid_key, "@fpr", rb_str_new2 (invalid_key->fpr));
|
1713
|
+
rb_iv_set (vinvalid_key, "@reason", LONG2NUM(invalid_key->reason));
|
1714
|
+
rb_ary_push (vinvalid_signers, vinvalid_key);
|
1715
|
+
}
|
1716
|
+
vsignatures = rb_ary_new ();
|
1717
|
+
rb_iv_set (vresult, "@signatures", vsignatures);
|
1718
|
+
for (new_signature = result->signatures; new_signature;
|
1719
|
+
new_signature = new_signature->next)
|
1720
|
+
{
|
1721
|
+
VALUE vnew_signature =
|
1722
|
+
rb_class_new_instance (0, NULL, cNewSignature);
|
1723
|
+
rb_iv_set (vnew_signature, "@type", INT2FIX(new_signature->type));
|
1724
|
+
rb_iv_set (vnew_signature, "@pubkey_algo",
|
1725
|
+
INT2FIX(new_signature->pubkey_algo));
|
1726
|
+
rb_iv_set (vnew_signature, "@hash_algo",
|
1727
|
+
INT2FIX(new_signature->hash_algo));
|
1728
|
+
rb_iv_set (vnew_signature, "@sig_class",
|
1729
|
+
UINT2NUM(new_signature->sig_class));
|
1730
|
+
rb_iv_set (vnew_signature, "@timestamp",
|
1731
|
+
LONG2NUM(new_signature->timestamp));
|
1732
|
+
rb_iv_set (vnew_signature, "@fpr", rb_str_new2 (new_signature->fpr));
|
1733
|
+
rb_ary_push (vsignatures, vnew_signature);
|
1734
|
+
}
|
1735
|
+
return vresult;
|
1736
|
+
}
|
1737
|
+
|
1738
|
+
static VALUE
|
1739
|
+
rb_s_gpgme_op_encrypt (VALUE dummy, VALUE vctx, VALUE vrecp, VALUE vflags,
|
1740
|
+
VALUE vplain, VALUE vcipher)
|
1741
|
+
{
|
1742
|
+
gpgme_ctx_t ctx;
|
1743
|
+
gpgme_key_t *recp = NULL;
|
1744
|
+
gpgme_data_t plain, cipher;
|
1745
|
+
gpgme_error_t err;
|
1746
|
+
|
1747
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1748
|
+
|
1749
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1750
|
+
if (!ctx)
|
1751
|
+
rb_raise (rb_eArgError, "released ctx");
|
1752
|
+
/* If RECP is `NULL', symmetric rather than public key encryption is
|
1753
|
+
performed. */
|
1754
|
+
if (!NIL_P(vrecp))
|
1755
|
+
{
|
1756
|
+
int i;
|
1757
|
+
recp = ALLOC_N(gpgme_key_t, RARRAY_LEN(vrecp) + 1);
|
1758
|
+
for (i = 0; i < RARRAY_LEN(vrecp); i++)
|
1759
|
+
UNWRAP_GPGME_KEY(RARRAY_PTR(vrecp)[i], recp[i]);
|
1760
|
+
recp[i] = NULL;
|
1761
|
+
}
|
1762
|
+
UNWRAP_GPGME_DATA(vplain, plain);
|
1763
|
+
UNWRAP_GPGME_DATA(vcipher, cipher);
|
1764
|
+
|
1765
|
+
err = gpgme_op_encrypt (ctx, recp, NUM2INT(vflags), plain, cipher);
|
1766
|
+
if (recp)
|
1767
|
+
xfree (recp);
|
1768
|
+
return LONG2NUM(err);
|
1769
|
+
}
|
1770
|
+
|
1771
|
+
static VALUE
|
1772
|
+
rb_s_gpgme_op_encrypt_start (VALUE dummy, VALUE vctx, VALUE vrecp,
|
1773
|
+
VALUE vflags, VALUE vplain, VALUE vcipher)
|
1774
|
+
{
|
1775
|
+
gpgme_ctx_t ctx;
|
1776
|
+
gpgme_key_t *recp = NULL;
|
1777
|
+
gpgme_data_t plain, cipher;
|
1778
|
+
gpgme_error_t err;
|
1779
|
+
|
1780
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1781
|
+
|
1782
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1783
|
+
if (!ctx)
|
1784
|
+
rb_raise (rb_eArgError, "released ctx");
|
1785
|
+
/* If RECP is `NULL', symmetric rather than public key encryption is
|
1786
|
+
performed. */
|
1787
|
+
if (!NIL_P(vrecp))
|
1788
|
+
{
|
1789
|
+
int i;
|
1790
|
+
recp = ALLOC_N(gpgme_key_t, RARRAY_LEN(vrecp) + 1);
|
1791
|
+
for (i = 0; i < RARRAY_LEN(vrecp); i++)
|
1792
|
+
UNWRAP_GPGME_KEY(RARRAY_PTR(vrecp)[i], recp[i]);
|
1793
|
+
recp[i] = NULL;
|
1794
|
+
}
|
1795
|
+
UNWRAP_GPGME_DATA(vplain, plain);
|
1796
|
+
UNWRAP_GPGME_DATA(vcipher, cipher);
|
1797
|
+
|
1798
|
+
err = gpgme_op_encrypt_start (ctx, recp, NUM2INT(vflags), plain, cipher);
|
1799
|
+
if (recp)
|
1800
|
+
xfree (recp);
|
1801
|
+
return LONG2NUM(err);
|
1802
|
+
}
|
1803
|
+
|
1804
|
+
static VALUE
|
1805
|
+
rb_s_gpgme_op_encrypt_result (VALUE dummy, VALUE vctx)
|
1806
|
+
{
|
1807
|
+
gpgme_ctx_t ctx;
|
1808
|
+
gpgme_encrypt_result_t result;
|
1809
|
+
gpgme_invalid_key_t invalid_key;
|
1810
|
+
VALUE vresult, vinvalid_recipients;
|
1811
|
+
|
1812
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1813
|
+
|
1814
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1815
|
+
if (!ctx)
|
1816
|
+
rb_raise (rb_eArgError, "released ctx");
|
1817
|
+
|
1818
|
+
result = gpgme_op_encrypt_result (ctx);
|
1819
|
+
vresult = rb_class_new_instance (0, NULL, cEncryptResult);
|
1820
|
+
vinvalid_recipients = rb_ary_new ();
|
1821
|
+
rb_iv_set (vresult, "@invalid_recipients", vinvalid_recipients);
|
1822
|
+
for (invalid_key = result->invalid_recipients; invalid_key;
|
1823
|
+
invalid_key = invalid_key->next)
|
1824
|
+
{
|
1825
|
+
VALUE vinvalid_key =
|
1826
|
+
rb_class_new_instance (0, NULL, cInvalidKey);
|
1827
|
+
rb_iv_set (vinvalid_key, "@fpr", rb_str_new2 (invalid_key->fpr));
|
1828
|
+
rb_iv_set (vinvalid_key, "@reason", LONG2NUM(invalid_key->reason));
|
1829
|
+
rb_ary_push (vinvalid_recipients, vinvalid_key);
|
1830
|
+
}
|
1831
|
+
return vresult;
|
1832
|
+
}
|
1833
|
+
|
1834
|
+
static VALUE
|
1835
|
+
rb_s_gpgme_op_encrypt_sign (VALUE dummy, VALUE vctx, VALUE vrecp, VALUE vflags,
|
1836
|
+
VALUE vplain, VALUE vcipher)
|
1837
|
+
{
|
1838
|
+
gpgme_ctx_t ctx;
|
1839
|
+
gpgme_key_t *recp = NULL;
|
1840
|
+
gpgme_data_t plain, cipher;
|
1841
|
+
gpgme_error_t err;
|
1842
|
+
|
1843
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1844
|
+
|
1845
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1846
|
+
if (!ctx)
|
1847
|
+
rb_raise (rb_eArgError, "released ctx");
|
1848
|
+
/* If RECP is `NULL', symmetric rather than public key encryption is
|
1849
|
+
performed. */
|
1850
|
+
if (!NIL_P(vrecp))
|
1851
|
+
{
|
1852
|
+
int i;
|
1853
|
+
recp = ALLOC_N(gpgme_key_t, RARRAY_LEN(vrecp) + 1);
|
1854
|
+
for (i = 0; i < RARRAY_LEN(vrecp); i++)
|
1855
|
+
UNWRAP_GPGME_KEY(RARRAY_PTR(vrecp)[i], recp[i]);
|
1856
|
+
recp[i] = NULL;
|
1857
|
+
}
|
1858
|
+
UNWRAP_GPGME_DATA(vplain, plain);
|
1859
|
+
UNWRAP_GPGME_DATA(vcipher, cipher);
|
1860
|
+
|
1861
|
+
err = gpgme_op_encrypt_sign (ctx, recp, NUM2INT(vflags), plain, cipher);
|
1862
|
+
if (recp)
|
1863
|
+
xfree (recp);
|
1864
|
+
return LONG2NUM(err);
|
1865
|
+
}
|
1866
|
+
|
1867
|
+
static VALUE
|
1868
|
+
rb_s_gpgme_op_encrypt_sign_start (VALUE dummy, VALUE vctx, VALUE vrecp,
|
1869
|
+
VALUE vflags, VALUE vplain, VALUE vcipher)
|
1870
|
+
{
|
1871
|
+
gpgme_ctx_t ctx;
|
1872
|
+
gpgme_key_t *recp = NULL;
|
1873
|
+
gpgme_data_t plain, cipher;
|
1874
|
+
gpgme_error_t err;
|
1875
|
+
|
1876
|
+
CHECK_KEYLIST_NOT_IN_PROGRESS(vctx);
|
1877
|
+
|
1878
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1879
|
+
if (!ctx)
|
1880
|
+
rb_raise (rb_eArgError, "released ctx");
|
1881
|
+
/* If RECP is `NULL', symmetric rather than public key encryption is
|
1882
|
+
performed. */
|
1883
|
+
if (!NIL_P(vrecp))
|
1884
|
+
{
|
1885
|
+
int i;
|
1886
|
+
recp = ALLOC_N(gpgme_key_t, RARRAY_LEN(vrecp) + 1);
|
1887
|
+
for (i = 0; i < RARRAY_LEN(vrecp); i++)
|
1888
|
+
UNWRAP_GPGME_KEY(RARRAY_PTR(vrecp)[i], recp[i]);
|
1889
|
+
recp[i] = NULL;
|
1890
|
+
}
|
1891
|
+
UNWRAP_GPGME_DATA(vplain, plain);
|
1892
|
+
UNWRAP_GPGME_DATA(vcipher, cipher);
|
1893
|
+
|
1894
|
+
err = gpgme_op_encrypt_sign_start (ctx, recp, NUM2INT(vflags), plain,
|
1895
|
+
cipher);
|
1896
|
+
if (recp)
|
1897
|
+
xfree (recp);
|
1898
|
+
return LONG2NUM(err);
|
1899
|
+
}
|
1900
|
+
|
1901
|
+
static VALUE
|
1902
|
+
rb_s_gpgme_wait (VALUE dummy, VALUE vctx, VALUE rstatus, VALUE vhang)
|
1903
|
+
{
|
1904
|
+
gpgme_ctx_t ctx = NULL, ret;
|
1905
|
+
gpgme_error_t status;
|
1906
|
+
|
1907
|
+
/* The CTX argument can be `NULL'. In that case, `gpgme_wait' waits
|
1908
|
+
for any context to complete its operation. */
|
1909
|
+
if (!NIL_P(vctx))
|
1910
|
+
{
|
1911
|
+
UNWRAP_GPGME_CTX(vctx, ctx);
|
1912
|
+
if (!ctx)
|
1913
|
+
rb_raise (rb_eArgError, "released ctx");
|
1914
|
+
}
|
1915
|
+
|
1916
|
+
ret = gpgme_wait (ctx, &status, NUM2INT(vhang));
|
1917
|
+
if (ret)
|
1918
|
+
{
|
1919
|
+
rb_ary_store (rstatus, 0, INT2NUM(status));
|
1920
|
+
if (ret != ctx)
|
1921
|
+
vctx = WRAP_GPGME_CTX(ret);
|
1922
|
+
return vctx;
|
1923
|
+
}
|
1924
|
+
return Qnil;
|
1925
|
+
}
|
1926
|
+
|
1927
|
+
void
|
1928
|
+
Init_gpgme_n (void)
|
1929
|
+
{
|
1930
|
+
VALUE mGPGME;
|
1931
|
+
|
1932
|
+
mGPGME = rb_define_module ("GPGME");
|
1933
|
+
|
1934
|
+
rb_define_module_function (mGPGME, "gpgme_check_version",
|
1935
|
+
rb_s_gpgme_check_version, 1);
|
1936
|
+
rb_define_module_function (mGPGME, "gpgme_engine_check_version",
|
1937
|
+
rb_s_gpgme_engine_check_version, 1);
|
1938
|
+
rb_define_module_function (mGPGME, "gpgme_get_engine_info",
|
1939
|
+
rb_s_gpgme_get_engine_info, 1);
|
1940
|
+
rb_define_module_function (mGPGME, "gpgme_set_engine_info",
|
1941
|
+
rb_s_gpgme_set_engine_info, 3);
|
1942
|
+
|
1943
|
+
rb_define_module_function (mGPGME, "gpgme_pubkey_algo_name",
|
1944
|
+
rb_s_gpgme_pubkey_algo_name, 1);
|
1945
|
+
rb_define_module_function (mGPGME, "gpgme_hash_algo_name",
|
1946
|
+
rb_s_gpgme_hash_algo_name, 1);
|
1947
|
+
|
1948
|
+
rb_define_module_function (mGPGME, "gpgme_err_code",
|
1949
|
+
rb_s_gpgme_err_code, 1);
|
1950
|
+
rb_define_module_function (mGPGME, "gpgme_err_source",
|
1951
|
+
rb_s_gpgme_err_source, 1);
|
1952
|
+
rb_define_module_function (mGPGME, "gpgme_strerror",
|
1953
|
+
rb_s_gpgme_strerror, 1);
|
1954
|
+
|
1955
|
+
cEngineInfo =
|
1956
|
+
rb_define_class_under (mGPGME, "EngineInfo", rb_cObject);
|
1957
|
+
cCtx =
|
1958
|
+
rb_define_class_under (mGPGME, "Ctx", rb_cObject);
|
1959
|
+
cData =
|
1960
|
+
rb_define_class_under (mGPGME, "Data", rb_cObject);
|
1961
|
+
cKey =
|
1962
|
+
rb_define_class_under (mGPGME, "Key", rb_cObject);
|
1963
|
+
cSubKey =
|
1964
|
+
rb_define_class_under (mGPGME, "SubKey", rb_cObject);
|
1965
|
+
cUserID =
|
1966
|
+
rb_define_class_under (mGPGME, "UserID", rb_cObject);
|
1967
|
+
cKeySig =
|
1968
|
+
rb_define_class_under (mGPGME, "KeySig", rb_cObject);
|
1969
|
+
cDecryptResult =
|
1970
|
+
rb_define_class_under (mGPGME, "DecryptResult", rb_cObject);
|
1971
|
+
cVerifyResult =
|
1972
|
+
rb_define_class_under (mGPGME, "VerifyResult", rb_cObject);
|
1973
|
+
cSignResult =
|
1974
|
+
rb_define_class_under (mGPGME, "SignResult", rb_cObject);
|
1975
|
+
cEncryptResult =
|
1976
|
+
rb_define_class_under (mGPGME, "EncryptResult", rb_cObject);
|
1977
|
+
cSignature =
|
1978
|
+
rb_define_class_under (mGPGME, "Signature", rb_cObject);
|
1979
|
+
cSigNotation =
|
1980
|
+
rb_define_class_under (mGPGME, "SigNotation", rb_cObject);
|
1981
|
+
cTrustItem =
|
1982
|
+
rb_define_class_under (mGPGME, "TrustItem", rb_cObject);
|
1983
|
+
cInvalidKey =
|
1984
|
+
rb_define_class_under (mGPGME, "InvalidKey", rb_cObject);
|
1985
|
+
cNewSignature =
|
1986
|
+
rb_define_class_under (mGPGME, "NewSignature", rb_cObject);
|
1987
|
+
cImportResult =
|
1988
|
+
rb_define_class_under (mGPGME, "ImportResult", rb_cObject);
|
1989
|
+
cImportStatus =
|
1990
|
+
rb_define_class_under (mGPGME, "ImportStatus", rb_cObject);
|
1991
|
+
|
1992
|
+
/* Creating Data Buffers
|
1993
|
+
*
|
1994
|
+
* gpgme_data_new_from_filepart is not currently supported.
|
1995
|
+
*/
|
1996
|
+
rb_define_module_function (mGPGME, "gpgme_data_new",
|
1997
|
+
rb_s_gpgme_data_new, 1);
|
1998
|
+
rb_define_module_function (mGPGME, "gpgme_data_new_from_mem",
|
1999
|
+
rb_s_gpgme_data_new_from_mem, 3);
|
2000
|
+
rb_define_module_function (mGPGME, "gpgme_data_new_from_fd",
|
2001
|
+
rb_s_gpgme_data_new_from_fd, 2);
|
2002
|
+
rb_define_module_function (mGPGME, "gpgme_data_new_from_cbs",
|
2003
|
+
rb_s_gpgme_data_new_from_cbs, 3);
|
2004
|
+
|
2005
|
+
/* Manipulating Data Buffers */
|
2006
|
+
rb_define_module_function (mGPGME, "gpgme_data_read",
|
2007
|
+
rb_s_gpgme_data_read, 2);
|
2008
|
+
rb_define_module_function (mGPGME, "gpgme_data_seek",
|
2009
|
+
rb_s_gpgme_data_seek, 3);
|
2010
|
+
rb_define_module_function (mGPGME, "gpgme_data_write",
|
2011
|
+
rb_s_gpgme_data_write, 3);
|
2012
|
+
rb_define_module_function (mGPGME, "gpgme_data_get_encoding",
|
2013
|
+
rb_s_gpgme_data_get_encoding, 1);
|
2014
|
+
rb_define_module_function (mGPGME, "gpgme_data_set_encoding",
|
2015
|
+
rb_s_gpgme_data_set_encoding, 2);
|
2016
|
+
|
2017
|
+
/* Creating Contexts */
|
2018
|
+
rb_define_module_function (mGPGME, "gpgme_new",
|
2019
|
+
rb_s_gpgme_new, 1);
|
2020
|
+
rb_define_module_function (mGPGME, "gpgme_release",
|
2021
|
+
rb_s_gpgme_release, 1);
|
2022
|
+
|
2023
|
+
/* Context Attributes */
|
2024
|
+
rb_define_module_function (mGPGME, "gpgme_set_protocol",
|
2025
|
+
rb_s_gpgme_set_protocol, 2);
|
2026
|
+
rb_define_module_function (mGPGME, "gpgme_get_protocol",
|
2027
|
+
rb_s_gpgme_get_protocol, 1);
|
2028
|
+
rb_define_module_function (mGPGME, "gpgme_set_armor",
|
2029
|
+
rb_s_gpgme_set_armor, 2);
|
2030
|
+
rb_define_module_function (mGPGME, "gpgme_get_armor",
|
2031
|
+
rb_s_gpgme_get_armor, 1);
|
2032
|
+
rb_define_module_function (mGPGME, "gpgme_set_textmode",
|
2033
|
+
rb_s_gpgme_set_textmode, 2);
|
2034
|
+
rb_define_module_function (mGPGME, "gpgme_get_textmode",
|
2035
|
+
rb_s_gpgme_get_textmode, 1);
|
2036
|
+
rb_define_module_function (mGPGME, "gpgme_set_include_certs",
|
2037
|
+
rb_s_gpgme_set_include_certs, 2);
|
2038
|
+
rb_define_module_function (mGPGME, "gpgme_get_include_certs",
|
2039
|
+
rb_s_gpgme_get_include_certs, 1);
|
2040
|
+
rb_define_module_function (mGPGME, "gpgme_set_keylist_mode",
|
2041
|
+
rb_s_gpgme_set_keylist_mode, 2);
|
2042
|
+
rb_define_module_function (mGPGME, "gpgme_get_keylist_mode",
|
2043
|
+
rb_s_gpgme_get_keylist_mode, 1);
|
2044
|
+
rb_define_module_function (mGPGME, "gpgme_set_passphrase_cb",
|
2045
|
+
rb_s_gpgme_set_passphrase_cb, 3);
|
2046
|
+
rb_define_module_function (mGPGME, "gpgme_get_passphrase_cb",
|
2047
|
+
rb_s_gpgme_get_passphrase_cb, 3);
|
2048
|
+
rb_define_module_function (mGPGME, "gpgme_set_progress_cb",
|
2049
|
+
rb_s_gpgme_set_progress_cb, 3);
|
2050
|
+
rb_define_module_function (mGPGME, "gpgme_get_progress_cb",
|
2051
|
+
rb_s_gpgme_get_progress_cb, 3);
|
2052
|
+
rb_define_module_function (mGPGME, "gpgme_set_locale",
|
2053
|
+
rb_s_gpgme_set_locale, 3);
|
2054
|
+
|
2055
|
+
/* Key Management */
|
2056
|
+
rb_define_module_function (mGPGME, "gpgme_op_keylist_start",
|
2057
|
+
rb_s_gpgme_op_keylist_start, 3);
|
2058
|
+
rb_define_module_function (mGPGME, "gpgme_op_keylist_ext_start",
|
2059
|
+
rb_s_gpgme_op_keylist_ext_start, 4);
|
2060
|
+
rb_define_module_function (mGPGME, "gpgme_op_keylist_next",
|
2061
|
+
rb_s_gpgme_op_keylist_next, 2);
|
2062
|
+
rb_define_module_function (mGPGME, "gpgme_op_keylist_end",
|
2063
|
+
rb_s_gpgme_op_keylist_end, 1);
|
2064
|
+
rb_define_module_function (mGPGME, "gpgme_get_key",
|
2065
|
+
rb_s_gpgme_get_key, 4);
|
2066
|
+
rb_define_module_function (mGPGME, "gpgme_op_genkey",
|
2067
|
+
rb_s_gpgme_op_genkey, 4);
|
2068
|
+
rb_define_module_function (mGPGME, "gpgme_op_genkey_start",
|
2069
|
+
rb_s_gpgme_op_genkey_start, 4);
|
2070
|
+
rb_define_module_function (mGPGME, "gpgme_op_export",
|
2071
|
+
rb_s_gpgme_op_export, 4);
|
2072
|
+
rb_define_module_function (mGPGME, "gpgme_op_export_start",
|
2073
|
+
rb_s_gpgme_op_export_start, 4);
|
2074
|
+
rb_define_module_function (mGPGME, "gpgme_op_export_ext",
|
2075
|
+
rb_s_gpgme_op_export_ext, 4);
|
2076
|
+
rb_define_module_function (mGPGME, "gpgme_op_export_ext_start",
|
2077
|
+
rb_s_gpgme_op_export_ext_start, 4);
|
2078
|
+
#ifdef HAVE_GPGME_OP_EXPORT_KEYS
|
2079
|
+
rb_define_module_function (mGPGME, "gpgme_op_export_keys",
|
2080
|
+
rb_s_gpgme_op_export_keys, 4);
|
2081
|
+
rb_define_module_function (mGPGME, "gpgme_op_export_keys_start",
|
2082
|
+
rb_s_gpgme_op_export_keys_start, 4);
|
2083
|
+
#endif
|
2084
|
+
rb_define_module_function (mGPGME, "gpgme_op_import",
|
2085
|
+
rb_s_gpgme_op_import, 2);
|
2086
|
+
rb_define_module_function (mGPGME, "gpgme_op_import_start",
|
2087
|
+
rb_s_gpgme_op_import_start, 2);
|
2088
|
+
#ifdef HAVE_GPGME_OP_EXPORT_KEYS
|
2089
|
+
rb_define_module_function (mGPGME, "gpgme_op_import_keys",
|
2090
|
+
rb_s_gpgme_op_import_keys, 2);
|
2091
|
+
rb_define_module_function (mGPGME, "gpgme_op_import_keys_start",
|
2092
|
+
rb_s_gpgme_op_import_keys_start, 2);
|
2093
|
+
#endif
|
2094
|
+
rb_define_module_function (mGPGME, "gpgme_op_import_result",
|
2095
|
+
rb_s_gpgme_op_import_result, 1);
|
2096
|
+
rb_define_module_function (mGPGME, "gpgme_op_delete",
|
2097
|
+
rb_s_gpgme_op_delete, 3);
|
2098
|
+
rb_define_module_function (mGPGME, "gpgme_op_delete_start",
|
2099
|
+
rb_s_gpgme_op_delete_start, 3);
|
2100
|
+
rb_define_module_function (mGPGME, "gpgme_op_edit",
|
2101
|
+
rb_s_gpgme_op_edit, 5);
|
2102
|
+
rb_define_module_function (mGPGME, "gpgme_op_edit_start",
|
2103
|
+
rb_s_gpgme_op_edit_start, 5);
|
2104
|
+
rb_define_module_function (mGPGME, "gpgme_op_card_edit",
|
2105
|
+
rb_s_gpgme_op_card_edit, 5);
|
2106
|
+
rb_define_module_function (mGPGME, "gpgme_op_card_edit_start",
|
2107
|
+
rb_s_gpgme_op_card_edit_start, 5);
|
2108
|
+
|
2109
|
+
/* Trust Item Management */
|
2110
|
+
rb_define_module_function (mGPGME, "gpgme_op_trustlist_start",
|
2111
|
+
rb_s_gpgme_op_trustlist_start, 3);
|
2112
|
+
rb_define_module_function (mGPGME, "gpgme_op_trustlist_next",
|
2113
|
+
rb_s_gpgme_op_trustlist_next, 2);
|
2114
|
+
rb_define_module_function (mGPGME, "gpgme_op_trustlist_end",
|
2115
|
+
rb_s_gpgme_op_trustlist_end, 1);
|
2116
|
+
|
2117
|
+
/* Decrypt */
|
2118
|
+
rb_define_module_function (mGPGME, "gpgme_op_decrypt",
|
2119
|
+
rb_s_gpgme_op_decrypt, 3);
|
2120
|
+
rb_define_module_function (mGPGME, "gpgme_op_decrypt_start",
|
2121
|
+
rb_s_gpgme_op_decrypt_start, 3);
|
2122
|
+
rb_define_module_function (mGPGME, "gpgme_op_decrypt_result",
|
2123
|
+
rb_s_gpgme_op_decrypt_result, 1);
|
2124
|
+
|
2125
|
+
/* Verify */
|
2126
|
+
rb_define_module_function (mGPGME, "gpgme_op_verify",
|
2127
|
+
rb_s_gpgme_op_verify, 4);
|
2128
|
+
rb_define_module_function (mGPGME, "gpgme_op_verify_start",
|
2129
|
+
rb_s_gpgme_op_verify_start, 4);
|
2130
|
+
rb_define_module_function (mGPGME, "gpgme_op_verify_result",
|
2131
|
+
rb_s_gpgme_op_verify_result, 1);
|
2132
|
+
|
2133
|
+
/* Decrypt and Verify */
|
2134
|
+
rb_define_module_function (mGPGME, "gpgme_op_decrypt_verify",
|
2135
|
+
rb_s_gpgme_op_decrypt_verify, 3);
|
2136
|
+
rb_define_module_function (mGPGME, "gpgme_op_decrypt_verify_start",
|
2137
|
+
rb_s_gpgme_op_decrypt_verify_start, 3);
|
2138
|
+
|
2139
|
+
/* Sign */
|
2140
|
+
rb_define_module_function (mGPGME, "gpgme_signers_clear",
|
2141
|
+
rb_s_gpgme_signers_clear, 1);
|
2142
|
+
rb_define_module_function (mGPGME, "gpgme_signers_add",
|
2143
|
+
rb_s_gpgme_signers_add, 2);
|
2144
|
+
rb_define_module_function (mGPGME, "gpgme_signers_enum",
|
2145
|
+
rb_s_gpgme_signers_enum, 2);
|
2146
|
+
rb_define_module_function (mGPGME, "gpgme_op_sign",
|
2147
|
+
rb_s_gpgme_op_sign, 4);
|
2148
|
+
rb_define_module_function (mGPGME, "gpgme_op_sign_start",
|
2149
|
+
rb_s_gpgme_op_sign_start, 4);
|
2150
|
+
rb_define_module_function (mGPGME, "gpgme_op_sign_result",
|
2151
|
+
rb_s_gpgme_op_sign_result, 1);
|
2152
|
+
|
2153
|
+
/* Encrypt */
|
2154
|
+
rb_define_module_function (mGPGME, "gpgme_op_encrypt",
|
2155
|
+
rb_s_gpgme_op_encrypt, 5);
|
2156
|
+
rb_define_module_function (mGPGME, "gpgme_op_encrypt_start",
|
2157
|
+
rb_s_gpgme_op_encrypt_start, 5);
|
2158
|
+
rb_define_module_function (mGPGME, "gpgme_op_encrypt_result",
|
2159
|
+
rb_s_gpgme_op_encrypt_result, 1);
|
2160
|
+
rb_define_module_function (mGPGME, "gpgme_op_encrypt_sign",
|
2161
|
+
rb_s_gpgme_op_encrypt_sign, 5);
|
2162
|
+
rb_define_module_function (mGPGME, "gpgme_op_encrypt_sign_start",
|
2163
|
+
rb_s_gpgme_op_encrypt_sign_start, 5);
|
2164
|
+
|
2165
|
+
/* Run Control */
|
2166
|
+
rb_define_module_function (mGPGME, "gpgme_wait",
|
2167
|
+
rb_s_gpgme_wait, 3);
|
2168
|
+
|
2169
|
+
/* gpgme_pubkey_algo_t */
|
2170
|
+
rb_define_const (mGPGME, "GPGME_PK_RSA", INT2FIX(GPGME_PK_RSA));
|
2171
|
+
rb_define_const (mGPGME, "GPGME_PK_DSA", INT2FIX(GPGME_PK_DSA));
|
2172
|
+
rb_define_const (mGPGME, "GPGME_PK_ELG", INT2FIX(GPGME_PK_ELG));
|
2173
|
+
rb_define_const (mGPGME, "GPGME_PK_ELG_E", INT2FIX(GPGME_PK_ELG_E));
|
2174
|
+
|
2175
|
+
/* gpgme_hash_algo_t */
|
2176
|
+
rb_define_const (mGPGME, "GPGME_MD_MD5", INT2FIX(GPGME_MD_MD5));
|
2177
|
+
rb_define_const (mGPGME, "GPGME_MD_SHA1", INT2FIX(GPGME_MD_SHA1));
|
2178
|
+
rb_define_const (mGPGME, "GPGME_MD_RMD160", INT2FIX(GPGME_MD_RMD160));
|
2179
|
+
rb_define_const (mGPGME, "GPGME_MD_MD2", INT2FIX(GPGME_MD_MD2));
|
2180
|
+
rb_define_const (mGPGME, "GPGME_MD_TIGER", INT2FIX(GPGME_MD_TIGER));
|
2181
|
+
rb_define_const (mGPGME, "GPGME_MD_HAVAL", INT2FIX(GPGME_MD_HAVAL));
|
2182
|
+
rb_define_const (mGPGME, "GPGME_MD_SHA256", INT2FIX(GPGME_MD_SHA256));
|
2183
|
+
rb_define_const (mGPGME, "GPGME_MD_SHA384", INT2FIX(GPGME_MD_SHA384));
|
2184
|
+
rb_define_const (mGPGME, "GPGME_MD_SHA512", INT2FIX(GPGME_MD_SHA512));
|
2185
|
+
rb_define_const (mGPGME, "GPGME_MD_MD4", INT2FIX(GPGME_MD_MD4));
|
2186
|
+
rb_define_const (mGPGME, "GPGME_MD_CRC32", INT2FIX(GPGME_MD_CRC32));
|
2187
|
+
rb_define_const (mGPGME, "GPGME_MD_CRC32_RFC1510",
|
2188
|
+
INT2FIX(GPGME_MD_CRC32_RFC1510));
|
2189
|
+
rb_define_const (mGPGME, "GPGME_MD_CRC24_RFC2440",
|
2190
|
+
INT2FIX(GPGME_MD_CRC24_RFC2440));
|
2191
|
+
|
2192
|
+
/* gpgme_err_code_t */
|
2193
|
+
rb_define_const (mGPGME, "GPG_ERR_EOF",
|
2194
|
+
INT2FIX(GPG_ERR_EOF));
|
2195
|
+
rb_define_const (mGPGME, "GPG_ERR_NO_ERROR",
|
2196
|
+
INT2FIX(GPG_ERR_NO_ERROR));
|
2197
|
+
rb_define_const (mGPGME, "GPG_ERR_GENERAL",
|
2198
|
+
INT2FIX(GPG_ERR_GENERAL));
|
2199
|
+
rb_define_const (mGPGME, "GPG_ERR_ENOMEM",
|
2200
|
+
INT2FIX(GPG_ERR_ENOMEM));
|
2201
|
+
rb_define_const (mGPGME, "GPG_ERR_INV_VALUE",
|
2202
|
+
INT2FIX(GPG_ERR_INV_VALUE));
|
2203
|
+
rb_define_const (mGPGME, "GPG_ERR_UNUSABLE_PUBKEY",
|
2204
|
+
INT2FIX(GPG_ERR_UNUSABLE_PUBKEY));
|
2205
|
+
rb_define_const (mGPGME, "GPG_ERR_UNUSABLE_SECKEY",
|
2206
|
+
INT2FIX(GPG_ERR_UNUSABLE_SECKEY));
|
2207
|
+
rb_define_const (mGPGME, "GPG_ERR_NO_DATA",
|
2208
|
+
INT2FIX(GPG_ERR_NO_DATA));
|
2209
|
+
rb_define_const (mGPGME, "GPG_ERR_CONFLICT",
|
2210
|
+
INT2FIX(GPG_ERR_CONFLICT));
|
2211
|
+
rb_define_const (mGPGME, "GPG_ERR_NOT_IMPLEMENTED",
|
2212
|
+
INT2FIX(GPG_ERR_NOT_IMPLEMENTED));
|
2213
|
+
rb_define_const (mGPGME, "GPG_ERR_DECRYPT_FAILED",
|
2214
|
+
INT2FIX(GPG_ERR_DECRYPT_FAILED));
|
2215
|
+
rb_define_const (mGPGME, "GPG_ERR_BAD_PASSPHRASE",
|
2216
|
+
INT2FIX(GPG_ERR_BAD_PASSPHRASE));
|
2217
|
+
rb_define_const (mGPGME, "GPG_ERR_KEY_EXPIRED",
|
2218
|
+
INT2FIX(GPG_ERR_KEY_EXPIRED));
|
2219
|
+
rb_define_const (mGPGME, "GPG_ERR_SIG_EXPIRED",
|
2220
|
+
INT2FIX(GPG_ERR_SIG_EXPIRED));
|
2221
|
+
rb_define_const (mGPGME, "GPG_ERR_CANCELED",
|
2222
|
+
INT2FIX(GPG_ERR_CANCELED));
|
2223
|
+
rb_define_const (mGPGME, "GPG_ERR_INV_ENGINE",
|
2224
|
+
INT2FIX(GPG_ERR_INV_ENGINE));
|
2225
|
+
rb_define_const (mGPGME, "GPG_ERR_AMBIGUOUS_NAME",
|
2226
|
+
INT2FIX(GPG_ERR_AMBIGUOUS_NAME));
|
2227
|
+
rb_define_const (mGPGME, "GPG_ERR_WRONG_KEY_USAGE",
|
2228
|
+
INT2FIX(GPG_ERR_WRONG_KEY_USAGE));
|
2229
|
+
rb_define_const (mGPGME, "GPG_ERR_CERT_REVOKED",
|
2230
|
+
INT2FIX(GPG_ERR_CERT_REVOKED));
|
2231
|
+
rb_define_const (mGPGME, "GPG_ERR_CERT_EXPIRED",
|
2232
|
+
INT2FIX(GPG_ERR_CERT_EXPIRED));
|
2233
|
+
rb_define_const (mGPGME, "GPG_ERR_NO_CRL_KNOWN",
|
2234
|
+
INT2FIX(GPG_ERR_NO_CRL_KNOWN));
|
2235
|
+
rb_define_const (mGPGME, "GPG_ERR_NO_POLICY_MATCH",
|
2236
|
+
INT2FIX(GPG_ERR_NO_POLICY_MATCH));
|
2237
|
+
rb_define_const (mGPGME, "GPG_ERR_NO_SECKEY",
|
2238
|
+
INT2FIX(GPG_ERR_NO_SECKEY));
|
2239
|
+
rb_define_const (mGPGME, "GPG_ERR_MISSING_CERT",
|
2240
|
+
INT2FIX(GPG_ERR_MISSING_CERT));
|
2241
|
+
rb_define_const (mGPGME, "GPG_ERR_BAD_CERT_CHAIN",
|
2242
|
+
INT2FIX(GPG_ERR_BAD_CERT_CHAIN));
|
2243
|
+
rb_define_const (mGPGME, "GPG_ERR_UNSUPPORTED_ALGORITHM",
|
2244
|
+
INT2FIX(GPG_ERR_UNSUPPORTED_ALGORITHM));
|
2245
|
+
rb_define_const (mGPGME, "GPG_ERR_BAD_SIGNATURE",
|
2246
|
+
INT2FIX(GPG_ERR_BAD_SIGNATURE));
|
2247
|
+
rb_define_const (mGPGME, "GPG_ERR_NO_PUBKEY",
|
2248
|
+
INT2FIX(GPG_ERR_NO_PUBKEY));
|
2249
|
+
|
2250
|
+
/* gpgme_err_source_t */
|
2251
|
+
rb_define_const (mGPGME, "GPG_ERR_SOURCE_UNKNOWN",
|
2252
|
+
INT2FIX(GPG_ERR_SOURCE_UNKNOWN));
|
2253
|
+
rb_define_const (mGPGME, "GPG_ERR_SOURCE_GPGME",
|
2254
|
+
INT2FIX(GPG_ERR_SOURCE_GPGME));
|
2255
|
+
rb_define_const (mGPGME, "GPG_ERR_SOURCE_GPG",
|
2256
|
+
INT2FIX(GPG_ERR_SOURCE_GPG));
|
2257
|
+
rb_define_const (mGPGME, "GPG_ERR_SOURCE_GPGSM",
|
2258
|
+
INT2FIX(GPG_ERR_SOURCE_GPGSM));
|
2259
|
+
rb_define_const (mGPGME, "GPG_ERR_SOURCE_GCRYPT",
|
2260
|
+
INT2FIX(GPG_ERR_SOURCE_GCRYPT));
|
2261
|
+
rb_define_const (mGPGME, "GPG_ERR_SOURCE_GPGAGENT",
|
2262
|
+
INT2FIX(GPG_ERR_SOURCE_GPGAGENT));
|
2263
|
+
rb_define_const (mGPGME, "GPG_ERR_SOURCE_PINENTRY",
|
2264
|
+
INT2FIX(GPG_ERR_SOURCE_PINENTRY));
|
2265
|
+
rb_define_const (mGPGME, "GPG_ERR_SOURCE_SCD",
|
2266
|
+
INT2FIX(GPG_ERR_SOURCE_SCD));
|
2267
|
+
rb_define_const (mGPGME, "GPG_ERR_SOURCE_KEYBOX",
|
2268
|
+
INT2FIX(GPG_ERR_SOURCE_KEYBOX));
|
2269
|
+
rb_define_const (mGPGME, "GPG_ERR_SOURCE_USER_1",
|
2270
|
+
INT2FIX(GPG_ERR_SOURCE_USER_1));
|
2271
|
+
rb_define_const (mGPGME, "GPG_ERR_SOURCE_USER_2",
|
2272
|
+
INT2FIX(GPG_ERR_SOURCE_USER_2));
|
2273
|
+
rb_define_const (mGPGME, "GPG_ERR_SOURCE_USER_3",
|
2274
|
+
INT2FIX(GPG_ERR_SOURCE_USER_3));
|
2275
|
+
rb_define_const (mGPGME, "GPG_ERR_SOURCE_USER_4",
|
2276
|
+
INT2FIX(GPG_ERR_SOURCE_USER_4));
|
2277
|
+
|
2278
|
+
/* gpgme_data_encoding_t */
|
2279
|
+
rb_define_const (mGPGME, "GPGME_DATA_ENCODING_NONE",
|
2280
|
+
INT2FIX(GPGME_DATA_ENCODING_NONE));
|
2281
|
+
rb_define_const (mGPGME, "GPGME_DATA_ENCODING_BINARY",
|
2282
|
+
INT2FIX(GPGME_DATA_ENCODING_BINARY));
|
2283
|
+
rb_define_const (mGPGME, "GPGME_DATA_ENCODING_BASE64",
|
2284
|
+
INT2FIX(GPGME_DATA_ENCODING_BASE64));
|
2285
|
+
rb_define_const (mGPGME, "GPGME_DATA_ENCODING_ARMOR",
|
2286
|
+
INT2FIX(GPGME_DATA_ENCODING_ARMOR));
|
2287
|
+
|
2288
|
+
/* gpgme_sig_stat_t */
|
2289
|
+
rb_define_const (mGPGME, "GPGME_SIG_STAT_NONE",
|
2290
|
+
INT2FIX(GPGME_SIG_STAT_NONE));
|
2291
|
+
rb_define_const (mGPGME, "GPGME_SIG_STAT_GOOD",
|
2292
|
+
INT2FIX(GPGME_SIG_STAT_GOOD));
|
2293
|
+
rb_define_const (mGPGME, "GPGME_SIG_STAT_BAD",
|
2294
|
+
INT2FIX(GPGME_SIG_STAT_BAD));
|
2295
|
+
rb_define_const (mGPGME, "GPGME_SIG_STAT_NOKEY",
|
2296
|
+
INT2FIX(GPGME_SIG_STAT_NOKEY));
|
2297
|
+
rb_define_const (mGPGME, "GPGME_SIG_STAT_NOSIG",
|
2298
|
+
INT2FIX(GPGME_SIG_STAT_NOSIG));
|
2299
|
+
rb_define_const (mGPGME, "GPGME_SIG_STAT_ERROR",
|
2300
|
+
INT2FIX(GPGME_SIG_STAT_ERROR));
|
2301
|
+
rb_define_const (mGPGME, "GPGME_SIG_STAT_DIFF",
|
2302
|
+
INT2FIX(GPGME_SIG_STAT_DIFF));
|
2303
|
+
rb_define_const (mGPGME, "GPGME_SIG_STAT_GOOD_EXP",
|
2304
|
+
INT2FIX(GPGME_SIG_STAT_GOOD_EXP));
|
2305
|
+
rb_define_const (mGPGME, "GPGME_SIG_STAT_GOOD_EXPKEY",
|
2306
|
+
INT2FIX(GPGME_SIG_STAT_GOOD_EXPKEY));
|
2307
|
+
|
2308
|
+
/* gpgme_sigsum_t */
|
2309
|
+
rb_define_const (mGPGME, "GPGME_SIGSUM_VALID",
|
2310
|
+
INT2FIX(GPGME_SIGSUM_VALID));
|
2311
|
+
rb_define_const (mGPGME, "GPGME_SIGSUM_GREEN",
|
2312
|
+
INT2FIX(GPGME_SIGSUM_GREEN));
|
2313
|
+
rb_define_const (mGPGME, "GPGME_SIGSUM_RED",
|
2314
|
+
INT2FIX(GPGME_SIGSUM_RED));
|
2315
|
+
rb_define_const (mGPGME, "GPGME_SIGSUM_KEY_REVOKED",
|
2316
|
+
INT2FIX(GPGME_SIGSUM_KEY_REVOKED));
|
2317
|
+
rb_define_const (mGPGME, "GPGME_SIGSUM_KEY_EXPIRED",
|
2318
|
+
INT2FIX(GPGME_SIGSUM_KEY_EXPIRED));
|
2319
|
+
rb_define_const (mGPGME, "GPGME_SIGSUM_SIG_EXPIRED",
|
2320
|
+
INT2FIX(GPGME_SIGSUM_SIG_EXPIRED));
|
2321
|
+
rb_define_const (mGPGME, "GPGME_SIGSUM_KEY_MISSING",
|
2322
|
+
INT2FIX(GPGME_SIGSUM_KEY_MISSING));
|
2323
|
+
rb_define_const (mGPGME, "GPGME_SIGSUM_CRL_MISSING",
|
2324
|
+
INT2FIX(GPGME_SIGSUM_CRL_MISSING));
|
2325
|
+
rb_define_const (mGPGME, "GPGME_SIGSUM_CRL_TOO_OLD",
|
2326
|
+
INT2FIX(GPGME_SIGSUM_CRL_TOO_OLD));
|
2327
|
+
rb_define_const (mGPGME, "GPGME_SIGSUM_BAD_POLICY",
|
2328
|
+
INT2FIX(GPGME_SIGSUM_BAD_POLICY));
|
2329
|
+
rb_define_const (mGPGME, "GPGME_SIGSUM_SYS_ERROR",
|
2330
|
+
INT2FIX(GPGME_SIGSUM_SYS_ERROR));
|
2331
|
+
|
2332
|
+
/* gpgme_sig_mode_t */
|
2333
|
+
rb_define_const (mGPGME, "GPGME_SIG_MODE_NORMAL",
|
2334
|
+
INT2FIX(GPGME_SIG_MODE_NORMAL));
|
2335
|
+
rb_define_const (mGPGME, "GPGME_SIG_MODE_DETACH",
|
2336
|
+
INT2FIX(GPGME_SIG_MODE_DETACH));
|
2337
|
+
rb_define_const (mGPGME, "GPGME_SIG_MODE_CLEAR",
|
2338
|
+
INT2FIX(GPGME_SIG_MODE_CLEAR));
|
2339
|
+
|
2340
|
+
/* gpgme_attr_t */
|
2341
|
+
rb_define_const (mGPGME, "GPGME_ATTR_KEYID",
|
2342
|
+
INT2FIX(GPGME_ATTR_KEYID));
|
2343
|
+
rb_define_const (mGPGME, "GPGME_ATTR_FPR",
|
2344
|
+
INT2FIX(GPGME_ATTR_FPR));
|
2345
|
+
rb_define_const (mGPGME, "GPGME_ATTR_ALGO",
|
2346
|
+
INT2FIX(GPGME_ATTR_ALGO));
|
2347
|
+
rb_define_const (mGPGME, "GPGME_ATTR_LEN",
|
2348
|
+
INT2FIX(GPGME_ATTR_LEN));
|
2349
|
+
rb_define_const (mGPGME, "GPGME_ATTR_CREATED",
|
2350
|
+
INT2FIX(GPGME_ATTR_CREATED));
|
2351
|
+
rb_define_const (mGPGME, "GPGME_ATTR_EXPIRE",
|
2352
|
+
INT2FIX(GPGME_ATTR_EXPIRE));
|
2353
|
+
rb_define_const (mGPGME, "GPGME_ATTR_OTRUST",
|
2354
|
+
INT2FIX(GPGME_ATTR_OTRUST));
|
2355
|
+
rb_define_const (mGPGME, "GPGME_ATTR_USERID",
|
2356
|
+
INT2FIX(GPGME_ATTR_USERID));
|
2357
|
+
rb_define_const (mGPGME, "GPGME_ATTR_NAME",
|
2358
|
+
INT2FIX(GPGME_ATTR_NAME));
|
2359
|
+
rb_define_const (mGPGME, "GPGME_ATTR_EMAIL",
|
2360
|
+
INT2FIX(GPGME_ATTR_EMAIL));
|
2361
|
+
rb_define_const (mGPGME, "GPGME_ATTR_COMMENT",
|
2362
|
+
INT2FIX(GPGME_ATTR_COMMENT));
|
2363
|
+
rb_define_const (mGPGME, "GPGME_ATTR_VALIDITY",
|
2364
|
+
INT2FIX(GPGME_ATTR_VALIDITY));
|
2365
|
+
rb_define_const (mGPGME, "GPGME_ATTR_LEVEL",
|
2366
|
+
INT2FIX(GPGME_ATTR_LEVEL));
|
2367
|
+
rb_define_const (mGPGME, "GPGME_ATTR_TYPE",
|
2368
|
+
INT2FIX(GPGME_ATTR_TYPE));
|
2369
|
+
rb_define_const (mGPGME, "GPGME_ATTR_IS_SECRET",
|
2370
|
+
INT2FIX(GPGME_ATTR_IS_SECRET));
|
2371
|
+
rb_define_const (mGPGME, "GPGME_ATTR_KEY_REVOKED",
|
2372
|
+
INT2FIX(GPGME_ATTR_KEY_REVOKED));
|
2373
|
+
rb_define_const (mGPGME, "GPGME_ATTR_KEY_INVALID",
|
2374
|
+
INT2FIX(GPGME_ATTR_KEY_INVALID));
|
2375
|
+
rb_define_const (mGPGME, "GPGME_ATTR_UID_REVOKED",
|
2376
|
+
INT2FIX(GPGME_ATTR_UID_REVOKED));
|
2377
|
+
rb_define_const (mGPGME, "GPGME_ATTR_UID_INVALID",
|
2378
|
+
INT2FIX(GPGME_ATTR_UID_INVALID));
|
2379
|
+
rb_define_const (mGPGME, "GPGME_ATTR_KEY_CAPS",
|
2380
|
+
INT2FIX(GPGME_ATTR_KEY_CAPS));
|
2381
|
+
rb_define_const (mGPGME, "GPGME_ATTR_CAN_ENCRYPT",
|
2382
|
+
INT2FIX(GPGME_ATTR_CAN_ENCRYPT));
|
2383
|
+
rb_define_const (mGPGME, "GPGME_ATTR_CAN_SIGN",
|
2384
|
+
INT2FIX(GPGME_ATTR_CAN_SIGN));
|
2385
|
+
rb_define_const (mGPGME, "GPGME_ATTR_CAN_CERTIFY",
|
2386
|
+
INT2FIX(GPGME_ATTR_CAN_CERTIFY));
|
2387
|
+
rb_define_const (mGPGME, "GPGME_ATTR_KEY_EXPIRED",
|
2388
|
+
INT2FIX(GPGME_ATTR_KEY_EXPIRED));
|
2389
|
+
rb_define_const (mGPGME, "GPGME_ATTR_KEY_DISABLED",
|
2390
|
+
INT2FIX(GPGME_ATTR_KEY_DISABLED));
|
2391
|
+
rb_define_const (mGPGME, "GPGME_ATTR_SERIAL",
|
2392
|
+
INT2FIX(GPGME_ATTR_SERIAL));
|
2393
|
+
rb_define_const (mGPGME, "GPGME_ATTR_ISSUER",
|
2394
|
+
INT2FIX(GPGME_ATTR_ISSUER));
|
2395
|
+
rb_define_const (mGPGME, "GPGME_ATTR_CHAINID",
|
2396
|
+
INT2FIX(GPGME_ATTR_CHAINID));
|
2397
|
+
rb_define_const (mGPGME, "GPGME_ATTR_SIG_STATUS",
|
2398
|
+
INT2FIX(GPGME_ATTR_SIG_STATUS));
|
2399
|
+
rb_define_const (mGPGME, "GPGME_ATTR_ERRTOK",
|
2400
|
+
INT2FIX(GPGME_ATTR_ERRTOK));
|
2401
|
+
rb_define_const (mGPGME, "GPGME_ATTR_SIG_SUMMARY",
|
2402
|
+
INT2FIX(GPGME_ATTR_SIG_SUMMARY));
|
2403
|
+
|
2404
|
+
/* gpgme_validity_t */
|
2405
|
+
rb_define_const (mGPGME, "GPGME_VALIDITY_UNKNOWN",
|
2406
|
+
INT2FIX(GPGME_VALIDITY_UNKNOWN));
|
2407
|
+
rb_define_const (mGPGME, "GPGME_VALIDITY_UNDEFINED",
|
2408
|
+
INT2FIX(GPGME_VALIDITY_UNDEFINED));
|
2409
|
+
rb_define_const (mGPGME, "GPGME_VALIDITY_NEVER",
|
2410
|
+
INT2FIX(GPGME_VALIDITY_NEVER));
|
2411
|
+
rb_define_const (mGPGME, "GPGME_VALIDITY_MARGINAL",
|
2412
|
+
INT2FIX(GPGME_VALIDITY_MARGINAL));
|
2413
|
+
rb_define_const (mGPGME, "GPGME_VALIDITY_FULL",
|
2414
|
+
INT2FIX(GPGME_VALIDITY_FULL));
|
2415
|
+
rb_define_const (mGPGME, "GPGME_VALIDITY_ULTIMATE",
|
2416
|
+
INT2FIX(GPGME_VALIDITY_ULTIMATE));
|
2417
|
+
|
2418
|
+
/* gpgme_protocol_t */
|
2419
|
+
rb_define_const (mGPGME, "GPGME_PROTOCOL_OpenPGP",
|
2420
|
+
INT2FIX(GPGME_PROTOCOL_OpenPGP));
|
2421
|
+
rb_define_const (mGPGME, "GPGME_PROTOCOL_CMS",
|
2422
|
+
INT2FIX(GPGME_PROTOCOL_CMS));
|
2423
|
+
/* This protocol was added in 1.2.0. */
|
2424
|
+
#ifdef GPGME_PROTOCOL_ASSUAN
|
2425
|
+
rb_define_const (mGPGME, "GPGME_PROTOCOL_ASSUAN",
|
2426
|
+
INT2FIX(GPGME_PROTOCOL_ASSUAN))
|
2427
|
+
#endif
|
2428
|
+
|
2429
|
+
/* gpgme_status_code_t */
|
2430
|
+
rb_define_const (mGPGME, "GPGME_STATUS_EOF",
|
2431
|
+
INT2FIX(GPGME_STATUS_EOF));
|
2432
|
+
/* mkstatus starts here */
|
2433
|
+
rb_define_const (mGPGME, "GPGME_STATUS_ENTER",
|
2434
|
+
INT2FIX(GPGME_STATUS_ENTER));
|
2435
|
+
rb_define_const (mGPGME, "GPGME_STATUS_LEAVE",
|
2436
|
+
INT2FIX(GPGME_STATUS_LEAVE));
|
2437
|
+
rb_define_const (mGPGME, "GPGME_STATUS_ABORT",
|
2438
|
+
INT2FIX(GPGME_STATUS_ABORT));
|
2439
|
+
|
2440
|
+
rb_define_const (mGPGME, "GPGME_STATUS_GOODSIG",
|
2441
|
+
INT2FIX(GPGME_STATUS_GOODSIG));
|
2442
|
+
rb_define_const (mGPGME, "GPGME_STATUS_BADSIG",
|
2443
|
+
INT2FIX(GPGME_STATUS_BADSIG));
|
2444
|
+
rb_define_const (mGPGME, "GPGME_STATUS_ERRSIG",
|
2445
|
+
INT2FIX(GPGME_STATUS_ERRSIG));
|
2446
|
+
|
2447
|
+
rb_define_const (mGPGME, "GPGME_STATUS_BADARMOR",
|
2448
|
+
INT2FIX(GPGME_STATUS_BADARMOR));
|
2449
|
+
|
2450
|
+
rb_define_const (mGPGME, "GPGME_STATUS_RSA_OR_IDEA",
|
2451
|
+
INT2FIX(GPGME_STATUS_RSA_OR_IDEA));
|
2452
|
+
rb_define_const (mGPGME, "GPGME_STATUS_KEYEXPIRED",
|
2453
|
+
INT2FIX(GPGME_STATUS_KEYEXPIRED));
|
2454
|
+
rb_define_const (mGPGME, "GPGME_STATUS_KEYREVOKED",
|
2455
|
+
INT2FIX(GPGME_STATUS_KEYREVOKED));
|
2456
|
+
|
2457
|
+
rb_define_const (mGPGME, "GPGME_STATUS_TRUST_UNDEFINED",
|
2458
|
+
INT2FIX(GPGME_STATUS_TRUST_UNDEFINED));
|
2459
|
+
rb_define_const (mGPGME, "GPGME_STATUS_TRUST_NEVER",
|
2460
|
+
INT2FIX(GPGME_STATUS_TRUST_NEVER));
|
2461
|
+
rb_define_const (mGPGME, "GPGME_STATUS_TRUST_MARGINAL",
|
2462
|
+
INT2FIX(GPGME_STATUS_TRUST_MARGINAL));
|
2463
|
+
rb_define_const (mGPGME, "GPGME_STATUS_TRUST_FULLY",
|
2464
|
+
INT2FIX(GPGME_STATUS_TRUST_FULLY));
|
2465
|
+
rb_define_const (mGPGME, "GPGME_STATUS_TRUST_ULTIMATE",
|
2466
|
+
INT2FIX(GPGME_STATUS_TRUST_ULTIMATE));
|
2467
|
+
|
2468
|
+
rb_define_const (mGPGME, "GPGME_STATUS_SHM_INFO",
|
2469
|
+
INT2FIX(GPGME_STATUS_SHM_INFO));
|
2470
|
+
rb_define_const (mGPGME, "GPGME_STATUS_SHM_GET",
|
2471
|
+
INT2FIX(GPGME_STATUS_SHM_GET));
|
2472
|
+
rb_define_const (mGPGME, "GPGME_STATUS_SHM_GET_BOOL",
|
2473
|
+
INT2FIX(GPGME_STATUS_SHM_GET_BOOL));
|
2474
|
+
rb_define_const (mGPGME, "GPGME_STATUS_SHM_GET_HIDDEN",
|
2475
|
+
INT2FIX(GPGME_STATUS_SHM_GET_HIDDEN));
|
2476
|
+
|
2477
|
+
rb_define_const (mGPGME, "GPGME_STATUS_NEED_PASSPHRASE",
|
2478
|
+
INT2FIX(GPGME_STATUS_NEED_PASSPHRASE));
|
2479
|
+
rb_define_const (mGPGME, "GPGME_STATUS_VALIDSIG",
|
2480
|
+
INT2FIX(GPGME_STATUS_VALIDSIG));
|
2481
|
+
rb_define_const (mGPGME, "GPGME_STATUS_SIG_ID",
|
2482
|
+
INT2FIX(GPGME_STATUS_SIG_ID));
|
2483
|
+
rb_define_const (mGPGME, "GPGME_STATUS_ENC_TO",
|
2484
|
+
INT2FIX(GPGME_STATUS_ENC_TO));
|
2485
|
+
rb_define_const (mGPGME, "GPGME_STATUS_NODATA",
|
2486
|
+
INT2FIX(GPGME_STATUS_NODATA));
|
2487
|
+
rb_define_const (mGPGME, "GPGME_STATUS_BAD_PASSPHRASE",
|
2488
|
+
INT2FIX(GPGME_STATUS_BAD_PASSPHRASE));
|
2489
|
+
rb_define_const (mGPGME, "GPGME_STATUS_NO_PUBKEY",
|
2490
|
+
INT2FIX(GPGME_STATUS_NO_PUBKEY));
|
2491
|
+
rb_define_const (mGPGME, "GPGME_STATUS_NO_SECKEY",
|
2492
|
+
INT2FIX(GPGME_STATUS_NO_SECKEY));
|
2493
|
+
rb_define_const (mGPGME, "GPGME_STATUS_NEED_PASSPHRASE_SYM",
|
2494
|
+
INT2FIX(GPGME_STATUS_NEED_PASSPHRASE_SYM));
|
2495
|
+
rb_define_const (mGPGME, "GPGME_STATUS_DECRYPTION_FAILED",
|
2496
|
+
INT2FIX(GPGME_STATUS_DECRYPTION_FAILED));
|
2497
|
+
rb_define_const (mGPGME, "GPGME_STATUS_DECRYPTION_OKAY",
|
2498
|
+
INT2FIX(GPGME_STATUS_DECRYPTION_OKAY));
|
2499
|
+
rb_define_const (mGPGME, "GPGME_STATUS_MISSING_PASSPHRASE",
|
2500
|
+
INT2FIX(GPGME_STATUS_MISSING_PASSPHRASE));
|
2501
|
+
rb_define_const (mGPGME, "GPGME_STATUS_GOOD_PASSPHRASE",
|
2502
|
+
INT2FIX(GPGME_STATUS_GOOD_PASSPHRASE));
|
2503
|
+
rb_define_const (mGPGME, "GPGME_STATUS_GOODMDC",
|
2504
|
+
INT2FIX(GPGME_STATUS_GOODMDC));
|
2505
|
+
rb_define_const (mGPGME, "GPGME_STATUS_BADMDC",
|
2506
|
+
INT2FIX(GPGME_STATUS_BADMDC));
|
2507
|
+
rb_define_const (mGPGME, "GPGME_STATUS_ERRMDC",
|
2508
|
+
INT2FIX(GPGME_STATUS_ERRMDC));
|
2509
|
+
rb_define_const (mGPGME, "GPGME_STATUS_IMPORTED",
|
2510
|
+
INT2FIX(GPGME_STATUS_IMPORTED));
|
2511
|
+
rb_define_const (mGPGME, "GPGME_STATUS_IMPORT_RES",
|
2512
|
+
INT2FIX(GPGME_STATUS_IMPORT_RES));
|
2513
|
+
rb_define_const (mGPGME, "GPGME_STATUS_FILE_START",
|
2514
|
+
INT2FIX(GPGME_STATUS_FILE_START));
|
2515
|
+
rb_define_const (mGPGME, "GPGME_STATUS_FILE_DONE",
|
2516
|
+
INT2FIX(GPGME_STATUS_FILE_DONE));
|
2517
|
+
rb_define_const (mGPGME, "GPGME_STATUS_FILE_ERROR",
|
2518
|
+
INT2FIX(GPGME_STATUS_FILE_ERROR));
|
2519
|
+
|
2520
|
+
rb_define_const (mGPGME, "GPGME_STATUS_BEGIN_DECRYPTION",
|
2521
|
+
INT2FIX(GPGME_STATUS_BEGIN_DECRYPTION));
|
2522
|
+
rb_define_const (mGPGME, "GPGME_STATUS_END_DECRYPTION",
|
2523
|
+
INT2FIX(GPGME_STATUS_END_DECRYPTION));
|
2524
|
+
rb_define_const (mGPGME, "GPGME_STATUS_BEGIN_ENCRYPTION",
|
2525
|
+
INT2FIX(GPGME_STATUS_BEGIN_ENCRYPTION));
|
2526
|
+
rb_define_const (mGPGME, "GPGME_STATUS_END_ENCRYPTION",
|
2527
|
+
INT2FIX(GPGME_STATUS_END_ENCRYPTION));
|
2528
|
+
|
2529
|
+
rb_define_const (mGPGME, "GPGME_STATUS_DELETE_PROBLEM",
|
2530
|
+
INT2FIX(GPGME_STATUS_DELETE_PROBLEM));
|
2531
|
+
rb_define_const (mGPGME, "GPGME_STATUS_GET_BOOL",
|
2532
|
+
INT2FIX(GPGME_STATUS_GET_BOOL));
|
2533
|
+
rb_define_const (mGPGME, "GPGME_STATUS_GET_LINE",
|
2534
|
+
INT2FIX(GPGME_STATUS_GET_LINE));
|
2535
|
+
rb_define_const (mGPGME, "GPGME_STATUS_GET_HIDDEN",
|
2536
|
+
INT2FIX(GPGME_STATUS_GET_HIDDEN));
|
2537
|
+
rb_define_const (mGPGME, "GPGME_STATUS_GOT_IT",
|
2538
|
+
INT2FIX(GPGME_STATUS_GOT_IT));
|
2539
|
+
rb_define_const (mGPGME, "GPGME_STATUS_PROGRESS",
|
2540
|
+
INT2FIX(GPGME_STATUS_PROGRESS));
|
2541
|
+
rb_define_const (mGPGME, "GPGME_STATUS_SIG_CREATED",
|
2542
|
+
INT2FIX(GPGME_STATUS_SIG_CREATED));
|
2543
|
+
rb_define_const (mGPGME, "GPGME_STATUS_SESSION_KEY",
|
2544
|
+
INT2FIX(GPGME_STATUS_SESSION_KEY));
|
2545
|
+
rb_define_const (mGPGME, "GPGME_STATUS_NOTATION_NAME",
|
2546
|
+
INT2FIX(GPGME_STATUS_NOTATION_NAME));
|
2547
|
+
rb_define_const (mGPGME, "GPGME_STATUS_NOTATION_DATA",
|
2548
|
+
INT2FIX(GPGME_STATUS_NOTATION_DATA));
|
2549
|
+
rb_define_const (mGPGME, "GPGME_STATUS_POLICY_URL",
|
2550
|
+
INT2FIX(GPGME_STATUS_POLICY_URL));
|
2551
|
+
rb_define_const (mGPGME, "GPGME_STATUS_BEGIN_STREAM",
|
2552
|
+
INT2FIX(GPGME_STATUS_BEGIN_STREAM));
|
2553
|
+
rb_define_const (mGPGME, "GPGME_STATUS_END_STREAM",
|
2554
|
+
INT2FIX(GPGME_STATUS_END_STREAM));
|
2555
|
+
rb_define_const (mGPGME, "GPGME_STATUS_KEY_CREATED",
|
2556
|
+
INT2FIX(GPGME_STATUS_KEY_CREATED));
|
2557
|
+
rb_define_const (mGPGME, "GPGME_STATUS_USERID_HINT",
|
2558
|
+
INT2FIX(GPGME_STATUS_USERID_HINT));
|
2559
|
+
rb_define_const (mGPGME, "GPGME_STATUS_UNEXPECTED",
|
2560
|
+
INT2FIX(GPGME_STATUS_UNEXPECTED));
|
2561
|
+
rb_define_const (mGPGME, "GPGME_STATUS_INV_RECP",
|
2562
|
+
INT2FIX(GPGME_STATUS_INV_RECP));
|
2563
|
+
rb_define_const (mGPGME, "GPGME_STATUS_NO_RECP",
|
2564
|
+
INT2FIX(GPGME_STATUS_NO_RECP));
|
2565
|
+
rb_define_const (mGPGME, "GPGME_STATUS_ALREADY_SIGNED",
|
2566
|
+
INT2FIX(GPGME_STATUS_ALREADY_SIGNED));
|
2567
|
+
rb_define_const (mGPGME, "GPGME_STATUS_SIGEXPIRED",
|
2568
|
+
INT2FIX(GPGME_STATUS_SIGEXPIRED));
|
2569
|
+
rb_define_const (mGPGME, "GPGME_STATUS_EXPSIG",
|
2570
|
+
INT2FIX(GPGME_STATUS_EXPSIG));
|
2571
|
+
rb_define_const (mGPGME, "GPGME_STATUS_EXPKEYSIG",
|
2572
|
+
INT2FIX(GPGME_STATUS_EXPKEYSIG));
|
2573
|
+
rb_define_const (mGPGME, "GPGME_STATUS_TRUNCATED",
|
2574
|
+
INT2FIX(GPGME_STATUS_TRUNCATED));
|
2575
|
+
rb_define_const (mGPGME, "GPGME_STATUS_ERROR",
|
2576
|
+
INT2FIX(GPGME_STATUS_ERROR));
|
2577
|
+
/* These status codes have been available since 1.1.1. */
|
2578
|
+
#ifdef GPGME_STATUS_PKA_TRUST_BAD
|
2579
|
+
rb_define_const (mGPGME, "GPGME_STATUS_PKA_TRUST_BAD",
|
2580
|
+
INT2FIX(GPGME_STATUS_PKA_TRUST_BAD));
|
2581
|
+
rb_define_const (mGPGME, "GPGME_STATUS_PKA_TRUST_GOOD",
|
2582
|
+
INT2FIX(GPGME_STATUS_PKA_TRUST_GOOD));
|
2583
|
+
#endif
|
2584
|
+
|
2585
|
+
/* The available keylist mode flags. */
|
2586
|
+
rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_LOCAL",
|
2587
|
+
INT2FIX(GPGME_KEYLIST_MODE_LOCAL));
|
2588
|
+
rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_EXTERN",
|
2589
|
+
INT2FIX(GPGME_KEYLIST_MODE_EXTERN));
|
2590
|
+
rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_SIGS",
|
2591
|
+
INT2FIX(GPGME_KEYLIST_MODE_SIGS));
|
2592
|
+
/* This flag was added in 1.1.1. */
|
2593
|
+
#ifdef GPGME_KEYLIST_MODE_SIG_NOTATIONS
|
2594
|
+
rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_SIG_NOTATIONS",
|
2595
|
+
INT2FIX(GPGME_KEYLIST_MODE_SIG_NOTATIONS));
|
2596
|
+
#endif
|
2597
|
+
rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_VALIDATE",
|
2598
|
+
INT2FIX(GPGME_KEYLIST_MODE_VALIDATE));
|
2599
|
+
/* This flag was added in 1.2.0. */
|
2600
|
+
#ifdef GPGME_KEYLIST_MODE_EPHEMERAL
|
2601
|
+
rb_define_const (mGPGME, "GPGME_KEYLIST_MODE_EPHEMERAL",
|
2602
|
+
INT2FIX(GPGME_KEYLIST_MODE_EPHEMERAL));
|
2603
|
+
#endif
|
2604
|
+
|
2605
|
+
/* The available flags for status field of gpgme_import_status_t. */
|
2606
|
+
rb_define_const (mGPGME, "GPGME_IMPORT_NEW", INT2FIX(GPGME_IMPORT_NEW));
|
2607
|
+
rb_define_const (mGPGME, "GPGME_IMPORT_UID", INT2FIX(GPGME_IMPORT_UID));
|
2608
|
+
rb_define_const (mGPGME, "GPGME_IMPORT_SIG", INT2FIX(GPGME_IMPORT_SIG));
|
2609
|
+
rb_define_const (mGPGME, "GPGME_IMPORT_SUBKEY",
|
2610
|
+
INT2FIX(GPGME_IMPORT_SUBKEY));
|
2611
|
+
rb_define_const (mGPGME, "GPGME_IMPORT_SECRET",
|
2612
|
+
INT2FIX(GPGME_IMPORT_SECRET));
|
2613
|
+
|
2614
|
+
/* The available flags for gpgme_op_encrypt. */
|
2615
|
+
rb_define_const (mGPGME, "GPGME_ENCRYPT_ALWAYS_TRUST",
|
2616
|
+
INT2FIX(GPGME_ENCRYPT_ALWAYS_TRUST));
|
2617
|
+
/* This flag was added in 1.2.0. */
|
2618
|
+
#ifdef GPGME_ENCRYPT_NO_ENCRYPT_TO
|
2619
|
+
rb_define_const (mGPGME, "GPGME_ENCRYPT_NO_ENCRYPT_TO",
|
2620
|
+
INT2FIX(GPGME_ENCRYPT_NO_ENCRYPT_TO));
|
2621
|
+
#endif
|
2622
|
+
}
|