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