schleuder 4.0.3 → 5.0.0

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.
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: []