schleuder 4.0.3 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -9
  3. data/db/migrate/20180110203100_add_sig_enc_to_headers_to_meta_defaults.rb +1 -1
  4. data/db/migrate/20220910170110_add_key_auto_import_from_email.rb +11 -0
  5. data/db/schema.rb +6 -6
  6. data/etc/list-defaults.yml +16 -0
  7. data/etc/schleuder.yml +29 -11
  8. data/lib/schleuder/cli.rb +14 -1
  9. data/lib/schleuder/conf.rb +23 -3
  10. data/lib/schleuder/email_key_importer.rb +91 -0
  11. data/lib/schleuder/filters/post_decryption/35_key_auto_import_from_attachments.rb +21 -0
  12. data/lib/schleuder/filters/post_decryption/80_receive_from_subscribed_emailaddresses_only.rb +1 -1
  13. data/lib/schleuder/filters/post_decryption/90_strip_html_from_alternative_if_keywords_present.rb +36 -4
  14. data/lib/schleuder/filters/pre_decryption/60_key_auto_import_from_autocrypt_header.rb +9 -0
  15. data/lib/schleuder/gpgme/ctx.rb +34 -93
  16. data/lib/schleuder/gpgme/key.rb +1 -1
  17. data/lib/schleuder/gpgme/key_extractor.rb +30 -0
  18. data/lib/schleuder/http.rb +56 -0
  19. data/lib/schleuder/key_fetcher.rb +89 -0
  20. data/lib/schleuder/keyword_handlers/key_management.rb +2 -2
  21. data/lib/schleuder/keyword_handlers/subscription_management.rb +19 -3
  22. data/lib/schleuder/list.rb +26 -10
  23. data/lib/schleuder/list_builder.rb +1 -1
  24. data/lib/schleuder/logger.rb +1 -1
  25. data/lib/schleuder/mail/gpg/decrypted_part.rb +20 -0
  26. data/lib/schleuder/mail/gpg/delivery_handler.rb +38 -0
  27. data/lib/schleuder/mail/gpg/encrypted_part.rb +29 -5
  28. data/lib/schleuder/mail/gpg/gpgme_ext.rb +8 -0
  29. data/lib/schleuder/mail/gpg/gpgme_helper.rb +155 -0
  30. data/lib/schleuder/mail/gpg/inline_decrypted_message.rb +82 -0
  31. data/lib/schleuder/mail/gpg/inline_signed_message.rb +73 -0
  32. data/lib/schleuder/mail/gpg/mime_signed_message.rb +28 -0
  33. data/lib/schleuder/mail/gpg/missing_keys_error.rb +6 -0
  34. data/lib/schleuder/mail/gpg/sign_part.rb +19 -9
  35. data/lib/schleuder/mail/gpg/signed_part.rb +37 -0
  36. data/lib/schleuder/mail/gpg/verified_part.rb +10 -0
  37. data/lib/schleuder/mail/gpg/verify_result_attribute.rb +32 -0
  38. data/lib/schleuder/mail/gpg/version_part.rb +22 -0
  39. data/lib/schleuder/mail/gpg.rb +236 -7
  40. data/lib/schleuder/mail/message.rb +98 -14
  41. data/lib/schleuder/sks_client.rb +18 -0
  42. data/lib/schleuder/version.rb +1 -1
  43. data/lib/schleuder/vks_client.rb +24 -0
  44. data/lib/schleuder-api-daemon/routes/key.rb +22 -1
  45. data/lib/schleuder.rb +11 -7
  46. data/locales/de.yml +22 -3
  47. data/locales/en.yml +22 -3
  48. metadata +72 -24
@@ -1,3 +1,3 @@
1
1
  module Schleuder
2
- VERSION = '4.0.3'
2
+ VERSION = '5.0.0'
3
3
  end
@@ -0,0 +1,24 @@
1
+ module Schleuder
2
+ class VksClient < Http
3
+ VKS_PATH = '/vks/v1'
4
+
5
+ class << self
6
+ def get(type, input)
7
+ if type.to_s == 'fingerprint'
8
+ input = normalize_fingerprint(input)
9
+ end
10
+ super(url(type, input))
11
+ end
12
+
13
+ private
14
+
15
+ def normalize_fingerprint(input)
16
+ input.gsub(/^0x/, '').gsub(/\s/, '').upcase
17
+ end
18
+
19
+ def url(type, input)
20
+ "#{Conf.vks_keyserver}/#{VKS_PATH}/by-#{type}/#{CGI.escape(input)}"
21
+ end
22
+ end
23
+ end
24
+ end
@@ -14,7 +14,28 @@ class SchleuderApiDaemon < Sinatra::Base
14
14
  if ! input.match('BEGIN PGP')
15
15
  input = Base64.decode64(input)
16
16
  end
17
- json list(requested_list_id).import_key(input)
17
+ @list = list(requested_list_id)
18
+ import_result = @list.import_key(input)
19
+ keys = []
20
+ messages = []
21
+ import_result.imports.each do |import_status|
22
+ if import_status.action == 'error'
23
+ messages << "The key with the fingerprint #{import_status.fingerprint} could not be imported for unknown reasons"
24
+ else
25
+ key = @list.gpg.find_distinct_key(import_status.fingerprint)
26
+ if key
27
+ keys << key_to_hash(key).merge({import_action: import_status.action})
28
+ end
29
+ end
30
+ end
31
+ set_x_messages(messages)
32
+ # Use a Hash as single response object to stay more REST-like. (also,
33
+ # ActiveResource chokes if we return an array here).
34
+ # The 'type' attribute is only necessary to keep ActiveResource from
35
+ # complaining about "expected attributes to be able to convert to Hash",
36
+ # which for some reason is raised without it (or some other, similar
37
+ # attribute).
38
+ json({type: 'keys', keys: keys})
18
39
  end
19
40
 
20
41
  get '/check_keys.json' do
data/lib/schleuder.rb CHANGED
@@ -15,15 +15,15 @@ require 'syslog/logger'
15
15
  require 'logger'
16
16
  require 'open3'
17
17
  require 'socket'
18
+ require 'base64'
18
19
 
19
20
  # Require mandatory libs. The database-layer-lib is required below.
20
- require 'mail-gpg'
21
+ require 'mail'
22
+ require 'gpgme'
21
23
  require 'active_record'
22
24
  require 'active_support'
23
25
  require 'active_support/core_ext/string'
24
-
25
- # An extra from mail-gpg
26
- require 'hkp'
26
+ require 'typhoeus'
27
27
 
28
28
  # Load schleuder
29
29
  libdir = Pathname.new(__FILE__).dirname.realpath
@@ -34,13 +34,12 @@ $:.unshift libdir
34
34
  require 'schleuder/mail/parts_list.rb'
35
35
  require 'schleuder/mail/message.rb'
36
36
  require 'schleuder/mail/gpg.rb'
37
- require 'schleuder/mail/gpg/encrypted_part.rb'
38
- require 'schleuder/mail/gpg/sign_part.rb'
39
37
  require 'schleuder/gpgme/import_status.rb'
40
38
  require 'schleuder/gpgme/key.rb'
41
39
  require 'schleuder/gpgme/sub_key.rb'
42
40
  require 'schleuder/gpgme/ctx.rb'
43
41
  require 'schleuder/gpgme/user_id.rb'
42
+ require 'schleuder/gpgme/key_extractor'
44
43
 
45
44
  # The Code[tm]
46
45
  require 'schleuder/errors/base'
@@ -50,6 +49,10 @@ end
50
49
  # Load schleuder/conf before the other classes, it defines constants!
51
50
  require 'schleuder/conf'
52
51
  require 'schleuder/version'
52
+ require 'schleuder/http'
53
+ require 'schleuder/key_fetcher'
54
+ require 'schleuder/vks_client'
55
+ require 'schleuder/sks_client'
53
56
  require 'schleuder/logger_notifications'
54
57
  require 'schleuder/logger'
55
58
  require 'schleuder/listlogger'
@@ -66,6 +69,7 @@ require 'schleuder/runner'
66
69
  require 'schleuder/list'
67
70
  require 'schleuder/list_builder'
68
71
  require 'schleuder/subscription'
72
+ require 'schleuder/email_key_importer'
69
73
 
70
74
  # Setup
71
75
  ENV['SCHLEUDER_CONFIG'] ||= '/etc/schleuder/schleuder.yml'
@@ -88,6 +92,6 @@ I18n.load_path += Dir["#{rootdir}/locales/*.yml"]
88
92
  I18n.enforce_available_locales = true
89
93
  I18n.default_locale = :en
90
94
 
91
- File.umask(0027)
95
+ File.umask(Schleuder::Conf.umask)
92
96
 
93
97
  include Schleuder
data/locales/de.yml CHANGED
@@ -25,6 +25,9 @@ de:
25
25
 
26
26
  Freundliche Grüße,
27
27
  Dein Schleuder-System.
28
+
29
+ (Wenn du Hilfe brauchst lies bitte die Dokumentation <https://schleuder.org/schleuder/docs/>
30
+ (auf englisch) oder frage deine Listen- oder System-Admins.)
28
31
  decryption_failed: |
29
32
  Deine Email konnnte nicht entschlüsselt werden.
30
33
  Emails an diese Adresse müssen mit diesem Schlüssel verschlüsselt werden:
@@ -202,7 +205,7 @@ de:
202
205
  Als Admin musst du um deinen eigenen Fingerabdruck zu entfernen, noch zusätzlich das Argument force mitgeben. bspw.:
203
206
  X-UNSET-FINGERPRINT: adminsubscription2@hostname force
204
207
  subscribe_requires_arguments: |
205
- Fehler: Du hast zu dem Schlüsselwort 'SUBSCRIBE' keinen Wert angegeben.
208
+ Fehler: Du hast zu dem Schlüsselwort 'SUBSCRIBE' keine passenden Werte angegeben.
206
209
 
207
210
  Mindestens ein Wert ist nötig, drei weitere sind optional. Bspw.:
208
211
  X-SUBSCRIBE: new-subscription@hostname
@@ -246,7 +249,12 @@ de:
246
249
  key_unusable: |
247
250
  Dieser Schlüssel ist %{usability_issue}:
248
251
  %{key_summary}
249
- missed_message_due_to_unusable_key: "Du hast eine Email von %{list_email} verpasst weil deiner Mitgliedschaft kein (benutzbarer) OpenPGP-Schlüssel zugewiesen ist. Bitte kümmere dich darum."
252
+ missed_message_due_to_unusable_key: |
253
+ Du hast eine Email von %{list_email} verpasst weil deiner Mitgliedschaft kein (benutzbarer) OpenPGP-Schlüssel zugewiesen ist. Bitte kümmere dich darum.
254
+
255
+ Das kannst du mit dem Schlüsselwort X-SET-FINGERPRINT tun. Siehe <https://schleuder.org/schleuder/docs/subscribers.html#special-keywords> (englisch) für Details.
256
+
257
+ Falls "schleuder-web" für dieses Schleuder-System eingerichtet wurde kannst du es auch über den Browser lösen (das wissen deine Listen- oder System-Admins).
250
258
  refresh_keys: Schlüsselaktualisierung
251
259
  refresh_keys_intro: "Die Aktualisierung aller Schlüssel des Schlüsselrings für Liste %{email} ergab dies:"
252
260
  key_updated: |
@@ -261,8 +269,19 @@ de:
261
269
  new_uids: neue User-IDs
262
270
  new_subkeys: neue Unterschlüssel
263
271
  new_signatures: neue Signaturen
264
- fetch_key:
272
+ key_fetcher:
265
273
  invalid_input: "Ungültige Angabe. Gültig sind: URLs, OpenPGP-Fingerabdrücke, oder Emailadressen."
274
+ not_found: "Fehler: Keinen Schlüssel für '%{input}' gefunden."
275
+ url_not_found: "Fehler: Unter <%{url}> wurde nichts gefunden (404 Not Found)."
276
+ general_error: "Fehler beim Holen der Daten aus dem Netz: %{error}"
277
+ import_error: "Fehler beim Importieren der geholten Daten: %{error}"
278
+ email_key_importer:
279
+ key_already_present: "Für die Absenderadresse dieser Email hat diese Liste schon einen anderen Schlüssel, daher wurde der Schlüssel aus dieser Email nicht hinzugefügt."
280
+ import_error: "Fehler beim Import von Schlüssel %{fingerprint} aus dieser Email: %{import_states}."
281
+ technical_error: "Beim Schlüsselimport aus dieser Email ist ein unerwarteter Fehler aufgetreten."
282
+ key_added: "Dieser Schlüssel wurde aus dieser Email neu hinzugefügt: %{key_summary}"
283
+ key_unchanged: "Dieser Schlüssel wurde aus dieser Email nicht verändert: %{key_summary}."
284
+ key_updated: "Dieser Schlüssel wurde aus dieser Email aktualisiert: %{key_summary}."
266
285
  pseudoheaders:
267
286
  scrubbed_message: Diese Email enthielt ungültige Zeichen, die aus Verarbeitungsgründen möglicherweise entfernt wurden.
268
287
  stripped_html_from_multialt: Diese Email enthielt einen alternativen HTML-Teil, der PGP-Daten beinhaltete. Der HTML-Teil wurde entfernt, um die Email sauberer analysieren zu können.
data/locales/en.yml CHANGED
@@ -25,6 +25,9 @@ en:
25
25
 
26
26
  Kind regards,
27
27
  Your Schleuder system.
28
+
29
+ (If you need help please read the documentation <https://schleuder.org/schleuder/docs/>
30
+ or ask your list- or server-admins.)
28
31
  decryption_failed: |
29
32
  Decrypting your message failed.
30
33
  Messages to this address must be encrypted with the following key:
@@ -206,7 +209,7 @@ en:
206
209
  As an admin to unset your own fingerprint you must additionally pass the argument force. E.g.:
207
210
  X-UNSET-FINGERPRINT: adminsubscription2@hostname force
208
211
  subscribe_requires_arguments: |
209
- Error: You did not send any arguments for the keyword 'SUBSCRIBE'.
212
+ Error: You did not send proper arguments for the keyword 'SUBSCRIBE'.
210
213
 
211
214
  At least one argument is required, three more are optional. E.g.:
212
215
  X-SUBSCRIBE: new-subscription@hostname
@@ -250,7 +253,12 @@ en:
250
253
  key_unusable: |
251
254
  This key is %{usability_issue}:
252
255
  %{key_summary}
253
- missed_message_due_to_unusable_key: "You missed an email from %{list_email} because your subscription isn't associated with a (usable) OpenPGP key. Please fix this."
256
+ missed_message_due_to_unusable_key: |
257
+ You missed an email from %{list_email} because your subscription isn't associated with a (usable) OpenPGP key. Please fix this.
258
+
259
+ To do that you can use the keyword X-SET-FINGERPRINT, see <https://schleuder.org/schleuder/docs/subscribers.html#special-keywords> for further explanation.
260
+
261
+ If "schleuder-web" has been setup for this host you might also use your browser (your list- or system-admins can tell you that).
254
262
  refresh_keys: Keys update
255
263
  refresh_keys_intro: "Refreshing all keys from the keyring of list %{email} resulted in this:"
256
264
  key_updated: |
@@ -265,8 +273,19 @@ en:
265
273
  new_uids: new user-IDs
266
274
  new_subkeys: new subkeys
267
275
  new_signatures: new signatures
268
- fetch_key:
276
+ key_fetcher:
269
277
  invalid_input: "Invalid input. Allowed are: URLs, OpenPGP-fingerprints, or email-addresses."
278
+ not_found: "Error: No key could be found for '%{input}'."
279
+ url_not_found: "Error: There's nothing at <%{url}> (404 Not Found)."
280
+ general_error: "Error while fetching data from the internet: %{error}"
281
+ import_error: "Error while importing the fetched data: %{error}"
282
+ email_key_importer:
283
+ key_already_present: "The list already knows a different key for this email's sender address, therefore the key from this email was not added."
284
+ import_error: "Error while importing key %{fingerprint} from this email: %{import_states}."
285
+ technical_error: "Unexpected technical error while importing key from this email."
286
+ key_added: "This key was newly added from this email: %{key_summary}."
287
+ key_unchanged: "This key was unchanged from this email: %{key_summary}."
288
+ key_updated: "This key was updated from this email: %{key_summary}."
270
289
  pseudoheaders:
271
290
  scrubbed_message: This message included invalid characters, which might have been removed to be able to process the message properly.
272
291
  stripped_html_from_multialt: This message included an alternating HTML-part that contained PGP-data. The HTML-part was removed to enable parsing the message more properly.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schleuder
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.3
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - schleuder dev team
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-12 00:00:00.000000000 Z
11
+ date: 2024-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 6.1.3
19
+ version: '7.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 6.1.3
26
+ version: '7.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bcrypt
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -78,28 +78,28 @@ dependencies:
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: 2.7.1
81
+ version: 2.8.1
82
82
  type: :runtime
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: 2.7.1
88
+ version: 2.8.1
89
89
  - !ruby/object:Gem::Dependency
90
- name: mail-gpg
90
+ name: net-smtp
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '0.3'
95
+ version: 0.3.1
96
96
  type: :runtime
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '0.3'
102
+ version: 0.3.1
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: rake
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -120,42 +120,42 @@ dependencies:
120
120
  requirements:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '2'
123
+ version: 3.1.0
124
124
  type: :runtime
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '2'
130
+ version: 3.1.0
131
131
  - !ruby/object:Gem::Dependency
132
132
  name: sinatra-contrib
133
133
  requirement: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: '2'
137
+ version: 3.1.0
138
138
  type: :runtime
139
139
  prerelease: false
140
140
  version_requirements: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
- version: '2'
144
+ version: 3.1.0
145
145
  - !ruby/object:Gem::Dependency
146
146
  name: sqlite3
147
147
  requirement: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: 1.4.2
151
+ version: 1.6.0
152
152
  type: :runtime
153
153
  prerelease: false
154
154
  version_requirements: !ruby/object:Gem::Requirement
155
155
  requirements:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
- version: 1.4.2
158
+ version: 1.6.0
159
159
  - !ruby/object:Gem::Dependency
160
160
  name: thin
161
161
  requirement: !ruby/object:Gem::Requirement
@@ -176,28 +176,42 @@ dependencies:
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: '0'
179
+ version: '1.3'
180
180
  type: :runtime
181
181
  prerelease: false
182
182
  version_requirements: !ruby/object:Gem::Requirement
183
183
  requirements:
184
184
  - - "~>"
185
185
  - !ruby/object:Gem::Version
186
- version: '0'
186
+ version: '1.3'
187
+ - !ruby/object:Gem::Dependency
188
+ name: typhoeus
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '1.4'
194
+ type: :runtime
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: '1.4'
187
201
  - !ruby/object:Gem::Dependency
188
202
  name: byebug
189
203
  requirement: !ruby/object:Gem::Requirement
190
204
  requirements:
191
205
  - - "~>"
192
206
  - !ruby/object:Gem::Version
193
- version: '10'
207
+ version: '11'
194
208
  type: :development
195
209
  prerelease: false
196
210
  version_requirements: !ruby/object:Gem::Requirement
197
211
  requirements:
198
212
  - - "~>"
199
213
  - !ruby/object:Gem::Version
200
- version: '10'
214
+ version: '11'
201
215
  - !ruby/object:Gem::Dependency
202
216
  name: database_cleaner
203
217
  requirement: !ruby/object:Gem::Requirement
@@ -240,6 +254,20 @@ dependencies:
240
254
  - - "~>"
241
255
  - !ruby/object:Gem::Version
242
256
  version: '0'
257
+ - !ruby/object:Gem::Dependency
258
+ name: irb
259
+ requirement: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - ">="
262
+ - !ruby/object:Gem::Version
263
+ version: '0'
264
+ type: :development
265
+ prerelease: false
266
+ version_requirements: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - ">="
269
+ - !ruby/object:Gem::Version
270
+ version: '0'
243
271
  - !ruby/object:Gem::Dependency
244
272
  name: rack-test
245
273
  requirement: !ruby/object:Gem::Requirement
@@ -329,6 +357,7 @@ files:
329
357
  - db/migrate/20200118170110_add_set_reply_to_to_sender_and_munge_from.rb
330
358
  - db/migrate/20211106112020_change_boolean_values_to_integers.rb
331
359
  - db/migrate/20211107151309_add_limits_to_string_columns.rb
360
+ - db/migrate/20220910170110_add_key_auto_import_from_email.rb
332
361
  - db/schema.rb
333
362
  - etc/init.d/schleuder-api-daemon
334
363
  - etc/list-defaults.yml
@@ -352,6 +381,7 @@ files:
352
381
  - lib/schleuder/cli/schleuder_cert_manager.rb
353
382
  - lib/schleuder/cli/subcommand_fix.rb
354
383
  - lib/schleuder/conf.rb
384
+ - lib/schleuder/email_key_importer.rb
355
385
  - lib/schleuder/errors/active_model_error.rb
356
386
  - lib/schleuder/errors/base.rb
357
387
  - lib/schleuder/errors/decryption_failed.rb
@@ -375,6 +405,7 @@ files:
375
405
  - lib/schleuder/filters/post_decryption/10_request.rb
376
406
  - lib/schleuder/filters/post_decryption/20_max_message_size.rb
377
407
  - lib/schleuder/filters/post_decryption/30_forward_to_owner.rb
408
+ - lib/schleuder/filters/post_decryption/35_key_auto_import_from_attachments.rb
378
409
  - lib/schleuder/filters/post_decryption/40_receive_admin_only.rb
379
410
  - lib/schleuder/filters/post_decryption/50_receive_authenticated_only.rb
380
411
  - lib/schleuder/filters/post_decryption/60_receive_signed_only.rb
@@ -386,12 +417,16 @@ files:
386
417
  - lib/schleuder/filters/pre_decryption/30_send_key.rb
387
418
  - lib/schleuder/filters/pre_decryption/40_fix_exchange_messages.rb
388
419
  - lib/schleuder/filters/pre_decryption/50_strip_html_from_alternative.rb
420
+ - lib/schleuder/filters/pre_decryption/60_key_auto_import_from_autocrypt_header.rb
389
421
  - lib/schleuder/filters_runner.rb
390
422
  - lib/schleuder/gpgme/ctx.rb
391
423
  - lib/schleuder/gpgme/import_status.rb
392
424
  - lib/schleuder/gpgme/key.rb
425
+ - lib/schleuder/gpgme/key_extractor.rb
393
426
  - lib/schleuder/gpgme/sub_key.rb
394
427
  - lib/schleuder/gpgme/user_id.rb
428
+ - lib/schleuder/http.rb
429
+ - lib/schleuder/key_fetcher.rb
395
430
  - lib/schleuder/keyword_handlers/attach_list_key.rb
396
431
  - lib/schleuder/keyword_handlers/base.rb
397
432
  - lib/schleuder/keyword_handlers/get_version.rb
@@ -407,11 +442,24 @@ files:
407
442
  - lib/schleuder/logger.rb
408
443
  - lib/schleuder/logger_notifications.rb
409
444
  - lib/schleuder/mail/gpg.rb
445
+ - lib/schleuder/mail/gpg/decrypted_part.rb
446
+ - lib/schleuder/mail/gpg/delivery_handler.rb
410
447
  - lib/schleuder/mail/gpg/encrypted_part.rb
448
+ - lib/schleuder/mail/gpg/gpgme_ext.rb
449
+ - lib/schleuder/mail/gpg/gpgme_helper.rb
450
+ - lib/schleuder/mail/gpg/inline_decrypted_message.rb
451
+ - lib/schleuder/mail/gpg/inline_signed_message.rb
452
+ - lib/schleuder/mail/gpg/mime_signed_message.rb
453
+ - lib/schleuder/mail/gpg/missing_keys_error.rb
411
454
  - lib/schleuder/mail/gpg/sign_part.rb
455
+ - lib/schleuder/mail/gpg/signed_part.rb
456
+ - lib/schleuder/mail/gpg/verified_part.rb
457
+ - lib/schleuder/mail/gpg/verify_result_attribute.rb
458
+ - lib/schleuder/mail/gpg/version_part.rb
412
459
  - lib/schleuder/mail/message.rb
413
460
  - lib/schleuder/mail/parts_list.rb
414
461
  - lib/schleuder/runner.rb
462
+ - lib/schleuder/sks_client.rb
415
463
  - lib/schleuder/subscription.rb
416
464
  - lib/schleuder/validators/boolean_validator.rb
417
465
  - lib/schleuder/validators/email_validator.rb
@@ -419,6 +467,7 @@ files:
419
467
  - lib/schleuder/validators/greater_than_zero_validator.rb
420
468
  - lib/schleuder/validators/no_line_breaks_validator.rb
421
469
  - lib/schleuder/version.rb
470
+ - lib/schleuder/vks_client.rb
422
471
  - locales/de.yml
423
472
  - locales/en.yml
424
473
  homepage: https://schleuder.org/
@@ -441,16 +490,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
441
490
  requirements:
442
491
  - - ">="
443
492
  - !ruby/object:Gem::Version
444
- version: 2.5.0
493
+ version: 3.1.0
445
494
  required_rubygems_version: !ruby/object:Gem::Requirement
446
495
  requirements:
447
496
  - - ">="
448
497
  - !ruby/object:Gem::Version
449
498
  version: '0'
450
499
  requirements: []
451
- rubyforge_project:
452
- rubygems_version: 2.7.6.2
453
- signing_key:
500
+ rubygems_version: 3.5.14
501
+ signing_key:
454
502
  specification_version: 4
455
503
  summary: Schleuder is an encrypting mailing list manager with remailing-capabilities.
456
504
  test_files: []