gpgme 2.0.18 → 2.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/lib/gpgme/ctx.rb +2 -2
- data/lib/gpgme/data.rb +10 -2
- data/lib/gpgme/key.rb +13 -1
- data/lib/gpgme/version.rb +1 -1
- data/test/crypto_test.rb +5 -0
- data/test/ctx_test.rb +25 -0
- data/test/files/testkey_pub_invalid.gpg +52 -0
- data/test/key_test.rb +20 -4
- data/test/pinentry +22 -0
- data/test/sub_key_test.rb +5 -2
- data/test/support/resources.rb +30 -0
- data/test/test_helper.rb +6 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 85da3b0448319c6fd01c1004e64b2dc9956bc162
|
4
|
+
data.tar.gz: 843c3a9d2d6dc2c22e88c97fda497c36fc107f9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c7e91e339472d57de455c3e3f38fc37f7fcdfaf0cd003053eca160f48e4c459ddfa09c4d559fa6aaaef2596da5be450114986539ea6168a25802c852bd95065
|
7
|
+
data.tar.gz: dc5de7e968adea666fc353be5e7368b7087fbccc4d301fb07aacba0d22ba309cb5256269118c69b8565bd721c872fdf89cf217c988f523dcbf7919b445d3c7e0
|
data/lib/gpgme/ctx.rb
CHANGED
@@ -370,8 +370,8 @@ module GPGME
|
|
370
370
|
#
|
371
371
|
# If passed, the key will be exported to +keydata+, which must be
|
372
372
|
# a {GPGME::Data} object.
|
373
|
-
def export_keys(recipients, keydata = Data.new)
|
374
|
-
err = GPGME::gpgme_op_export(self, recipients,
|
373
|
+
def export_keys(recipients, keydata = Data.new, mode=0)
|
374
|
+
err = GPGME::gpgme_op_export(self, recipients, mode, keydata)
|
375
375
|
exc = GPGME::error_to_exception(err)
|
376
376
|
raise exc if exc
|
377
377
|
keydata
|
data/lib/gpgme/data.rb
CHANGED
@@ -165,8 +165,16 @@ module GPGME
|
|
165
165
|
end
|
166
166
|
|
167
167
|
##
|
168
|
-
# Sets the encoding for this buffer. Accepts only values
|
169
|
-
#
|
168
|
+
# Sets the encoding for this buffer. Accepts only integer values 0 to 7:
|
169
|
+
#
|
170
|
+
# 0 = GPGME_DATA_ENCODING_NONE (Not specified)
|
171
|
+
# 1 = GPGME_DATA_ENCODING_BINARY
|
172
|
+
# 2 = GPGME_DATA_ENCODING_BASE64
|
173
|
+
# 3 = GPGME_DATA_ENCODING_ARMOR (Either PEM or OpenPGP Armor)
|
174
|
+
# 4 = GPGME_DATA_ENCODING_URL (LF delimited URL list)
|
175
|
+
# 5 = GPGME_DATA_ENCODING_URLESC (Ditto, but percent escaped)
|
176
|
+
# 6 = GPGME_DATA_ENCODING_URL0 (Nul delimited URL list)
|
177
|
+
# 7 = GPGME_DATA_ENCODING_MIME (Data is a MIME part)
|
170
178
|
#
|
171
179
|
# @raise [GPGME::Error::InvalidValue] if the value isn't accepted.
|
172
180
|
def encoding=(encoding)
|
data/lib/gpgme/key.rb
CHANGED
@@ -81,6 +81,7 @@ module GPGME
|
|
81
81
|
# @param [Hash] options
|
82
82
|
# * +:output+ specify where to write the key to. It will be converted to
|
83
83
|
# a {GPGME::Data}, so it could be a file, for example.
|
84
|
+
# * +:minimal+ set to true to let the export mode be 'minimal'.
|
84
85
|
# * Any other option accepted by {GPGME::Ctx.new}
|
85
86
|
#
|
86
87
|
# @return [GPGME::Data] the exported key.
|
@@ -94,9 +95,14 @@ module GPGME
|
|
94
95
|
#
|
95
96
|
def export(pattern, options = {})
|
96
97
|
output = Data.new(options[:output])
|
98
|
+
if options.delete(:minimal) == true
|
99
|
+
export_mode = 4
|
100
|
+
else
|
101
|
+
export_mode = 0
|
102
|
+
end
|
97
103
|
|
98
104
|
GPGME::Ctx.new(options) do |ctx|
|
99
|
-
ctx.export_keys(pattern, output)
|
105
|
+
ctx.export_keys(pattern, output, export_mode)
|
100
106
|
end
|
101
107
|
|
102
108
|
output.seek(0)
|
@@ -122,6 +128,12 @@ module GPGME
|
|
122
128
|
ctx.import_result
|
123
129
|
end
|
124
130
|
end
|
131
|
+
|
132
|
+
# Checks if a key is valid
|
133
|
+
def valid?(key)
|
134
|
+
GPGME::Key.import(key).considered == 1
|
135
|
+
end
|
136
|
+
|
125
137
|
end
|
126
138
|
|
127
139
|
##
|
data/lib/gpgme/version.rb
CHANGED
data/test/crypto_test.rb
CHANGED
@@ -128,6 +128,11 @@ describe GPGME::Crypto do
|
|
128
128
|
end
|
129
129
|
|
130
130
|
describe "symmetric encryption/decryption" do
|
131
|
+
before do
|
132
|
+
info = GPGME::Engine.info.first
|
133
|
+
skip if /\A2\.[01]|\A1\./ === info.version
|
134
|
+
end
|
135
|
+
|
131
136
|
it "requires a password to encrypt" do
|
132
137
|
assert_raises GPGME::Error::BadPassphrase do
|
133
138
|
GPGME::Crypto.new.encrypt TEXT[:plain], :symmetric => true
|
data/test/ctx_test.rb
CHANGED
@@ -27,6 +27,11 @@ describe GPGME::Ctx do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
describe :new do
|
30
|
+
before do
|
31
|
+
info = GPGME::Engine.info.first
|
32
|
+
skip if /\A2\.[01]|\A1\./ === info.version
|
33
|
+
end
|
34
|
+
|
30
35
|
# We consider :armor, :protocol, :textmode and :keylist_mode as tested
|
31
36
|
# with the other tests of this file. Here we test the rest
|
32
37
|
|
@@ -399,6 +404,26 @@ RUBY
|
|
399
404
|
import_keys # If the test fails for some reason, it won't break others.
|
400
405
|
end
|
401
406
|
|
407
|
+
it "exports a minimal key if given the mode" do
|
408
|
+
remove_all_keys
|
409
|
+
GPGME::Key.import(KEY_WITH_SIGNATURE[:public])
|
410
|
+
key = GPGME::Key.find(KEY_WITH_SIGNATURE[:sha]).first
|
411
|
+
output_normal = GPGME::Data.new
|
412
|
+
output_minimal = GPGME::Data.new
|
413
|
+
ctx = GPGME::Ctx.new
|
414
|
+
|
415
|
+
ctx.export_keys(key.sha, output_normal)
|
416
|
+
ctx.export_keys(key.sha, output_minimal, 4)
|
417
|
+
|
418
|
+
output_normal.seek(0)
|
419
|
+
output_minimal.seek(0)
|
420
|
+
|
421
|
+
assert_equal output_normal.read.size, 849
|
422
|
+
assert_equal output_minimal.read.size, 668
|
423
|
+
|
424
|
+
import_keys # If the test fails for some reason, it won't break others.
|
425
|
+
end
|
426
|
+
|
402
427
|
it "exports only one key" do
|
403
428
|
original_keys = GPGME::Key.find(:public)
|
404
429
|
key = original_keys.first
|
@@ -0,0 +1,52 @@
|
|
1
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
2
|
+
Version: GnuPG v1.4.11 (Darwin)
|
3
|
+
|
4
|
+
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
|
38
|
+
VxCd5t3Exzi+3ZOOTJnECMABZc6lK7rIOiQHHLW6vHIy5MggT/Dz6NuQuT9ID2uO
|
39
|
+
wzx6w9XMdRXJ0uuEJlhTZtcjlKu+B8i9hHgj1zqNT67Zkkz0/YTVHtNYDpOzjc7A
|
40
|
+
c+m/Qok/ERUjVcYS6dIJnJU+3V4L5APTAAMFC/sHCYUR5oa/uCktq//r09xRc/bu
|
41
|
+
4uuzNJvsLzHcUA4udFSq2AneqrH/HCkrE0G4U79GMVpSddb+IamNWgJwfk4YHfNV
|
42
|
+
Vx2NhAWoCAIve0q+ueXGTGKkHyb0QobT/AmM/4Mtuln7cUfrkEmI8N8YIwPDqCGz
|
43
|
+
rWxvoPaOSUSxNfkyrV6IX8vjotx3NKm9n/6f5l/ncDrNSNruSywMq0fiLYS1+bCb
|
44
|
+
jsrTfWJKcM284ZwazKgcuhcCkXombkNQtQv7uD8FveWNVhC+LXtsyLGrzFNJVbNr
|
45
|
+
khKYfUFyoMY50PdvF4Ai1uJ0IYXQvIPnHbxPXMWa5PezrTWzlIXaVvVfgypC/tCY
|
46
|
+
p1QgiS+ln60NoK1m2ZFrUO3rklM44L1BNO9qjrUjYFVlmRd+qEBoXWGJLFp1g7Nh
|
47
|
+
1mijiKdrwmCzWsnRSmPRYtOujeojP8bH4ca9RekwqLbRVeX/dLi02GD0pOp6SI6B
|
48
|
+
Bk3J0Wzp2Ko47Vj8v03hdBozKZT93a4NeyrNZdiIYQQYEQgACQUCTW05ZgIbDAAK
|
49
|
+
CRDLUpBCN9v3ISGmAP0VXwY7BH81NRpwAYp/eeSGP1vxBCdqVAHMc4o3TUoWHAEA
|
50
|
+
vioivJ/Qvnb7nlHwagl5rLNXhiz/H71jmFS9x0x7FLg=
|
51
|
+
=T/Ce
|
52
|
+
-----END PGP PUBLIC KEY BLOCK-----
|
data/test/key_test.rb
CHANGED
@@ -66,13 +66,13 @@ describe GPGME::Key do
|
|
66
66
|
# Testing the lazy way with expectations. I think tests in
|
67
67
|
# the Ctx class are enough.
|
68
68
|
it "exports any key that matches the pattern" do
|
69
|
-
GPGME::Ctx.any_instance.expects(:export_keys).with("", anything)
|
69
|
+
GPGME::Ctx.any_instance.expects(:export_keys).with("", anything, 0)
|
70
70
|
GPGME::Key.export("")
|
71
71
|
end
|
72
72
|
|
73
73
|
it "exports any key that matches the pattern, can specify output" do
|
74
74
|
data = GPGME::Data.new
|
75
|
-
GPGME::Ctx.any_instance.expects(:export_keys).with("wadus", data)
|
75
|
+
GPGME::Ctx.any_instance.expects(:export_keys).with("wadus", data, 0)
|
76
76
|
ret = GPGME::Key.export("wadus", :output => data)
|
77
77
|
assert_equal data, ret
|
78
78
|
end
|
@@ -81,6 +81,11 @@ describe GPGME::Key do
|
|
81
81
|
GPGME::Ctx.expects(:new).with(:armor => true).yields(mock(:export_keys => true))
|
82
82
|
GPGME::Key.export("wadus", :armor => true)
|
83
83
|
end
|
84
|
+
|
85
|
+
it "can export a minimal key" do
|
86
|
+
GPGME::Ctx.any_instance.expects(:export_keys).with("wadus", anything, 4)
|
87
|
+
GPGME::Key.export("wadus", :minimal => true)
|
88
|
+
end
|
84
89
|
end
|
85
90
|
|
86
91
|
describe "#export" do
|
@@ -180,7 +185,7 @@ describe GPGME::Key do
|
|
180
185
|
|
181
186
|
with_key EXPIRED_KEY do
|
182
187
|
key = GPGME::Key.find(:secret, EXPIRED_KEY[:sha]).first
|
183
|
-
assert key.expired
|
188
|
+
assert key.expired if key
|
184
189
|
end
|
185
190
|
end
|
186
191
|
|
@@ -199,6 +204,18 @@ describe GPGME::Key do
|
|
199
204
|
end
|
200
205
|
end
|
201
206
|
|
207
|
+
describe :valid? do
|
208
|
+
it "returns true on a valid key" do
|
209
|
+
valid_key = File.read("test/files/testkey_pub.gpg")
|
210
|
+
assert GPGME::Key.valid?(valid_key)
|
211
|
+
end
|
212
|
+
|
213
|
+
it "returns false on an invalid key" do
|
214
|
+
invalid_key = File.read("test/files/testkey_pub_invalid.gpg")
|
215
|
+
assert !GPGME::Key.valid?(invalid_key)
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
202
219
|
describe :to_s do
|
203
220
|
it "can be coerced into a String" do
|
204
221
|
key = GPGME::Key.find(:secret).first
|
@@ -206,4 +223,3 @@ describe GPGME::Key do
|
|
206
223
|
end
|
207
224
|
end
|
208
225
|
end
|
209
|
-
|
data/test/pinentry
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
#! /bin/bash
|
2
|
+
# Dummy pinentry
|
3
|
+
#
|
4
|
+
# Copyright 2008 g10 Code GmbH
|
5
|
+
#
|
6
|
+
# This file is free software; as a special exception the author gives
|
7
|
+
# unlimited permission to copy and/or distribute it, with or without
|
8
|
+
# modifications, as long as this notice is preserved.
|
9
|
+
#
|
10
|
+
# This file is distributed in the hope that it will be useful, but
|
11
|
+
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
12
|
+
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
13
|
+
# PURPOSE.
|
14
|
+
|
15
|
+
echo OK Your orders please
|
16
|
+
|
17
|
+
while read cmd; do
|
18
|
+
case $cmd in
|
19
|
+
GETPIN) echo D gpgme; echo OK;;
|
20
|
+
*) echo OK;;
|
21
|
+
esac
|
22
|
+
done
|
data/test/sub_key_test.rb
CHANGED
@@ -26,8 +26,11 @@ describe GPGME::SubKey do
|
|
26
26
|
refute subkey.expired
|
27
27
|
|
28
28
|
with_key EXPIRED_KEY do
|
29
|
-
|
30
|
-
|
29
|
+
key = GPGME::Key.find(:secret, EXPIRED_KEY[:sha]).first
|
30
|
+
if key
|
31
|
+
subkey = key.primary_subkey
|
32
|
+
assert subkey.expired
|
33
|
+
end
|
31
34
|
end
|
32
35
|
end
|
33
36
|
|
data/test/support/resources.rb
CHANGED
@@ -386,6 +386,31 @@ HyEbgNA=
|
|
386
386
|
-----END PGP PRIVATE KEY BLOCK-----
|
387
387
|
RUBY
|
388
388
|
|
389
|
+
key_with_signature = <<-RUBY
|
390
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
391
|
+
|
392
|
+
mI0ETbL4sAEEANBs/WsOxRCLdsW1h8LKGT6eJpAs6omGV/G7TJnMsk92BUIub3oZ
|
393
|
+
9oRC1L0l4EKB6o8/vULziT815dbbVxwQIOyDXEqP4sokRxjSNNkpPb+RuIjdmP6e
|
394
|
+
SJ2NxCxV/GxLhjZZTHG5SPH4Gei3TtdiHMHoar0rwEcVdS693K/6Ww8ZABEBAAG0
|
395
|
+
IVRlc3QgbnVtYmVyIDEgPHRlc3QxQGV4YW1wbGUuY29tPoi4BBMBAgAiBQJNsviw
|
396
|
+
AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRD7yLd2W11cdyxOA/4gPEK1
|
397
|
+
qF8bp0YJfc91Ob/J70N5gNuO06AeBa8o6MHTUheCp5CMFD8RISDegsiYey3O+Wvk
|
398
|
+
rg+BmIQWqGTglDIDOM8B1Bmc+T+C0sRwIwmHqDo5a9mR2QnlcFqZ3SNV5MdxDUa4
|
399
|
+
GJk4LbUj/JwU2nR8Z4eA7OC1LjOexFKAfLX654izBBABCAAdFiEEVsoxCW7JMuDZ
|
400
|
+
Ydv9OSviynfWZWYFAl1ziQcACgkQOSviynfWZWYScwP/a/shuIWvLCZLllW0YWy8
|
401
|
+
NUPgTZ4TnJogOp4zm9+uNla9GJepM1Wj7+m1ZNzXskqESoAB00k2dYOGwek0hPHp
|
402
|
+
1MwpcMJvAu7m+LrfGVcG6IAkjQWvifsP8QIe05yNW3jsK+qQJpy1dejzgaHt7dLL
|
403
|
+
/rS6ySBxhIvpo5tsfe+C8PO4jQRNsviwAQQAvVKqiSoVA6oQ8nT3zLEGDgNeED3M
|
404
|
+
fHMeYbFMi7GTpvURsTXcPH0SLXzGVn8Aevaa+ConFWMQuWMsTPiqVQR6/kKE8RJ/
|
405
|
+
ynDHbnXuOGNdOBd96GdsIgqTMwrtWVvzhSKFrhDB1y8iFyQ9QlVTJG4jo8EcaN6L
|
406
|
+
T0hoo64XJktD5CUAEQEAAYifBBgBAgAJBQJNsviwAhsMAAoJEPvIt3ZbXVx3X/8E
|
407
|
+
AIiCsyWlIOUvhFN5a/V2TyA2XjXEKSn9iWi7uLhVT7ShrWSGGhdNBwiqJuDh5KxX
|
408
|
+
3VXa9fePMXrfbALdj1fRqCAFfKZAcKrNNls+psSaYLJwLhCUzD8Ht9M+LrGeZDPz
|
409
|
+
wzAqTfgPb5M2Inssarr5Lpdlu1X8y37cfNVHscqBZyfS
|
410
|
+
=KOQt
|
411
|
+
-----END PGP PUBLIC KEY BLOCK-----
|
412
|
+
RUBY
|
413
|
+
|
389
414
|
encrypted_text = <<-RUBY
|
390
415
|
-----BEGIN PGP MESSAGE-----
|
391
416
|
Version: GnuPG v1.4.11 (Darwin)
|
@@ -506,6 +531,11 @@ EXPIRED_KEY = {
|
|
506
531
|
:secret => expired_key_secret
|
507
532
|
}
|
508
533
|
|
534
|
+
KEY_WITH_SIGNATURE = {
|
535
|
+
:sha => 'test1@example.com',
|
536
|
+
:public => key_with_signature
|
537
|
+
}
|
538
|
+
|
509
539
|
TEXT = {
|
510
540
|
:plain => "Hi there",
|
511
541
|
:encrypted => encrypted_text.chomp,
|
data/test/test_helper.rb
CHANGED
@@ -99,11 +99,17 @@ def ensure_keys(proto)
|
|
99
99
|
# We use a different home directory for the keys to not disturb current
|
100
100
|
# installation
|
101
101
|
require 'tmpdir'
|
102
|
+
require 'pathname'
|
102
103
|
|
103
104
|
if DIRS.empty?
|
104
105
|
dir = Dir.mktmpdir
|
105
106
|
GPGME::Engine.home_dir = dir
|
106
107
|
DIRS.push(dir)
|
108
|
+
pinentry = Pathname.new(__FILE__).dirname + 'pinentry'
|
109
|
+
gpg_agent_conf = Pathname.new(dir) + 'gpg-agent.conf'
|
110
|
+
gpg_agent_conf.open('w+') {|io|
|
111
|
+
io.write("pinentry-program #{pinentry}\n")
|
112
|
+
}
|
107
113
|
remove_all_keys
|
108
114
|
import_keys
|
109
115
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gpgme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daiki Ueno
|
@@ -141,9 +141,11 @@ files:
|
|
141
141
|
- test/ctx_test.rb
|
142
142
|
- test/data_test.rb
|
143
143
|
- test/files/testkey_pub.gpg
|
144
|
+
- test/files/testkey_pub_invalid.gpg
|
144
145
|
- test/files/testkey_sec.gpg
|
145
146
|
- test/gpgme_test.rb
|
146
147
|
- test/key_test.rb
|
148
|
+
- test/pinentry
|
147
149
|
- test/signature_test.rb
|
148
150
|
- test/sub_key_test.rb
|
149
151
|
- test/support/resources.rb
|
@@ -169,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
169
171
|
version: '0'
|
170
172
|
requirements: []
|
171
173
|
rubyforge_project: ruby-gpgme
|
172
|
-
rubygems_version: 2.
|
174
|
+
rubygems_version: 2.6.14.3
|
173
175
|
signing_key:
|
174
176
|
specification_version: 4
|
175
177
|
summary: Ruby binding of GPGME.
|