dotenv-gpg 0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +33 -0
- data/README.md +132 -0
- data/Rakefile +7 -0
- data/bin/dotgpg +5 -0
- data/dotenv-gpg.gemspec +22 -0
- data/lib/dotgpg.rb +96 -0
- data/lib/dotgpg/cli.rb +194 -0
- data/lib/dotgpg/dir.rb +220 -0
- data/lib/dotgpg/key.rb +105 -0
- data/lib/dotgpg/template/README.md +20 -0
- data/spec/cli_spec.rb +255 -0
- data/spec/dir_spec.rb +214 -0
- data/spec/fixture/add1.key +30 -0
- data/spec/fixture/add2.key +30 -0
- data/spec/fixture/add3.key +30 -0
- data/spec/fixture/basic/.gpg/removed1@example.com +30 -0
- data/spec/fixture/basic/.gpg/removed2@example.com +30 -0
- data/spec/fixture/basic/.gpg/removed3@example.com +0 -0
- data/spec/fixture/basic/.gpg/test2@example.com +31 -0
- data/spec/fixture/basic/.gpg/test3@example.com +31 -0
- data/spec/fixture/basic/.gpg/test@example.com +31 -0
- data/spec/fixture/basic/README.md +28 -0
- data/spec/fixture/basic/a +47 -0
- data/spec/fixture/basic/b/c +47 -0
- data/spec/fixture/gnupghome/pubring.gpg +0 -0
- data/spec/fixture/gnupghome/pubring.gpg~ +0 -0
- data/spec/fixture/gnupghome/random_seed +0 -0
- data/spec/fixture/gnupghome/secring.gpg +0 -0
- data/spec/fixture/gnupghome/trustdb.gpg +0 -0
- data/spec/fixture/secret1.key +31 -0
- data/spec/helper.rb +19 -0
- data/spec/helper/assertions.rb +54 -0
- metadata +136 -0
data/spec/dir_spec.rb
ADDED
@@ -0,0 +1,214 @@
|
|
1
|
+
require "./spec/helper"
|
2
|
+
|
3
|
+
describe Dotgpg::Dir do
|
4
|
+
before do
|
5
|
+
@dir = Dotgpg::Dir.new($basic)
|
6
|
+
end
|
7
|
+
|
8
|
+
describe ".closest" do
|
9
|
+
it "should find the current directory" do
|
10
|
+
Dir.chdir $basic do
|
11
|
+
assert_equal @dir, Dotgpg::Dir.closest(".")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should find a specified directory" do
|
16
|
+
assert_equal @dir, Dotgpg::Dir.closest($basic)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should find the directory containing the given file" do
|
20
|
+
assert_equal @dir, Dotgpg::Dir.closest($basic + "a")
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should find the ancestor of the directory containing the given file" do
|
24
|
+
assert_equal @dir, Dotgpg::Dir.closest($basic + "b" + "c")
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should not find a directory that does not exist" do
|
28
|
+
assert_nil Dotgpg::Dir.closest("/tmp")
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should not find a directory that only some of the files are in" do
|
32
|
+
assert_equal nil, Dotgpg::Dir.closest($basic, "/tmp")
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should find a directory that all of the files are in" do
|
36
|
+
assert_equal @dir, Dotgpg::Dir.closest($basic, $basic + "a", $basic + "b" + "c")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "dotgpg?" do
|
41
|
+
it 'should be true in a directory managed by dotgpg' do
|
42
|
+
assert_equal true, @dir.dotgpg?
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should not be true in a random directory' do
|
46
|
+
assert_equal false, Dotgpg::Dir.new(".").dotgpg?
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should not be true in a directory that doesn't exist" do
|
50
|
+
assert_equal false, Dotgpg::Dir.new(rand.to_s).dotgpg?
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "known_keys" do
|
55
|
+
before do
|
56
|
+
@keys = @dir.known_keys
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should return private keys in the truststore" do
|
60
|
+
assert_includes @keys, GPGME::Key.find(:secret, "test@example.com").first
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should return public keys not yet in the truststore" do
|
64
|
+
assert_includes @keys.map(&:email), "test2@example.com"
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should return public keys in the truststore" do
|
68
|
+
assert_includes @keys.map(&:email), "test2@example.com"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "all_encrypted_files" do
|
73
|
+
before do
|
74
|
+
@files = @dir.all_encrypted_files
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should find files in the top-level" do
|
78
|
+
assert_includes @files, $basic + "a"
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should find files in sub-directories" do
|
82
|
+
assert_includes @files, $basic + "b" + "c"
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should not find unencrypted files" do
|
86
|
+
readme = $basic + "README.md"
|
87
|
+
assert readme.exist?
|
88
|
+
refute_includes @files, $basic + "README.md"
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should not find files through symlinks" do
|
92
|
+
duplicate_a = $basic + "c" + "basic" + "a"
|
93
|
+
assert duplicate_a.exist?
|
94
|
+
refute_includes @files, duplicate_a
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe "decrypt" do
|
99
|
+
before do
|
100
|
+
Dotgpg.passphrase = "test"
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should be able to decrypt files for which the secret is known" do
|
104
|
+
s = StringIO.new
|
105
|
+
@dir.decrypt $basic + "a", s
|
106
|
+
s.rewind
|
107
|
+
assert_equal "Test\n", s.read
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should warn if the file cannot be read" do
|
111
|
+
assert_warns "#{$basic + "404"}: No such file or directory" do
|
112
|
+
@dir.decrypt $basic + "404", StringIO.new
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should warn if the file cannot be decrypted" do
|
117
|
+
assert_warns "#{$basic + "README.md"}: No data" do
|
118
|
+
@dir.decrypt $basic + "README.md", StringIO.new
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should raise on bad passphrase" do
|
123
|
+
Dotgpg.passphrase = 'wrong'
|
124
|
+
assert_raises GPGME::Error::BadPassphrase do
|
125
|
+
assert_warns nil do
|
126
|
+
@dir.decrypt $basic + "a", StringIO.new
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
describe "encrypt" do
|
133
|
+
before do
|
134
|
+
Dotgpg.passphrase = 'test'
|
135
|
+
end
|
136
|
+
|
137
|
+
after do
|
138
|
+
FileUtils.rm_f $basic + "test-armor"
|
139
|
+
FileUtils.rm_f $basic + "test-recipients"
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should armor files" do
|
143
|
+
@dir.encrypt $basic + "test-armor", 'test'
|
144
|
+
assert_match(/-----BEGIN PGP MESSAGE-----/, File.read($basic + "test-armor"))
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should encrypt files to all recipients" do
|
148
|
+
@dir.encrypt $basic + "test-recipients", 'test'
|
149
|
+
|
150
|
+
["D1B8548C844F4881", "54907534D1B5A86B", "8490321363F14C03"].each do |keyid|
|
151
|
+
assert_contains_keyid keyid, File.read($basic + "test-recipients")
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
describe "add_key" do
|
157
|
+
before do
|
158
|
+
Dotgpg.passphrase = 'test'
|
159
|
+
end
|
160
|
+
|
161
|
+
it "should create the file in the .gpg directory" do
|
162
|
+
add1 = Dotgpg::Key.read $fixture + "add1.key"
|
163
|
+
refute $basic.join(".gpg", "add1@example.com").exist?
|
164
|
+
@dir.add_key add1
|
165
|
+
assert $basic.join(".gpg", "add1@example.com").exist?
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should add the key as a recipient on all the files" do
|
169
|
+
add2 = Dotgpg::Key.read $fixture + "add2.key"
|
170
|
+
refute_contains_keyid add2.subkeys.last.keyid, File.read($basic + "a")
|
171
|
+
@dir.add_key add2
|
172
|
+
assert_contains_keyid add2.subkeys.last.keyid, File.read($basic + "a")
|
173
|
+
end
|
174
|
+
|
175
|
+
it "should not add the key if re-encryption fails" do
|
176
|
+
Dotgpg.passphrase = 'wrong'
|
177
|
+
add3 = Dotgpg::Key.read $fixture + "add3.key"
|
178
|
+
assert_raises GPGME::Error::BadPassphrase do
|
179
|
+
@dir.add_key add3
|
180
|
+
end
|
181
|
+
refute $basic.join(".gpg", "add3@example.com").exist?
|
182
|
+
refute_contains_keyid add3.subkeys.last.keyid, File.read($basic + "a")
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
describe "remove_key" do
|
187
|
+
before do
|
188
|
+
Dotgpg.passphrase = 'test'
|
189
|
+
end
|
190
|
+
|
191
|
+
it "should remove the file from the .gpg directory" do
|
192
|
+
removed1 = Dotgpg::Key.read $basic.join(".gpg", "removed1@example.com")
|
193
|
+
assert $basic.join(".gpg", "removed1@example.com").exist?
|
194
|
+
@dir.remove_key removed1
|
195
|
+
refute $basic.join(".gpg", "removed1@example.com").exist?
|
196
|
+
end
|
197
|
+
|
198
|
+
it "should remove the key as a recipient from all the files" do
|
199
|
+
removed2 = Dotgpg::Key.read $basic.join(".gpg", "removed2@example.com")
|
200
|
+
assert_contains_keyid removed2.subkeys.last.keyid, File.read($basic + "a")
|
201
|
+
@dir.remove_key removed2
|
202
|
+
refute_contains_keyid removed2.subkeys.last.keyid, File.read($basic + "a")
|
203
|
+
end
|
204
|
+
|
205
|
+
it "should not remove the key if re-encryption fails" do
|
206
|
+
Dotgpg.passphrase = 'wrong'
|
207
|
+
removed3 = Dotgpg::Key.read $basic.join(".gpg", "removed3@example.com")
|
208
|
+
assert_raises GPGME::Error::BadPassphrase do
|
209
|
+
@dir.add_key removed3
|
210
|
+
end
|
211
|
+
assert $basic.join(".gpg", "removed3@example.com").exist?
|
212
|
+
end
|
213
|
+
end
|
214
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
2
|
+
Version: GnuPG v1.4.14 (Darwin)
|
3
|
+
|
4
|
+
mQENBFK0Y90BCACviwZ41UPrwLzFv+g4MhWFGIA94N1wzIn3py1+e4mGE8nWMhr4
|
5
|
+
6P2nyxO3jI4ipEXnRwhB04phMNsQELWevHg5vS6ltjwiBKQa7S6+qRSBuckdt1vx
|
6
|
+
oPI4ZTdeHG1rlYlT2dG/64J8hh7UonzZAV97uNOwIRS7INJuF6TQvPMg9DhI4VjH
|
7
|
+
mE6GYYPBB9mBUw/g6PL0rBoOIs4A4nlOD4n7Uv9Pcq4IXWQUMV/Wpnhtxu3W9j3W
|
8
|
+
p6NSTeP6uCwUiYU6e1bVwYX8zTIjYXMS1SiYzZqEjoVndD+XZAEAb4z+8+6jK3NT
|
9
|
+
G6uSAzIdbUQNq+AdIBLZr7oQgwmlnBFdSbj1ABEBAAG0KkFkZCAxIChLZXkgdG8g
|
10
|
+
YmUgYWRkZWQpIDxhZGQxQGV4YW1wbGUuY29tPokBOAQTAQIAIgUCUrRj3QIbAwYL
|
11
|
+
CQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQMrCM4coW1vDfOggAnRxpSc3fZGet
|
12
|
+
ANBSkIcWL/4h4KF0fU9AL7wJfbb1Z/ps3qe3CfVg+L9PL6nk/pi1dIQAaKwrZQQz
|
13
|
+
TCPC2cYTdLKeBqr7frsOY8dC0vUFbXgAD9r5ELWeXmcaAXH2qrtITY3ELCAGObnh
|
14
|
+
bUlfio0CU3T8PPAI6Pvs0DnuRso7UKx+eW2ZKZG7mVowdYSWvfAWGv3tPDhNNjG/
|
15
|
+
UhCOoHpYcAu6HvTJkONtj5r+xtMTb4FM+YmNc1gevrhCi+O4QFym62q3TvMLeDXw
|
16
|
+
IC3eHFOGqKQQHxq8+LzYhHY/7xdgosq9znVkrjFVIF/hCducAjqtOzTunlofDQ6o
|
17
|
+
BNOsbGCzKbkBDQRStGPdAQgAtMZiHaUypkWMqh9Cj2uP94FhQiHSW4O/VEeLO69x
|
18
|
+
GNTK9kBfYgMSj91T05Faa/tQJuAu0IFjWpHDNf9fsyCmxHp6by+VtfFtFUHqIQHC
|
19
|
+
aPzac7fHorQxBso/d/KKoSGuaC5mjs0WkSZYNlqlm80B2jDvxCMaCg97Wcg8ZEva
|
20
|
+
nTUKTSBVvZFpRvP1N7A9xe6nS2HKwonFTy+MCRme9p6UBLJgWwl/hAfT8Bqp7KL1
|
21
|
+
iCaet+Wy/HIPnuKHrC3LOJciLpBH/ienZxkWkPd7u3TKooBuvmF4GSc10Cv2Dqpt
|
22
|
+
nCRravobC+NFO7bLbCz5WUrnnW36sboz31reu2ZtKPDTmwARAQABiQEfBBgBAgAJ
|
23
|
+
BQJStGPdAhsMAAoJEDKwjOHKFtbwT/gH/ih4TdY5bSu8Nn5Ok9ifOKHlod2QdIHb
|
24
|
+
NCkSfeXjg/Y/7/OI1oD8eFcHgWU9XBISkTolg3XrXUcRl/B8N16gW6QeYvJ+OIWw
|
25
|
+
ykRFxJ94uwoB9/6vVFntN4XruFUwZX4AaaiADL+cO4kXgr7qW2FeSHyoMUvbJosU
|
26
|
+
5zYF6bro31ipLPMg1TX7PH5fVBhVnvj879fPnkzv9nScXzNAq9UaSLyNoH35MuwM
|
27
|
+
TEH4RnBIPcEvG3b4+/R/ihfypocHnfQq+fwTph0+W1vhNGCBPqv3ic80TVf5FWbS
|
28
|
+
uVRyqlnpai6DKsXMEt8XQYKqHuWd2FIJcuFXDlKnj9szBhoKk3o/E+E=
|
29
|
+
=t9Gg
|
30
|
+
-----END PGP PUBLIC KEY BLOCK-----
|
@@ -0,0 +1,30 @@
|
|
1
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
2
|
+
Version: GnuPG v1.4.14 (Darwin)
|
3
|
+
|
4
|
+
mQENBFK0ZE8BCADVV09/1tGbkTkSxGrZT2AO4PCyMxnIegbiav5HCoIe9dxSpQBf
|
5
|
+
qewgx/g6YaHchBMP6py4wayrmThTFd94TEPNTEo++lbj1ysbEqe4oDUOXhwksdKg
|
6
|
+
p7Tpk0ZwSqd2A5HU4brb8N9K6KW6oSOWNTmseY/uDosFqDsRI8DmWv4PWiEZdyUh
|
7
|
+
YQVKWEFtIPdcgjR9sRisjNidMd7zzxF8HAcLwhHD3ryzkXVRchH6n8wggVZdvNNI
|
8
|
+
j5Ys92ska4efBPJZpKZbnh+1YB15SavSYXA0Jk4geGjVygSAwp3SyPiBOHiOYf8o
|
9
|
+
L4m2SsCmwJNZ4BjjigieGu6RNDaPusc5zOHjABEBAAG0KkFkZCAyIChLZXkgdG8g
|
10
|
+
YmUgYWRkZWQpIDxhZGQyQGV4YW1wbGUuY29tPokBOAQTAQIAIgUCUrRkTwIbAwYL
|
11
|
+
CQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQplyx9BBLHIFn6Qf+N6zmqArRTL/w
|
12
|
+
NL6t6yZygXGEqqoompG6ab03uC0TG3U3FjZkbi0Mjy9JAKe3Jv73wQbkkjxd2UeJ
|
13
|
+
MBom11i92U/Rhp2EXwSF3y/BmR4aa2yZ4hVYmwgIxSk4yVN6NJe/VZqhDH/CD3yx
|
14
|
+
0GlejAc0V0oRMe1L7KFcbkrjcYVh/Y33vrVDmnA7uVPhPT/yt2p7wHJU5dOMaS4Y
|
15
|
+
uZ/zwb/UjcE6LlwCdex1Ke3qNPubEnEUmBz18EWQT+mNXO8yw56yZIw/qCNkVPSD
|
16
|
+
4XrQdfHxCqIiE1SqH9fQRGdh1L0DDdy0lBqgblKVS7SxlnJDUK4h5bxo4zd9yBsj
|
17
|
+
ovlB7tf7jbkBDQRStGRPAQgAzGrwPhg6PAD13HQPkhjefFUS0jzGCgrlYAuuEX/T
|
18
|
+
6MIDYkb5n8xN1VNrqk33T32l9D/CcCXRRe+18XFJpSlD29WiObsNn+rU4EIFFQN+
|
19
|
+
3PJuswvVJPlc6itONo6S/rod+u24hUMvc0iTHDbJkVG5WRiadxFQwIrMm0vchthc
|
20
|
+
0kPnDZgkCh1309SE2Xc5vaWbCzmELEnXgplYTlfUNYmmKU0R7HhMzfpBkcAPsFrD
|
21
|
+
TgqNJcBQkvAGuyM0DcgPu6NNVeKq3xOoiYDq5Cdu3jRKK2p6k2w0SOIKIHxauWZ9
|
22
|
+
uYky2DX8a2BO2KXKlwnGFLqPA2Da10dHHdC3X3bMNn+x/wARAQABiQEfBBgBAgAJ
|
23
|
+
BQJStGRPAhsMAAoJEKZcsfQQSxyBrocH/0jBSSQJFwrqkkR/GKWJQofRWYd4OgNk
|
24
|
+
n5AAPxhemytjMk9EN2O9nuogjY+Bh/WCbBYOC0bwKb9Z2eotXkT8lmYVgog2qE9K
|
25
|
+
7V9RFAeK7nRPpJN9LPXY6dEgcEjKSnU4a0wBDZzhUtbEYv68qNoO03MaXa3rnGcy
|
26
|
+
8t/Veyvw4j7oKWKfxTcDvtHgX+S/T/NyzmxpnhbL/OUAWp0qX3+MG2XJOe5tJuY+
|
27
|
+
YL8gAGVZwveKHVBCYrVYzbsgknoEYErnEhHB3bND6d5IzeursF2pr+eT3QRWX+ye
|
28
|
+
fINqHLWG8xsuTRtzU99oo07vdrzXBj4xq/R0CM97HF0mM1fW1rlEVu4=
|
29
|
+
=majZ
|
30
|
+
-----END PGP PUBLIC KEY BLOCK-----
|
@@ -0,0 +1,30 @@
|
|
1
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
2
|
+
Version: GnuPG v1.4.14 (Darwin)
|
3
|
+
|
4
|
+
mQENBFK1bxMBCAC5/fGSnyKlsXKU7mMHzdPkrV0a+l6NU25gqDtmZk5huF1sHLuE
|
5
|
+
lOSh0iXzgNRNRU/bliZQrRMrY+HKQES/vIQt2NuoL18Jqd34o6MmEBqj2aVT6K0v
|
6
|
+
SY00QSPUj6irTJtrBMMqRxhu1e4mNKQs2JWnTK7bx5FtiHAZINcIClNboeC2c0nU
|
7
|
+
NffguN/V0U+QLyjmAEOkFFIuj440p/gACiP6ruNyjze51CF+SBp0/zMpf/SFbuTx
|
8
|
+
zugoAudodoTXQ8fPt3zL3DqxNSvIX3sm/7bYF9B1dVJBxZh8pmjlH+rjkBdCqkxl
|
9
|
+
sAdPAYlN5T/76OJkFtugI4SuXN6Vgvt1PIkfABEBAAG0MEFkZGVkIDMgKFRvIGJl
|
10
|
+
IGFkZGVkIHdyb25nbHkpIDxhZGQzQGV4YW1wbGUuY29tPokBOAQTAQIAIgUCUrVv
|
11
|
+
EwIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ2JIhWqibSWpuXggAmE8S
|
12
|
+
qvmc/DZNcR1UYf0+0koA5NSYFpNljFGKXzNku3I1WgFe/VgJQOP08GxVV3183L2f
|
13
|
+
S5PxW19u8gv37Y75ybLZI8ucbS+NaK4mzxFsbI2fnOKf9xkvD/lVWYJauUgYKZPc
|
14
|
+
GTBxTxxaTRhO6X83PU2PehGffXsVwMjMZ/EkC/b9ziqoHKjVYGAcBWRMLGyCSL5U
|
15
|
+
I2qnZ31PWP3y1bVU1OAHrRCKvkYWXes/BHMNEfb5aaYM9+0dPeG0cc3s13gsUBfX
|
16
|
+
eH/GamJiNOak4yqtCNM2b9TZl2bgzSfgc+pCGYs3NTV3zAN+xmFhz3mztGdhKl2x
|
17
|
+
2ZnqtTyevErd7WE82rkBDQRStW8TAQgA9T241d5Krp9CvQuPIyWp4+ZM8SJ8Rut4
|
18
|
+
w8W1zF/b1/iHWvDsyb+MbP34dJDGK852/Nqxsd74VYGW1+Onm8QLcMLOWb4dwk4j
|
19
|
+
XBcVPDfcppau0y2sw1bJpIyI5DOCKiINA2vOvyyeMk538bFUX+cUk8tYau5o05Qe
|
20
|
+
cLze57+yrWgyQXCB+ni3C0tYZOQYjBRxoxuPnYpSs2zZchcHhrLdzI+HPVmpHqyP
|
21
|
+
nKmp3GwQpx8vhBy1pyyIa0ocDG/d33YhI6xYjwsuQphmBwmk9viG8wK6lmBU4yz5
|
22
|
+
aPh8JcU+HB4eGPnODCO2AaWS+Ql12nwAMuu08DR8z4qiwos7tQvXJwARAQABiQEf
|
23
|
+
BBgBAgAJBQJStW8TAhsMAAoJENiSIVqom0lqTtIIALLG5SZRUSP5AJ1TS+TVbafa
|
24
|
+
VM6S2lZ2IoCbYmVJHZYPjQIJ91E9Q5Q9hrW2vuS0XhlxcQ5dMcOFCTHkSi9klUoC
|
25
|
+
00VjvPKaq6KyBXUBtfEeZwJ1NmfavkHWcSHNaKRYkvYJtAc14ZsBWIQ4Vv3JtApK
|
26
|
+
7/NUOsDKJaGM17qSCKUkK8eMArE7ce31R68WGAnM8tbCVHqLdQgCvUQlqUBggvp/
|
27
|
+
8cfRgUPK3XvuENP+BjusoyJUzcCeoFmPXAOuL2xAaerqlsEJNgcp5wpiSeDGjSLW
|
28
|
+
3XlDmlOT0fF1k0YR4U8tBIipwrwQ/6lKAeu+1sup+xiK0bK5XO19XAKEiKa6SCs=
|
29
|
+
=OO6n
|
30
|
+
-----END PGP PUBLIC KEY BLOCK-----
|
@@ -0,0 +1,30 @@
|
|
1
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
2
|
+
Version: GnuPG v1.4.14 (Darwin)
|
3
|
+
|
4
|
+
mQENBFK0aB0BCACtzEZ+gx42nygqLXacyLxHyiKFO1hZyqcsMHicNw2skGrBx/B+
|
5
|
+
O3TG/C4MCefji2Fqa8CHXCrWH8lm5+OEhMWCQ64Kmo3ZujUvAnNNeiDAdRVCy0KS
|
6
|
+
FvUxFsRwKT4tAESixfJ8wL5ncWmaZFVchkTYsStOdeoNaGsVQDyRQgejZqxfO1Vj
|
7
|
+
7bANPnkF2gFwNkYuNWInKHTV5n+u/gBZTZK2B0im7ah8Y3fdv8YSApr+J4JC/V/+
|
8
|
+
RSAScleotYL+1yP5pL3pmicIpA/oqcro7FBw2IOIaxi7ZkXuZoA5ZKQ9b6sY5YZn
|
9
|
+
ef3EvMSq2mcdWkLnqzgWS+xgwSLduzFza1YRABEBAAG0MFJlbW92ZWQgMSAoVG8g
|
10
|
+
YmUgcmVtb3ZlZCkgPHJlbW92ZWQxQGV4YW1wbGUuY29tPokBOAQTAQIAIgUCUrRo
|
11
|
+
HQIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQUNJW6jPNLiUgagf/RGVE
|
12
|
+
8tuGhfQ9APvhsT3DTy7NcMoGtdfhMQ+9yyO+DbnvjHJ5YjAwbJM/1aacztHmWyJn
|
13
|
+
ftizuWihSkTV3fX4TnvPtw2DlqGQH0VDEqSCcl1bsCuQSGox42YTNIGl+hjUfAIX
|
14
|
+
nC7ATAN0O1aVpGiShAlrKYws99cCZeo9IVBKx3RfA+lC+hHs2CJ/JGFB44+EaQn0
|
15
|
+
IV1E/jVG2c/vJsptoSiMVsED1Q5z3fglaPuW6ffxTh527bmDxFGID89DgNbo/A0D
|
16
|
+
xLUo0vWUXSE5cZOn2RG/jGRVdGx3DHPvjlh6a3ili4L7XKKSeS1QJjnHJlrrd/fN
|
17
|
+
qeaeu7rPflvHf2uzDbkBDQRStGgdAQgAmImpJWIyQGMldvHtqv/1rKQ7KqaR0Hdv
|
18
|
+
sB9meyOhUhKNzBBV50IYc7DrF1wAVwIC0hawMGUEBdM29kKtWA3lOfYxNXSAF4HP
|
19
|
+
GmU2pYC6DvZ40FK8xC1+ZhBlrkCqKYaj7fg5VMrc3JE8tq/rKs1yyJGcFGWL3wQ6
|
20
|
+
mts+oydbgjIAHLiqob623WT3IrSwiIVEoiBr7wboGq2Mwm4GQ7HB5QBSmZhIMfOh
|
21
|
+
KRmnyOaoqmHFBnBkOpC8zyokkm67L4pi7iBfNlel97T0W39q2knynlun8jSijo3g
|
22
|
+
q/J1gVUiwJTuifrjFjZ8oLqyYa7tZhrC0pmXBQlUXM+ztD8WYLEKxwARAQABiQEf
|
23
|
+
BBgBAgAJBQJStGgdAhsMAAoJEFDSVuozzS4lEKkH/3TABVX0wnHjJ14zhXsVmP4f
|
24
|
+
LhlWqLXAEPAzBHd1WO61WpEWd4khyrfUFUjItccwTyoZNIQo/EIDceV0cT8SWyhL
|
25
|
+
DYgdmPExvLkmD0xzmewy3bKLzElf3T8LfB4pkKxPvlABfHw0RkwXVABkdYLka5a2
|
26
|
+
pFq5jWmM4uRwXoSqVZBvXfm7URFkxO6QRy1TD5+TZX0ZUHIrL93baBbFvBOy3g1e
|
27
|
+
Q/Sx+SE7f4j3gAsQdyIba4JCdd+ioHap2kmT+D7OBSPJhlKag3gudOBgAWpArl8w
|
28
|
+
feTf52vJAJ+JFyYuwtedbG2jecMFmFXK+2Q1tOIxveVwiJBa+0Wg59RUu6GP/W0=
|
29
|
+
=YoAy
|
30
|
+
-----END PGP PUBLIC KEY BLOCK-----
|
@@ -0,0 +1,30 @@
|
|
1
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
2
|
+
Version: GnuPG v1.4.14 (Darwin)
|
3
|
+
|
4
|
+
mQENBFK0aDABCADDSLiwsKSn39wNXo/ilqQSfwSW9n1DY3FvgILJfWgui132PXxX
|
5
|
+
gH6myDiuQIQbVaGa3I4/6//QAJHLzfV6bBVr6B/P9Kmrck3Yfnd0ywX/Pa4GiDCG
|
6
|
+
rwGFR7yS9ruq2cFnwFGSYIpee9Srzfgx6g4qxB++eBXJ8FFdhDaMreEwPKB0rTh3
|
7
|
+
we+Y41AbIng9cbP0M01ikrNcifjGF/DQgqXU0FG6OSnZ9Ltl6bgaKa/p3Q5EXL2c
|
8
|
+
mVVopRNMPc2KvPjV3CbQM0mNO9irynFp1galw1Gx09lHDKlMbdrP/m0Xg8LqxzXI
|
9
|
+
kUA3xZcu8HGsYBmPq1icSB6S8mVuzmehlWbrABEBAAG0MFJlbW92ZWQgMiAoVG8g
|
10
|
+
YmUgcmVtb3ZlZCkgPHJlbW92ZWQyQGV4YW1wbGUuY29tPokBOAQTAQIAIgUCUrRo
|
11
|
+
MAIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQuYk7Ptn954WgDQf/YWiA
|
12
|
+
OmvT6M8M0NMOhXr86c/yB5qn3m6BYgngve62sBK9nlvVWA+OawEPUxIMJFT/sFPk
|
13
|
+
vp3LC9L71kdfKr2hhBvO9bhzqgD/jLbCJMrEq8lv9u5u/nAZ/OiE5ABL0gg6lFMH
|
14
|
+
BMUoamzrkgbBPLOscrKhveZnYeNKdafW93+GfiyzRGxhfJMYbaTAS0cfrG9+87YO
|
15
|
+
4wnbQwVmXmR9Hf2j9xN2q5ZOxOOeYCQr3kleeNXKK7yjNF49K9m2UiIav4/if/fp
|
16
|
+
1P/Q174jUiGQ+Gay41+dUb73Xk8sCS2wlA74OxzFvduCjfJXnSf54pTS8TPXumCy
|
17
|
+
EpeH9Hr9NpHPqu0CEbkBDQRStGgwAQgAwpPtZWLwSiBib3RVfyi2GyVBj/L5DN05
|
18
|
+
SVx/ighRqlMPD+cmudklRjLDAzhx+v+5CEjZQGaV9oE3jJpDNor3mCS2nDpH9aCy
|
19
|
+
TFwvHD8FeJPKi7O+wekRw9kPvD7MhebsgXb4FCEzJFkh7kBZzlJuGzZY62YCXx1l
|
20
|
+
tLpWV8n0Rus7GSz8pLpxCP55i/WxJb5D5B29cwTxwHMMhSKDCDUjUppiFvA7XWki
|
21
|
+
eYimo65R57TPcgKAgrya3+fmHNN59nPg/Ebo2RxBUagvUhwjd9E7+F9DXJ4o5b3x
|
22
|
+
L1N8YVL13iA8DYwoR+TsyhEz0SgWPSTobQhpvPJ7XwXd3QQkfIaotwARAQABiQEf
|
23
|
+
BBgBAgAJBQJStGgwAhsMAAoJELmJOz7Z/eeF55UH/2IeAmb7KhgDoybAIR5MyGfo
|
24
|
+
W6GmkBFQMg2lFIzfQnPGRm/6fFcPPXsLINUkOzss3Igs/UP/48ORUKYFraKv3qC+
|
25
|
+
7ZCI0VT7s10feFxXNzC1wq49vOSuOSePcZssVYR4KxLrFB4P74zAVNomV7P1TNbo
|
26
|
+
C+hotHu8Z9/0raYTfQZFdhUQlcLdPfp0VTa56ohsVWAXANTH9eGtL5oOJ/cI8VFK
|
27
|
+
7xdGLzj38hOhJaJnvL8mHSo47AREAkqT1sKqjvdFIgh7qdGOqu9qI/rdO4YtxqHK
|
28
|
+
aTe6Jy/6Siqiw9iPvYzNbZ+iLtRIp/Lh8aL6+K7XizJW2qipmo5M9pkS8LZbjMk=
|
29
|
+
=Y4ep
|
30
|
+
-----END PGP PUBLIC KEY BLOCK-----
|
Binary file
|
@@ -0,0 +1,31 @@
|
|
1
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
2
|
+
Version: GnuPG v1.4.14 (Darwin)
|
3
|
+
|
4
|
+
mQENBFKxawMBCADXVEOSnsA9nIMnbI1/S92j/wCQi9d1ND3SKHjsrFbHdXHwyt+m
|
5
|
+
p2JJ47lHQmCUs39hX0+wm/fP0uxqwptYfZwo73wsgQlla6msVcGnulmjaauXJNjR
|
6
|
+
c9kLbVd67yl92l7UNtUA9zU6zzGko3KjYc1LBdh6Y6Bp1BX0IzHKmRBwz+ykZogu
|
7
|
+
s+Khg4H1QK9aSB9F44fAE9A3w0u6Wk8kQmIdvGHB5YmjjNRTvC5hBmRsCEZ9Ck27
|
8
|
+
CjBlVc5kYxwfqfvYpsQ+FAhJuwv9rjesyJ2pxIXCb2+P8crM1WEtULkkcnWEf0LI
|
9
|
+
yr/2DlWrmTGlteUwjXAIT7ouK7lIjXvDhUmdABEBAAG0N1Rlc3QgUHVibGljIEtl
|
10
|
+
eSAoTm90IGluIHRydXN0c3RvcmUpIDx0ZXN0MkBleGFtcGxlLmNvbT6JATgEEwEC
|
11
|
+
ACIFAlKxawMCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEMRtA6Mz2K2N
|
12
|
+
8MkH/1jyVQxv4lBOvU9kTWj2vFwVtT6rfGO7AMYIYwXtemnmi0QK0BqI3NBUcqdk
|
13
|
+
zNKyq1jGSa2fuFgcmFZ1csLclH6cz9P1XJUEtcu5CVK+fPKcUdECNIobtafXf8jT
|
14
|
+
tfgoITZTIVYYJhMakfD4TwaT4kNzgYtBLLFSXpv7P+lbXzyMERA/4gQBY/h5rUnX
|
15
|
+
+zTL/5vlN+qFobbrXIDeJGngcfngoi6JkuWAy1yQXIKl2ZNePqk7vbKEEwaVGV5Q
|
16
|
+
jVmJ5leThrjeOsf9w5WjbQmxx300BQ2OwCi8o7WP9n2RQb32kpkeJpNPLGhGRDk3
|
17
|
+
Trjwnn293FLsXwvVnJ0RejJv0e65AQ0EUrFrAwEIAMEci4LkOejO+6XSUQbGD7jN
|
18
|
+
/V3g1FFnCBT34X7mj0J7hkmAigQyZ9kSlyXLvz0i15yeybpAkFZBSWhNsJlGpdDB
|
19
|
+
fS9io0KfeKJKS990USEoxu5Llhvmr0N5uValfEwFAq5y8QdO+8cGqnMzbRxrYqka
|
20
|
+
BJEyW3A1vmAxInFSN8bvVewGF4zvvmOE8z6M6TwghYHGDBZkQRp8ZrXTVYafSWGW
|
21
|
+
MQgt0Kd9N4LPnFp3BVYagRwwQwNVRzuUPPzrATnlfVXDbmUYKGNXVfYZGhBaytSS
|
22
|
+
CHnthXrCeMyfz5+Cqq1JDvgQwSI1fEe6hux1YHhL/s+O9tfhdGYeIAq/N5pgBO8A
|
23
|
+
EQEAAYkBHwQYAQIACQUCUrFrAwIbDAAKCRDEbQOjM9itjTRjB/9R3hpuHmt8tC32
|
24
|
+
oB/6j4iq3/FLcD/aWEyGH+QyevVrH1iptCeEjfp8uUzHtcd3SbPKGPksklQYj/Ls
|
25
|
+
xPoDa7VixebrLEKNOM6rbSavOavXv6f3PaSP/zgA9psoGU2kQAQQjsVOVsfoLjum
|
26
|
+
lwGBH2CzBqrXCej9ErjMSTOdHN0s6IvMa0qlu0SFcBQ6BRdXdFlYawx+uYuV/XkY
|
27
|
+
VvU5bGdLM0ah1dJ4N0aSnGG1P1aedQXR2bV2bT7Mw8GKcYkdsZhDnjo2E2bMhBeX
|
28
|
+
eLH3YeH8zJLb6dthoe9KH1RHCvls/D6qIpR4A7s/Uyc0/3R6PdrtGMqFqjLK0z/Y
|
29
|
+
ldcIiCN6
|
30
|
+
=Tm11
|
31
|
+
-----END PGP PUBLIC KEY BLOCK-----
|
@@ -0,0 +1,31 @@
|
|
1
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
2
|
+
Version: GnuPG v1.4.14 (Darwin)
|
3
|
+
|
4
|
+
mQENBFKxbK0BCACfTYwBPmIPABaXi5j8/xvVOeN5s+a26wY7+KZg9Z86HGDSUtxv
|
5
|
+
PuXWkSubnCX44wPQTSJ6zjXtGNDWxS6Nydwy9yQQ0NpP3npO4TLzRP9rXMjJczw+
|
6
|
+
1h/LpEtq4UHvBXJJtD0Wza9YACUUapQlajLl/rdBX3oybRyqlOgEJPWRFavT+tOn
|
7
|
+
/gYDdPqWdR+D26D/xfman24G0eVlwTkJQhRXzWohIt/91dmJQIlK8EJO3t2A4zrR
|
8
|
+
gAOj8kLiVIOliMFebVvcaE5UUYK8wf4uvsFkKxtMzc2mfQg+o1hCa6F6+8ldbP/8
|
9
|
+
Gek31x1PZPmSLNA7vKzgHue5isqJgROBWeBfABEBAAG0PlRlc3QgcHVibGljIGtl
|
10
|
+
eSAoUHVibGljIGtleSBpbiB0cnVzdHN0b3JlKSA8dGVzdDNAZXhhbXBsZS5jb20+
|
11
|
+
iQE4BBMBAgAiBQJSsWytAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRD6
|
12
|
+
V4QQlP7ENZaBB/47k3jAUQI9cTHxdI1xj+qX+mmcydL7DsPLLu/noshj0Lvv+XdX
|
13
|
+
D81mWP07zqBhQr5LKuNbtebD4fSy+Qc0hwjfie6/ODM39Cwm/uki9fINdIyGmEf4
|
14
|
+
CB44jAxq3N6Sf3PQdG08oi69vm4gwfniUtfmkyzCqOF4696gb4BsQB0d7UVM4uDr
|
15
|
+
efo6jdJBP82Nn+gy6kBSDiRwhuiiLXyGt5lGvMfgde39RmunnSh4fX+Q+e8QBz1e
|
16
|
+
zvG2PJwN/4lXT5WQlE2K3f4u20EguSPAPGimbEVUNzii4PFscLL+GdG603AMxXO8
|
17
|
+
vffaTu3Vwq1F87x0Di7H+b5PCObHANN6d2zVuQENBFKxbK0BCACmJLBVa7sl9xPn
|
18
|
+
FF/KDiP6vJlbafD6u9iT9JGWoUf1g0Ji2MFfdwRqNQKzai/uzGoaj9EikUv48U6A
|
19
|
+
8dTX9dFNvWosl4wJWG93Xz80vm6vAzoP5ae9qunoy9Ui79CcmLIhm5BUo6uxKgB8
|
20
|
+
4wdMlKEAx5E5KghR20gY1ne3mhyiIyoVTojj4NQC6ZyytEC7G6daZZsAy8JNmKpT
|
21
|
+
4yFbEubwQNJvK17Or1OSgGW1ZWlDwGKt5jPOta2n8yNqppWDcs9su5/dWbrAJVs3
|
22
|
+
RH1d4GJYfDlk8kQzpNmBOPK64VsJ7pZT5mqTkAMeJ8+PuiI6C6MhOg5XAFdktlHB
|
23
|
+
zQWYUwADABEBAAGJAR8EGAECAAkFAlKxbK0CGwwACgkQ+leEEJT+xDX1XAgAhhyE
|
24
|
+
Dj+keINKIcjpc83y6OAVDQszE5QUbKm8y7p4CwElfpgUzkJyg4SpU9bighuvM7z5
|
25
|
+
ukpRrXGO74AF0ZgOVgiS00R3XRycrVuUuMhpehtdOyfejRF1tXanJDW06jKJ+hxr
|
26
|
+
CGyP0if1Zq0eCI5tC82mvwrwS9t1D0Ltwc8v+UM4wjVuHtOqCcA2J066LPhck15i
|
27
|
+
35wIzxaW8MJZ2Am5G8V3Od5jN920Q6F8FcjOmVUV5DWMkYS9a6rtOGkjd7FLB5vQ
|
28
|
+
+59WpkmsBxNnQgkG4YQHr5l5xWGMSgISpzrDqfOnslxPNcbpV1e1v49uqsVH7n4I
|
29
|
+
L4P8L7XWFf1KYdYDaw==
|
30
|
+
=BSxU
|
31
|
+
-----END PGP PUBLIC KEY BLOCK-----
|
@@ -0,0 +1,31 @@
|
|
1
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
2
|
+
Version: GnuPG v1.4.14 (Darwin)
|
3
|
+
|
4
|
+
mQENBFKxatYBCADKEUNxr7Kl739U8c0/yrpM2IIBxBUukQH2ylUET70Mqi8hTLEK
|
5
|
+
VwGFPy3JAcVe1YDMSQTLs8/eqwIZXr054nFogZjxlHkUUQfx1IzUKRedKpgqW1QA
|
6
|
+
p/1EL1jDbPuE4KNOFKdu/jc6hCQoUAUsrvk3qrtlW/xYV93NLRfoCAr+Kd11jesu
|
7
|
+
mZ8ZWWYqRddtwAnA3ufIR5D/raDenbaNM3RBdFP/StjBgHwBgqws8Ln3EpSDD8pl
|
8
|
+
gJjMW2ME6Anj5wpKhSUt5+wKEErYzNAWMCGdgDaQvb58mL8BD89lgoSrh9kEESZZ
|
9
|
+
JJqPV6wHHWLA9PY0qpFmSX4QX/PhOuZiOtIvABEBAAG0M1Rlc3QgUHJpdmF0ZSBL
|
10
|
+
ZXkgKEluIHRydXN0c3RvcmUpIDx0ZXN0QGV4YW1wbGUuY29tPokBOAQTAQIAIgUC
|
11
|
+
UrFq1gIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQbVqUsqEDlwLZNggA
|
12
|
+
gJIO+rTc2aB0y5E5kK4sUBPma/ByAsEH3FRNjApglNe3Wf6nytb3C7fo7yKX7RoL
|
13
|
+
wHJbbdcrrr/5juEbllcpoQ1mlTsBQ4RUtOCYLT3Qhw+V9BZqFjsl07uHYg0tBy6x
|
14
|
+
IZbwLlCFbDov2iLwkS7vMxpBDQ28eLUYwDelwKWUcCfT9OlpOCaHMlQI2TTssjmI
|
15
|
+
YfUCsG9Ou/7U6j2cRjS4Iw4zRbKRjNpoz66qIVfUgz0V3QyezGgklKdhHpmSQyPC
|
16
|
+
AJ+H4JA4nxD1WsE07AVkYDgKvqKV5VlZcgbaRVYHD/cLxLWo+hhoDWYdQeSZsFwR
|
17
|
+
80Atz8js9l5PCjuPkVl9BbkBDQRSsWrWAQgA3w0lYgOB0TZ0GfisucLTtVrolbVO
|
18
|
+
P8xeGv6w4Zcsh21DV5m+S5ZYObRow0s9G4uUXtmh4ky9Kq5T2+SxAcohuFK66JD3
|
19
|
+
ddGQDZ9H2kBxn2ZhqGj9j8r6mmgGkAs81cBg5nR4f7J8yjtW1gBDeqjubhvFB4Kl
|
20
|
+
XqAQSckjA0ymh6BtwVeRaqX00xSlfZnNEW343duSuTFk9tATpVUZaDUeI6ccqJaf
|
21
|
+
4QuUFR3i/VxyfMpqXAYlR4QLn8ncHzE4jNo9MesdAPfdH38ruKjEgSYj6HlEkNQj
|
22
|
+
2u1fNkDl33X0tbBeAquuLTWZXp5oMvpVDuKsHEsH4F0PFsxGwK+oCE5DSQARAQAB
|
23
|
+
iQEfBBgBAgAJBQJSsWrWAhsMAAoJEG1alLKhA5cClLcH/AmC/VrinfHYmB2g0f5/
|
24
|
+
3J/CZPLiWEocRmJTgF3HB1deO5p8O3/wi415G9EhPuAf/yATf9Gs0wUosJy1TH5t
|
25
|
+
6E/oJh7YTnIqLm568bc+o5lj0voqwqOrKl02E2vKGdlWRSL1M4sfX3VQkZlOAfSE
|
26
|
+
h0zjM5CHMqvJ57pRb0XyV1wAfAAOKXOwbUGnB3HNnGKlds4ZevjeweOiYSogSwiI
|
27
|
+
kqdJG65ZZHT9Dwd4AF5ZNVX4q90eXBFVD5P6EckLK22PAISNYvuMSy5GDcKFqPdt
|
28
|
+
+hzYJsAE7KcpuOS8mNkFB6G1OqpoFZHsFpqLFVcO0aNMauI0K+BIJoxFFRLVwVCf
|
29
|
+
ITA=
|
30
|
+
=jwu6
|
31
|
+
-----END PGP PUBLIC KEY BLOCK-----
|