From 2ffca390a967a962d03794c6ffac2e5e2946f2ff Mon Sep 17 00:00:00 2001 From: Thorsten Eckel Date: Tue, 2 Jun 2020 13:01:16 +0200 Subject: [PATCH] Fixes #1961 - S/MIME integration. --- Gemfile | 7 +- Gemfile.lock | 2 + LICENSE-ICONS-3RD-PARTY.json | 1004 ++++++++--------- .../app/controllers/_integration/smime.coffee | 258 +++++ .../_ui_element/ticket_perform_action.coffee | 29 + .../controllers/agent_ticket_create.coffee | 41 +- .../app/controllers/ticket_zoom.coffee | 10 +- .../article_action/email_reply.coffee | 2 +- .../ticket_zoom/article_new.coffee | 29 + .../ticket_zoom/article_view.coffee | 52 +- .../form_handler_security_options.coffee | 10 + .../app/lib/mixins/security_options.coffee | 89 ++ .../app/views/agent_ticket_create.jst.eco | 11 +- .../app/views/generic/select.jst.eco | 2 +- .../notification.jst.eco | 10 +- .../app/views/integration/ldap.jst.eco | 4 +- .../app/views/integration/smime.jst.eco | 14 + .../integration/smime_certificate_add.jst.eco | 26 + .../app/views/integration/smime_group.jst.eco | 24 + .../app/views/integration/smime_list.jst.eco | 34 + .../integration/smime_private_key_add.jst.eco | 37 + .../app/views/layout_ref/buttons.jst.eco | 6 +- .../app/views/ticket_zoom/article_new.jst.eco | 9 + .../views/ticket_zoom/article_view.jst.eco | 42 + app/assets/stylesheets/svg-dimensions.css | 2 + app/assets/stylesheets/zammad.scss | 127 ++- .../integration/smime_controller.rb | 154 +++ app/controllers/ticket_articles_controller.rb | 9 + .../ticket_article_communicate_email_job.rb | 3 +- app/models/channel/email_build.rb | 60 +- app/models/channel/email_parser.rb | 1 + app/models/channel/filter/secure_mailing.rb | 8 + app/models/smime_certificate.rb | 99 ++ app/models/ticket.rb | 61 +- app/models/ticket/article.rb | 1 + .../integration/smime_controller_policy.rb | 4 + config/initializers/inflections.rb | 1 + config/routes/integration_smime.rb | 10 + config/routes/ticket.rb | 2 +- contrib/edit-icon-license-list.php | 2 +- contrib/icon-sprite.sketch | Bin 267068 -> 279993 bytes db/migrate/20120101000001_create_base.rb | 16 + db/migrate/20200121000001_smime_support.rb | 74 ++ db/seeds/settings.rb | 51 + lib/secure_mailing.rb | 25 + lib/secure_mailing/backend.rb | 9 + lib/secure_mailing/backend/handler.rb | 6 + lib/secure_mailing/smime.rb | 6 + lib/secure_mailing/smime/incoming.rb | 180 +++ lib/secure_mailing/smime/outgoing.rb | 84 ++ lib/secure_mailing/smime/retry.rb | 91 ++ public/assets/images/icons.svg | 10 + public/assets/images/icons/not-signed.svg | 9 + public/assets/images/icons/signed.svg | 9 + spec/factories/smime_certificate.rb | 17 + spec/factories/template.rb | 13 +- .../smime/CaseInsenstive@eXample.COM.crt | 37 + .../smime/CaseInsenstive@eXample.COM.csr | 29 + .../smime/CaseInsenstive@eXample.COM.key | 54 + .../smime/CaseInsenstive@eXample.COM.secret | 1 + spec/fixtures/smime/ca.crt | 35 + spec/fixtures/smime/ca.key | 54 + spec/fixtures/smime/ca.secret | 1 + spec/fixtures/smime/expiredca.crt | 35 + spec/fixtures/smime/expiredca.key | 54 + spec/fixtures/smime/expiredca.secret | 1 + .../smime/expiredsmime1@example.com.crt | 37 + .../smime/expiredsmime1@example.com.csr | 29 + .../smime/expiredsmime1@example.com.key | 54 + .../smime/expiredsmime1@example.com.secret | 1 + .../smime/expiredsmime2@example.com.crt | 37 + .../smime/expiredsmime2@example.com.csr | 29 + .../smime/expiredsmime2@example.com.key | 54 + .../smime/expiredsmime2@example.com.secret | 1 + spec/fixtures/smime/generate/Dockerfile | 21 + spec/fixtures/smime/generate/README.md | 6 + .../fixtures/smime/generate/config/config.cnf | 8 + .../fixtures/smime/generate/config/double.cnf | 15 + .../smime/generate/config/pass.secret | 1 + .../smime/generate/docker-entrypoint.sh | 104 ++ spec/fixtures/smime/generate/run.sh | 9 + spec/fixtures/smime/oldca.crt | 35 + spec/fixtures/smime/oldca.key | 54 + spec/fixtures/smime/oldca.secret | 1 + spec/fixtures/smime/oldsmime1@example.com.crt | 37 + spec/fixtures/smime/oldsmime1@example.com.csr | 29 + spec/fixtures/smime/oldsmime1@example.com.key | 54 + .../smime/oldsmime1@example.com.secret | 1 + spec/fixtures/smime/oldsmime2@example.com.crt | 37 + spec/fixtures/smime/oldsmime2@example.com.csr | 29 + spec/fixtures/smime/oldsmime2@example.com.key | 54 + .../smime/oldsmime2@example.com.secret | 1 + spec/fixtures/smime/smime1@example.com.crt | 37 + spec/fixtures/smime/smime1@example.com.csr | 29 + spec/fixtures/smime/smime1@example.com.key | 54 + spec/fixtures/smime/smime1@example.com.secret | 1 + spec/fixtures/smime/smime2@example.com.crt | 37 + spec/fixtures/smime/smime2@example.com.csr | 29 + spec/fixtures/smime/smime2@example.com.key | 54 + spec/fixtures/smime/smime2@example.com.secret | 1 + spec/fixtures/smime/smime3@example.com.crt | 37 + spec/fixtures/smime/smime3@example.com.csr | 29 + spec/fixtures/smime/smime3@example.com.key | 54 + spec/fixtures/smime/smime3@example.com.secret | 1 + .../smime/smimedouble@example.com.crt | 39 + .../smime/smimedouble@example.com.csr | 29 + .../smime/smimedouble@example.com.key | 54 + .../smime/smimedouble@example.com.secret | 1 + spec/lib/secure_mailing/smime_spec.rb | 534 +++++++++ spec/models/smime_certificate_spec.rb | 195 ++++ spec/models/trigger_spec.rb | 203 ++++ spec/requests/integration/smime_spec.rb | 196 ++++ spec/support/capybara/browser_test_helper.rb | 15 +- spec/support/capybara/common_actions.rb | 9 + spec/system/system/integration/smime_spec.rb | 43 + spec/system/ticket/create_spec.rb | 296 +++++ spec/system/ticket/zoom_spec.rb | 338 ++++++ 117 files changed, 5684 insertions(+), 566 deletions(-) create mode 100644 app/assets/javascripts/app/controllers/_integration/smime.coffee create mode 100644 app/assets/javascripts/app/controllers/ticket_zoom/form_handler_security_options.coffee create mode 100644 app/assets/javascripts/app/lib/mixins/security_options.coffee create mode 100644 app/assets/javascripts/app/views/integration/smime.jst.eco create mode 100644 app/assets/javascripts/app/views/integration/smime_certificate_add.jst.eco create mode 100644 app/assets/javascripts/app/views/integration/smime_group.jst.eco create mode 100644 app/assets/javascripts/app/views/integration/smime_list.jst.eco create mode 100644 app/assets/javascripts/app/views/integration/smime_private_key_add.jst.eco create mode 100644 app/controllers/integration/smime_controller.rb create mode 100644 app/models/channel/filter/secure_mailing.rb create mode 100644 app/models/smime_certificate.rb create mode 100644 app/policies/controllers/integration/smime_controller_policy.rb create mode 100644 config/routes/integration_smime.rb create mode 100644 db/migrate/20200121000001_smime_support.rb create mode 100644 lib/secure_mailing.rb create mode 100644 lib/secure_mailing/backend.rb create mode 100644 lib/secure_mailing/backend/handler.rb create mode 100644 lib/secure_mailing/smime.rb create mode 100644 lib/secure_mailing/smime/incoming.rb create mode 100644 lib/secure_mailing/smime/outgoing.rb create mode 100644 lib/secure_mailing/smime/retry.rb create mode 100644 public/assets/images/icons/not-signed.svg create mode 100644 public/assets/images/icons/signed.svg create mode 100644 spec/factories/smime_certificate.rb create mode 100644 spec/fixtures/smime/CaseInsenstive@eXample.COM.crt create mode 100644 spec/fixtures/smime/CaseInsenstive@eXample.COM.csr create mode 100644 spec/fixtures/smime/CaseInsenstive@eXample.COM.key create mode 100644 spec/fixtures/smime/CaseInsenstive@eXample.COM.secret create mode 100644 spec/fixtures/smime/ca.crt create mode 100644 spec/fixtures/smime/ca.key create mode 100644 spec/fixtures/smime/ca.secret create mode 100644 spec/fixtures/smime/expiredca.crt create mode 100644 spec/fixtures/smime/expiredca.key create mode 100644 spec/fixtures/smime/expiredca.secret create mode 100644 spec/fixtures/smime/expiredsmime1@example.com.crt create mode 100644 spec/fixtures/smime/expiredsmime1@example.com.csr create mode 100644 spec/fixtures/smime/expiredsmime1@example.com.key create mode 100644 spec/fixtures/smime/expiredsmime1@example.com.secret create mode 100644 spec/fixtures/smime/expiredsmime2@example.com.crt create mode 100644 spec/fixtures/smime/expiredsmime2@example.com.csr create mode 100644 spec/fixtures/smime/expiredsmime2@example.com.key create mode 100644 spec/fixtures/smime/expiredsmime2@example.com.secret create mode 100644 spec/fixtures/smime/generate/Dockerfile create mode 100644 spec/fixtures/smime/generate/README.md create mode 100644 spec/fixtures/smime/generate/config/config.cnf create mode 100644 spec/fixtures/smime/generate/config/double.cnf create mode 100644 spec/fixtures/smime/generate/config/pass.secret create mode 100755 spec/fixtures/smime/generate/docker-entrypoint.sh create mode 100755 spec/fixtures/smime/generate/run.sh create mode 100644 spec/fixtures/smime/oldca.crt create mode 100644 spec/fixtures/smime/oldca.key create mode 100644 spec/fixtures/smime/oldca.secret create mode 100644 spec/fixtures/smime/oldsmime1@example.com.crt create mode 100644 spec/fixtures/smime/oldsmime1@example.com.csr create mode 100644 spec/fixtures/smime/oldsmime1@example.com.key create mode 100644 spec/fixtures/smime/oldsmime1@example.com.secret create mode 100644 spec/fixtures/smime/oldsmime2@example.com.crt create mode 100644 spec/fixtures/smime/oldsmime2@example.com.csr create mode 100644 spec/fixtures/smime/oldsmime2@example.com.key create mode 100644 spec/fixtures/smime/oldsmime2@example.com.secret create mode 100644 spec/fixtures/smime/smime1@example.com.crt create mode 100644 spec/fixtures/smime/smime1@example.com.csr create mode 100644 spec/fixtures/smime/smime1@example.com.key create mode 100644 spec/fixtures/smime/smime1@example.com.secret create mode 100644 spec/fixtures/smime/smime2@example.com.crt create mode 100644 spec/fixtures/smime/smime2@example.com.csr create mode 100644 spec/fixtures/smime/smime2@example.com.key create mode 100644 spec/fixtures/smime/smime2@example.com.secret create mode 100644 spec/fixtures/smime/smime3@example.com.crt create mode 100644 spec/fixtures/smime/smime3@example.com.csr create mode 100644 spec/fixtures/smime/smime3@example.com.key create mode 100644 spec/fixtures/smime/smime3@example.com.secret create mode 100644 spec/fixtures/smime/smimedouble@example.com.crt create mode 100644 spec/fixtures/smime/smimedouble@example.com.csr create mode 100644 spec/fixtures/smime/smimedouble@example.com.key create mode 100644 spec/fixtures/smime/smimedouble@example.com.secret create mode 100644 spec/lib/secure_mailing/smime_spec.rb create mode 100644 spec/models/smime_certificate_spec.rb create mode 100644 spec/requests/integration/smime_spec.rb create mode 100644 spec/system/system/integration/smime_spec.rb diff --git a/Gemfile b/Gemfile index b079a4019..db01175f8 100644 --- a/Gemfile +++ b/Gemfile @@ -38,6 +38,9 @@ gem 'aasm' # core - authorization gem 'pundit' +# core - image processing +gem 'rszr', '0.5.2' + # performance - Memcached gem 'dalli' @@ -130,8 +133,8 @@ gem 'autodiscover', git: 'https://github.com/zammad-deps/autodiscover' gem 'rubyntlm', git: 'https://github.com/wimm/rubyntlm' gem 'viewpoint' -# image processing -gem 'rszr', '0.5.2' +# integrations - S/MIME +gem 'openssl' # Gems used only for develop/test and not required # in production environments by default. diff --git a/Gemfile.lock b/Gemfile.lock index a1c9ebe5e..a603ebf3c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -355,6 +355,7 @@ GEM omniauth-weibo-oauth2 (0.5.2) omniauth (~> 1.5) omniauth-oauth2 (>= 1.4.0) + openssl (2.1.2) parallel (1.19.1) parser (2.7.1.2) ast (~> 2.4.0) @@ -629,6 +630,7 @@ DEPENDENCIES omniauth-saml omniauth-twitter omniauth-weibo-oauth2 + openssl pg (= 0.21.0) pre-commit pry-rails diff --git a/LICENSE-ICONS-3RD-PARTY.json b/LICENSE-ICONS-3RD-PARTY.json index 80b42fd76..48d19536c 100644 --- a/LICENSE-ICONS-3RD-PARTY.json +++ b/LICENSE-ICONS-3RD-PARTY.json @@ -1,170 +1,135 @@ { - "spinner-small.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "sms.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "unordered-list.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "underline.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "strikethrough.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "split.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "reply.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "weibo-button.svg": { - "author": "Weibo", + "archived-modifier.svg": { + "author": "", "url": "", "license": "" }, - "telegram.svg": { - "author": "Telegram", - "url": "", - "license": "" - }, - "twitter-button.svg": { - "author": "Twitter", - "url": "twitter.com", - "license": "" - }, - "zoom-out.svg": { + "arrow-down.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "zoom-in.svg": { + "arrow-left.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "web.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "user.svg": { - "author": "R\u00e9my M\u00e9dard", - "url": "https:\/\/thenounproject.com\/search\/?q=user&i=10314", - "license": "CC 3.0 Attribution" - }, - "unmute.svg": { + "arrow-right.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "twitter.svg": { - "author": "Twitter", - "url": "twitter.com", - "license": "" - }, - "trash.svg": { - "author": "Filip Malinowski", - "url": "https:\/\/thenounproject.com\/term\/trash\/16505\/", - "license": "CC 3.0 Attribution" - }, - "total-tickets.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "tools.svg": { - "author": "Michael Kussmaul", - "url": "https:\/\/thenounproject.com\/term\/tools\/41655\/", - "license": "CC 3.0 Attribution" - }, - "templates.svg": { + "arrow-up.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "team.svg": { - "author": "R\u00e9my M\u00e9dard", - "url": "https:\/\/thenounproject.com\/catalarem\/uploads\/?i=2554", - "license": "CC 3.0 Attribution" - }, - "task-state.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "switchView.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "stopwatch.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "status.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "status-modified-outer-circle.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "file-text.svg": { + "bold.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "radio.svg": { + "chain.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "chat.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "checkbox-checked.svg": { "author": "Zammad", "url": "", "license": "MIT" }, - "radio-checked.svg": { + "checkbox-indeterminate.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "checkbox.svg": { "author": "Zammad", "url": "", "license": "MIT" }, + "checkmark.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "clipboard.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, "clock.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "important.svg": { + "cloud.svg": { + "author": "Kirill Ulitin", + "url": "https:\/\/thenounproject.com\/search\/?q=cloud&i=84976", + "license": "CC 3.0 Attribution" + }, + "cog.svg": { + "author": "Melvin Salas", + "url": "https:\/\/thenounproject.com\/term\/gear\/17369\/", + "license": "CC 3.0 Attribution" + }, + "crown.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, + "danger.svg": { + "author": "", + "url": "", + "license": "" + }, + "dashboard.svg": { + "author": "Anton Gajdosik", + "url": "https:\/\/thenounproject.com\/term\/gauge\/186120", + "license": "CC 3.0 Attribution" + }, "diagonal-cross.svg": { "author": "Zammad", "url": "", "license": "MIT" }, - "lock-open.svg": { + "document.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "download.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "draft-modifier.svg": { + "author": "", + "url": "", + "license": "" + }, + "draggable.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "dropdown-list.svg": { "author": "Zammad", "url": "", "license": "MIT" }, - "rearange.svg": { + "email-button.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "email.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" @@ -174,57 +139,107 @@ "url": "", "license": "MIT" }, - "mood-sad.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "radio.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "radio-checked.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "knowledge-base.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, "eye.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "document.svg": { + "eyedropper.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "low-priority.svg": { + "facebook-button.svg": { + "author": "Facebook", + "url": "", + "license": "" + }, + "facebook.svg": { + "author": "Facebook", + "url": "", + "license": "" + }, + "file-archive.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "long-arrow-down.svg": { + "file-code.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "italic.svg": { + "file-email.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "inactive-user.svg": { + "file-excel.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "inactive-organization.svg": { + "file-pdf.svg": { + "author": "Adobe", + "url": "", + "license": "" + }, + "file-powerpoint.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "file-text.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "file-unknown.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "file-word.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "form.svg": { + "author": "Pickin Studio", + "url": "https:\/\/thenounproject.com\/search\/?q=website&i=16523", + "license": "CC 3.0 Attribution" + }, + "forward.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "full-logo.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "github-button.svg": { + "author": "Github", + "url": "", + "license": "" + }, + "gitlab-button.svg": { + "author": "Gitlab", + "url": "", + "license": "" + }, + "google-button.svg": { + "author": "Google", + "url": "", + "license": "" + }, + "group.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "help.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" @@ -239,302 +254,17 @@ "url": "", "license": "MIT" }, - "reply-all.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "paperclip.svg": { - "author": "Cheesefork", - "url": "https:\/\/thenounproject.com\/search\/?q=attachment&i=197956", - "license": "CC 3.0 Attribution" - }, - "overflow-button.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "lock.svg": { + "in-process.svg": { "author": "Zammad", "url": "", "license": "MIT" }, - "lock-open.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "forward.svg": { + "inactive-organization.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "file-word.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "file-unknown.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "file-powerpoint.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "file-pdf.svg": { - "author": "Adobe", - "url": "", - "license": "" - }, - "file-excel.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "file-email.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "file-code.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "file-archive.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "office365-button.svg": { - "author": "Office 365", - "url": "", - "license": "" - }, - "logo.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "printer.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "note.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "phone.svg": { - "author": "Michael Zenaty", - "url": "https:\/\/thenounproject.com\/search\/?q=phone&i=21797", - "license": "CC 3.0 Attribution" - }, - "email.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "oauth2-button.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "linkedin-button.svg": { - "author": "Linkedin", - "url": "", - "license": "" - }, - "google-button.svg": { - "author": "Google", - "url": "", - "license": "" - }, - "gitlab-button.svg": { - "author": "Gitlab", - "url": "", - "license": "" - }, - "github-button.svg": { - "author": "Github", - "url": "", - "license": "" - }, - "facebook-button.svg": { - "author": "Facebook", - "url": "", - "license": "" - }, - "email-button.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "line-right-arrow.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "small-dot.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "signout.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "searchdetail.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "report.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "reopening.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "reload.svg": { - "author": "Anand A Nair", - "url": "https:\/\/thenounproject.com\/anandgrafiti\/uploads\/?i=2149", - "license": "CC 3.0 Attribution" - }, - "received-calls.svg": { - "author": "Michael Zenaty", - "url": "https:\/\/thenounproject.com\/search\/?q=phone&i=21797", - "license": "CC 3.0 Attribution" - }, - "plus.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "plus-small.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "person.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "pen.svg": { - "author": "Dmitry Baranovskiy", - "url": "https:\/\/thenounproject.com\/search\/?q=edit&i=5039", - "license": "CC 3.0 Attribution" - }, - "package.svg": { - "author": "Michael Wallner", - "url": "https:\/\/thenounproject.com\/search\/?q=package&i=25152", - "license": "CC 3.0 Attribution" - }, - "overviews.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "outbound-calls.svg": { - "author": "Michael Zenaty", - "url": "https:\/\/thenounproject.com\/search\/?q=phone&i=21797", - "license": "CC 3.0 Attribution" - }, - "organization.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "one-ticket.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "mute.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "mood-supergood.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "mood-superbad.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "mood-ok.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "mood-good.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "mood-bad.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "minus.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "minus-small.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "message.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "marker.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "magnifier.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "long-arrow-right.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "logotype.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "loading.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "list.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "line-left-arrow.svg": { + "inactive-user.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" @@ -544,147 +274,417 @@ "url": "https:\/\/thenounproject.com\/search\/?q=info&i=176431", "license": "CC 3.0 Attribution" }, - "in-process.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "help.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "group.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "full-logo.svg": { - "author": "Zammad", - "url": "", - "license": "MIT" - }, - "form.svg": { - "author": "Pickin Studio", - "url": "https:\/\/thenounproject.com\/search\/?q=website&i=16523", - "license": "CC 3.0 Attribution" - }, - "facebook.svg": { - "author": "Facebook", + "internal-modifier.svg": { + "author": "", "url": "", "license": "" }, - "eyedropper.svg": { + "italic.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "dropdown-list.svg": { + "knowledge-base-answer.svg": { + "author": "", + "url": "", + "license": "" + }, + "knowledge-base.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "line-left-arrow.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "line-right-arrow.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "linkedin-button.svg": { + "author": "Linkedin", + "url": "", + "license": "" + }, + "list.svg": { "author": "Zammad", "url": "", "license": "MIT" }, - "draggable.svg": { + "loading.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "lock-open.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "lock.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "logo.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "logotype.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "long-arrow-down.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "download.svg": { + "long-arrow-right.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "low-priority.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "dashboard.svg": { - "author": "Anton Gajdosik", - "url": "https:\/\/thenounproject.com\/term\/gauge\/186120", + "magnifier.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "marker.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "message.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "minus-small.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "minus.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "mood-bad.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "mood-good.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "mood-ok.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "mood-sad.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "mood-superbad.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "mood-supergood.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "mute.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "not-signed.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "note.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "oauth2-button.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "office365-button.svg": { + "author": "Office 365", + "url": "", + "license": "" + }, + "one-ticket.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "organization.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "outbound-calls.svg": { + "author": "Michael Zenaty", + "url": "https:\/\/thenounproject.com\/search\/?q=phone&i=21797", "license": "CC 3.0 Attribution" }, - "crown.svg": { + "overflow-button.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "cog.svg": { - "author": "Melvin Salas", - "url": "https:\/\/thenounproject.com\/term\/gear\/17369\/", + "overviews.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "package.svg": { + "author": "Michael Wallner", + "url": "https:\/\/thenounproject.com\/search\/?q=package&i=25152", "license": "CC 3.0 Attribution" }, - "cloud.svg": { - "author": "Kirill Ulitin", - "url": "https:\/\/thenounproject.com\/search\/?q=cloud&i=84976", + "paperclip.svg": { + "author": "Cheesefork", + "url": "https:\/\/thenounproject.com\/search\/?q=attachment&i=197956", "license": "CC 3.0 Attribution" }, - "clipboard.svg": { + "pen.svg": { + "author": "Dmitry Baranovskiy", + "url": "https:\/\/thenounproject.com\/search\/?q=edit&i=5039", + "license": "CC 3.0 Attribution" + }, + "person.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "bold.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" + "phone.svg": { + "author": "Michael Zenaty", + "url": "https:\/\/thenounproject.com\/search\/?q=phone&i=21797", + "license": "CC 3.0 Attribution" }, - "checkbox.svg": { + "plus-small.svg": { "author": "Zammad", "url": "", "license": "MIT" }, - "checkbox-indeterminate.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "checkmark.svg": { + "plus.svg": { "author": "Zammad", "url": "", "license": "MIT" }, - "chain.svg": { + "printer.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "bold.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "checkbox.svg": { + "radio-checked.svg": { "author": "Zammad", "url": "", "license": "MIT" }, - "checkbox-indeterminate.svg": { - "author": "Felix Niklas", - "url": "", - "license": "MIT" - }, - "checkbox-checked.svg": { + "radio.svg": { "author": "Zammad", "url": "", "license": "MIT" }, - "arrow-down.svg": { + "rearange.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "arrow-up.svg": { + "received-calls.svg": { + "author": "Michael Zenaty", + "url": "https:\/\/thenounproject.com\/search\/?q=phone&i=21797", + "license": "CC 3.0 Attribution" + }, + "reload.svg": { + "author": "Anand A Nair", + "url": "https:\/\/thenounproject.com\/anandgrafiti\/uploads\/?i=2149", + "license": "CC 3.0 Attribution" + }, + "reopening.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "reply-all.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "arrow-right.svg": { + "reply.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "arrow-left.svg": { + "report.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "searchdetail.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" }, - "chat.svg": { + "signed.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "signout.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "small-dot.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "sms.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "spinner-small.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "split.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "status-modified-outer-circle.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "status.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "stopwatch.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "strikethrough.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "switchView.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "task-state.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "team.svg": { + "author": "R\u00e9my M\u00e9dard", + "url": "https:\/\/thenounproject.com\/catalarem\/uploads\/?i=2554", + "license": "CC 3.0 Attribution" + }, + "telegram.svg": { + "author": "Telegram", + "url": "", + "license": "" + }, + "templates.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "tools.svg": { + "author": "Michael Kussmaul", + "url": "https:\/\/thenounproject.com\/term\/tools\/41655\/", + "license": "CC 3.0 Attribution" + }, + "total-tickets.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "trash.svg": { + "author": "Filip Malinowski", + "url": "https:\/\/thenounproject.com\/term\/trash\/16505\/", + "license": "CC 3.0 Attribution" + }, + "twitter-button.svg": { + "author": "Twitter", + "url": "twitter.com", + "license": "" + }, + "twitter.svg": { + "author": "Twitter", + "url": "twitter.com", + "license": "" + }, + "underline.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "unmute.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "unordered-list.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "user.svg": { + "author": "R\u00e9my M\u00e9dard", + "url": "https:\/\/thenounproject.com\/search\/?q=user&i=10314", + "license": "CC 3.0 Attribution" + }, + "web.svg": { + "author": "Zammad", + "url": "", + "license": "MIT" + }, + "weibo-button.svg": { + "author": "Weibo", + "url": "", + "license": "" + }, + "zoom-in.svg": { + "author": "Felix Niklas", + "url": "", + "license": "MIT" + }, + "zoom-out.svg": { "author": "Felix Niklas", "url": "", "license": "MIT" diff --git a/app/assets/javascripts/app/controllers/_integration/smime.coffee b/app/assets/javascripts/app/controllers/_integration/smime.coffee new file mode 100644 index 000000000..542f8bbc1 --- /dev/null +++ b/app/assets/javascripts/app/controllers/_integration/smime.coffee @@ -0,0 +1,258 @@ +class Index extends App.ControllerIntegrationBase + featureIntegration: 'smime_integration' + featureName: 'S/MIME' + featureConfig: 'smime_config' + description: [ + ['S/MIME (Secure/Multipurpose Internet Mail Extensions) is a widely accepted method (or more precisely, a protocol) for sending digitally signed and encrypted messages.'] + ] + events: + 'change .js-switch input': 'switch' + + render: => + super + new Form( + el: @$('.js-form') + ) + + new App.HttpLog( + el: @$('.js-log') + facility: 'S/MIME' + ) + +class Form extends App.Controller + events: + 'click .js-addCertificate': 'addCertificate' + 'click .js-addPrivateKey': 'addPrivateKey' + 'click .js-updateGroup': 'updateGroup' + + constructor: -> + super + @render() + + currentConfig: -> + App.Setting.get('smime_config') + + setConfig: (value) -> + App.Setting.set('smime_config', value, {notify: true}) + + render: => + @config = @currentConfig() + + @html App.view('integration/smime')( + config: @config + ) + @certList() + @groupList() + + certList: => + new List(el: @$('.js-certList')) + + groupList: => + new Group( + el: @$('.js-groupList') + config: @config + ) + + addCertificate: => + new Certificate( + callback: @list + ) + + addPrivateKey: => + new PrivateKey( + callback: @list + ) + + updateGroup: (e) => + params = App.ControllerForm.params(e) + @setConfig(params) + +class Certificate extends App.ControllerModal + buttonClose: true + buttonCancel: true + buttonSubmit: 'Add' + autoFocusOnFirstInput: false + head: 'Add Certificate' + large: true + + content: -> + + # show start dialog + content = $(App.view('integration/smime_certificate_add')( + head: 'Add Certificate' + )) + content + + onSubmit: (e) => + params = new FormData($(e.currentTarget).closest('form').get(0)) + params.set('try', true) + if _.isEmpty(params.get('data')) + params.delete('data') + @formDisable(e) + + @ajax( + id: 'smime-certificate-add' + type: 'POST' + url: "#{@apiPath}/integration/smime/certificate" + processData: false + contentType: false + cache: false + data: params + success: (data, status, xhr) => + console.log('success') + @close() + @callback() + error: (data) => + console.log('error') + @close() + details = data.responseJSON || {} + @notify + type: 'error' + msg: App.i18n.translateContent(details.error_human || details.error || 'Unable to import!') + timeout: 6000 + ) + +class PrivateKey extends App.ControllerModal + buttonClose: true + buttonCancel: true + buttonSubmit: 'Add' + autoFocusOnFirstInput: false + head: 'Add Private Key' + large: true + + content: -> + + # show start dialog + content = $(App.view('integration/smime_private_key_add')( + head: 'Add Private Key' + )) + content + + onSubmit: (e) => + params = new FormData($(e.currentTarget).closest('form').get(0)) + params.set('try', true) + if _.isEmpty(params.get('data')) + params.delete('data') + @formDisable(e) + + @ajax( + id: 'smime-private_key-add' + type: 'POST' + url: "#{@apiPath}/integration/smime/private_key" + processData: false + contentType: false + cache: false + data: params + success: (data, status, xhr) => + @close() + @callback() + error: (data) => + @close() + details = data.responseJSON || {} + @notify + type: 'error' + msg: App.i18n.translateContent(details.error_human || details.error || 'Unable to import!') + timeout: 6000 + ) + + +class List extends App.Controller + events: + 'click .js-remove': 'remove' + + constructor: -> + super + @load() + + load: => + @ajax( + id: 'smime-list' + type: 'GET' + url: "#{@apiPath}/integration/smime/certificate" + success: (data, status, xhr) => + @render(data) + + error: (data, status) => + + # do not close window if request is aborted + return if status is 'abort' + + details = data.responseJSON || {} + @notify( + type: 'error' + msg: App.i18n.translateContent(details.error_human || details.error || 'Unable to load list of certificates!') + ) + + # do something + ) + + render: (data) => + @html App.view('integration/smime_list')( + certs: data + ) + + remove: (e) => + e.preventDefault() + id = $(e.currentTarget).parents('tr').data('id') + return if !id + + @ajax( + id: 'smime-list' + type: 'DELETE' + url: "#{@apiPath}/integration/smime/certificate" + data: JSON.stringify(id: id) + success: (data, status, xhr) => + @load() + + error: (data, status) => + + # do not close window if request is aborted + return if status is 'abort' + + details = data.responseJSON || {} + @notify( + type: 'error' + msg: App.i18n.translateContent(details.error_human || details.error || 'Unable to save!') + ) + ) + +class Group extends App.Controller + constructor: -> + super + @render() + + render: (data) => + groups = App.Group.search(sortBy: 'name', filter: active: true) + @html App.view('integration/smime_group')( + groups: groups + ) + for group in groups + for type, selector of { default_sign: 'js-signDefault', default_encryption: 'js-encryptionDefault' } + selected = true + if @config?.group_id && @config.group_id[type] + selected = @config.group_id[type][group.id.toString()] + selection = App.UiElement.boolean.render( + name: "group_id::#{type}::#{group.id}" + multiple: false + null: false + nulloption: false + value: selected + class: 'form-control--small' + ) + @$("[data-id=#{group.id}] .#{selector}").html(selection) + +class State + @current: -> + App.Setting.get('smime_integration') + +App.Config.set( + 'Integrationsmime' + { + name: 'S/MIME' + target: '#system/integration/smime' + description: 'S/MIME enables you to send digitally signed and encrypted messages.' + controller: Index + state: State + } + 'NavBarIntegrations' +) diff --git a/app/assets/javascripts/app/controllers/_ui_element/ticket_perform_action.coffee b/app/assets/javascripts/app/controllers/_ui_element/ticket_perform_action.coffee index c7d2002e6..b1ee3689c 100644 --- a/app/assets/javascripts/app/controllers/_ui_element/ticket_perform_action.coffee +++ b/app/assets/javascripts/app/controllers/_ui_element/ticket_perform_action.coffee @@ -428,6 +428,35 @@ class App.UiElement.ticket_perform_action elementRow.find('.js-setNotification').html(notificationElement).removeClass('hide') + if App.Config.get('smime_integration') == true + selection = App.UiElement.select.render( + name: "#{name}::sign" + multiple: false + options: { + 'no': 'Do not sign email' + 'discard': 'Sign email (if not possible, discard notification)' + 'always': 'Sign email (if not possible, send notification anyway)' + } + value: meta.sign + translate: true + ) + + elementRow.find('.js-sign').html(selection) + + selection = App.UiElement.select.render( + name: "#{name}::encryption" + multiple: false + options: { + 'no': 'Do not encrypt email' + 'discard': 'Encrypt email (if not possible, discard notification)' + 'always': 'Encrypt email (if not possible, send notification anyway)' + } + value: meta.encryption + translate: true + ) + + elementRow.find('.js-encryption').html(selection) + @buildArticleArea: (articleType, elementFull, elementRow, groupAndAttribute, elements, meta, attribute) -> return if elementRow.find(".js-setArticle .js-body-#{articleType}").get(0) diff --git a/app/assets/javascripts/app/controllers/agent_ticket_create.coffee b/app/assets/javascripts/app/controllers/agent_ticket_create.coffee index cd828e6c3..44774e636 100644 --- a/app/assets/javascripts/app/controllers/agent_ticket_create.coffee +++ b/app/assets/javascripts/app/controllers/agent_ticket_create.coffee @@ -1,11 +1,14 @@ class App.TicketCreate extends App.Controller + @include App.SecurityOptions + elements: '.tabsSidebar': 'sidebar' events: - 'click .type-tabs .tab': 'changeFormType' - 'submit form': 'submit' - 'click .js-cancel': 'cancel' + 'click .type-tabs .tab': 'changeFormType' + 'submit form': 'submit' + 'click .js-cancel': 'cancel' + 'click .js-active-toggle': 'toggleButton' types: { 'phone-in': { @@ -121,12 +124,25 @@ class App.TicketCreate extends App.Controller # force changing signature @$('[name="group_id"]').trigger('change') + # add observer to change options + @$('[name="cc"], [name="group_id"], [name="customer_id"]').bind('change', => + @updateSecurityOptions() + ) + @updateSecurityOptions() + # show cc if type is 'email-out' @$('[name="cc"]').closest('.form-group').removeClass('hide') + + if @securityEnabled() + @securityOptionsShow() + else @$('[name="cc"]').closest('.form-group').addClass('hide') + if @securityEnabled() + @securityOptionsHide() + # show notice @$('.js-note').addClass('hide') @$(".js-note[data-type='#{type}']").removeClass('hide') @@ -165,6 +181,13 @@ class App.TicketCreate extends App.Controller return false if !diff || _.isEmpty(diff) return true + updateSecurityOptions: => + params = @params() + if params.customer_id_completion + params.to = params.customer_id_completion + + @updateSecurityOptionsRemote(@taskKey, params, params, @paramsSecurity()) + autosaveStop: => @clearDelay('ticket-create-form-update') @el.off('change.local blur.local keyup.local paste.local input.local') @@ -385,6 +408,9 @@ class App.TicketCreate extends App.Controller @tokanice() + toggleButton: (event) -> + @$(event.currentTarget).toggleClass('btn--active') + tokanice: -> App.Utils.tokanice('.content.active input[name=cc]', 'email') @@ -447,7 +473,7 @@ class App.TicketCreate extends App.Controller # create article if sender.name is 'Customer' - params['article'] = { + params.article = { to: (group && group.name) || '' from: params.customer_id_completion cc: params.cc @@ -459,7 +485,7 @@ class App.TicketCreate extends App.Controller content_type: 'text/html' } else - params['article'] = { + params.article = { from: (group && group.name) || '' to: params.customer_id_completion cc: params.cc @@ -471,6 +497,11 @@ class App.TicketCreate extends App.Controller content_type: 'text/html' } + # add security params + if @securityOptionsShown() + params.article.preferences ||= {} + params.article.preferences.security = @paramsSecurity() + ticket.load(params) ticketErrorsTop = ticket.validate( diff --git a/app/assets/javascripts/app/controllers/ticket_zoom.coffee b/app/assets/javascripts/app/controllers/ticket_zoom.coffee index cb147cc45..a6e685d1d 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom.coffee @@ -709,12 +709,11 @@ class App.TicketZoom extends App.Controller markFormDiff: (diff = {}) => ticketForm = @$('.edit') ticketSidebar = @$('.tabsSidebar-tab[data-tab="ticket"]') - articleForm = @$('.article-add') resetButton = @$('.js-reset') params = {} - params.ticket = @forRemoveMeta(@formParam(ticketForm)) - params.article = @forRemoveMeta(@formParam(articleForm)) + params.ticket = @forRemoveMeta(@ticketParams()) + params.article = @forRemoveMeta(@articleNew.params()) # clear all changes if _.isEmpty(diff.ticket) && _.isEmpty(diff.article) @@ -743,6 +742,9 @@ class App.TicketZoom extends App.Controller resetButton.removeClass('hide') + ticketParams: => + @formParam(@$('.edit')) + submitDisable: (e) => if e @formDisable(e) @@ -767,7 +769,7 @@ class App.TicketZoom extends App.Controller @submitEnable(e) return - ticketParams = @formParam(@$('.edit')) + ticketParams = @ticketParams() articleParams = @articleNew.params() # validate ticket diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/article_action/email_reply.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/article_action/email_reply.coffee index 6144e0254..e9b19457d 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom/article_action/email_reply.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom/article_action/email_reply.coffee @@ -253,7 +253,7 @@ class EmailReply extends App.Controller icon: 'email' attributes: attributes internal: false, - features: ['attachment'] + features: ['attachment', 'security'] } articleTypes diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee index c63f65c72..5c07d6f52 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee @@ -1,4 +1,6 @@ class App.TicketZoomArticleNew extends App.Controller + @include App.SecurityOptions + elements: '.js-textarea': 'textarea' '.attachmentPlaceholder': 'attachmentPlaceholder' @@ -24,6 +26,7 @@ class App.TicketZoomArticleNew extends App.Controller 'click .list-entry-type div': 'changeType' 'focus .js-textarea': 'openTextarea' 'input .js-textarea': 'updateLetterCount' + 'click .js-active-toggle': 'toggleButton' constructor: -> super @@ -106,6 +109,12 @@ class App.TicketZoomArticleNew extends App.Controller @render() ) + # update security options + @bind('ui::ticket::updateSecurityOptions', (data) => + return if data.taskKey isnt @taskKey + @updateSecurityOptions() + ) + tokanice: (type = 'email') -> App.Utils.tokanice('.content.active .js-to, .js-cc, js-bcc', type) @@ -294,6 +303,11 @@ class App.TicketZoomArticleNew extends App.Controller params.body = "#{params.body}\n#{@signature.text()}" break + # add security params + if @securityOptionsShown() + params.preferences ||= {} + params.preferences.security = @paramsSecurity() + params validate: => @@ -417,6 +431,15 @@ class App.TicketZoomArticleNew extends App.Controller @warningTextLength = articleType.warningTextLength @delay(@updateLetterCount, 600) @$('.js-textSizeLimit').removeClass('hide') + if name is 'security' + if @securityEnabled() + @securityOptionsShow() + + # add observer to change options + @$('.js-to, .js-cc').bind('change', => + @updateSecurityOptions() + ) + @updateSecurityOptions() # convert remote src images to data uri @$('[data-name=body] img').each( (i,image) -> @@ -434,6 +457,9 @@ class App.TicketZoomArticleNew extends App.Controller @scrollToBottom() if wasScrolledToBottom + updateSecurityOptions: => + @updateSecurityOptionsRemote(@ticket.id, @ui.ticketParams(), @params(), @paramsSecurity()) + setArticleTypePost: (type, signaturePosition = 'bottom') => for localConfig in @actions() if localConfig && localConfig.setArticleTypePost @@ -625,3 +651,6 @@ class App.TicketZoomArticleNew extends App.Controller if localConfig actions.push localConfig actions + + toggleButton: (event) -> + @$(event.currentTarget).toggleClass('btn--active') diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/article_view.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/article_view.coffee index d83e03dff..09befde85 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom/article_view.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom/article_view.coffee @@ -81,11 +81,13 @@ class ArticleViewItem extends App.ObserverController '.textBubble-overflowContainer': 'textBubbleOverflowContainer' events: - 'click .textBubble': 'toggleMetaWithDelay' - 'click .textBubble a': 'stopPropagation' - 'click .js-toggleFold': 'toggleFold' - 'click .richtext-content img': 'imageView' - 'click .attachments img': 'imageView' + 'click .article-meta-permanent': 'toggleMetaWithDelay' + 'click .textBubble': 'toggleMetaWithDelay' + 'click .textBubble a': 'stopPropagation' + 'click .js-toggleFold': 'toggleFold' + 'click .richtext-content img': 'imageView' + 'click .attachments img': 'imageView' + 'click .js-securityRetryProcess': 'retrySecurityProcess' constructor: -> super @@ -296,6 +298,46 @@ class ArticleViewItem extends App.ObserverController else bubbleOverflowContainer.addClass('hide') + retrySecurityProcess: (e) -> + e.preventDefault() + e.stopPropagation() + + article_id = $(e.target).closest('.ticket-article-item').data('id') + + @ajax( + id: 'retrySecurityProcess' + type: 'POST' + url: "#{@apiPath}/ticket_articles/#{article_id}/retry_security_process" + processData: true + success: (data, status, xhr) => + if data.sign.success + @notify + type: 'success' + msg: App.i18n.translateContent('Verify sign success!') + else if data.sign.comment + comment = App.i18n.translateContent('Verify sign failed!') + ' ' + App.i18n.translateContent(data.sign.comment || '') + @notify + type: 'error' + msg: comment + timeout: 2000 + + if data.encryption.success + @notify + type: 'success' + msg: App.i18n.translateContent('Decryption success!') + else if data.encryption.comment + comment = App.i18n.translateContent('Decryption failed!') + ' ' + App.i18n.translateContent(data.encryption.comment || '') + @notify + type: 'error' + msg: comment + timeout: 2000 + + error: (xhr) => + @notify + type: 'error' + msg: App.i18n.translateContent('Retry security process failed!') + ) + stopPropagation: (e) -> e.stopPropagation() diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/form_handler_security_options.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/form_handler_security_options.coffee new file mode 100644 index 000000000..2ff5ca738 --- /dev/null +++ b/app/assets/javascripts/app/controllers/ticket_zoom/form_handler_security_options.coffee @@ -0,0 +1,10 @@ +class TicketZoomFormHandleSecurityOptions + + # central method, is getting called on every ticket form change + # but only trigger event for group_id changes + @run: (params, attribute, attributes, classname, form, ui) -> + + return if attribute.name isnt 'group_id' + App.Event.trigger('ui::ticket::updateSecurityOptions', { taskKey: ui.taskKey }) + +App.Config.set('140-ticketFormSecurityOptions', TicketZoomFormHandleSecurityOptions, 'TicketZoomFormHandler') diff --git a/app/assets/javascripts/app/lib/mixins/security_options.coffee b/app/assets/javascripts/app/lib/mixins/security_options.coffee new file mode 100644 index 000000000..47348cd9a --- /dev/null +++ b/app/assets/javascripts/app/lib/mixins/security_options.coffee @@ -0,0 +1,89 @@ +# Methods for displaying security ui elements and to get security params + +App.SecurityOptions = + + securityOptionsShow: -> + @$('.js-securityOptions').removeClass('hide') + + securityOptionsHide: -> + @$('.js-securityOptions').addClass('hide') + + securityOptionsShown: -> + !@$('.js-securityOptions').hasClass('hide') + + securityEnabled: -> + App.Config.get('smime_integration') + + paramsSecurity: => + if @$('.js-securityOptions').hasClass('hide') + return {} + + security = {} + security.encryption ||= {} + security.sign ||= {} + security.type = 'S/MIME' + if @$('.js-securityEncrypt').hasClass('btn--active') + security.encryption.success = true + if @$('.js-securitySign').hasClass('btn--active') + security.sign.success = true + security + + updateSecurityOptionsRemote: (key, ticket, article, securityOptions) -> + callback = => + @ajax( + id: "smime-check-#{key}" + type: 'POST' + url: "#{@apiPath}/integration/smime" + data: JSON.stringify(ticket: ticket, article: article) + processData: true + success: (data, status, xhr) => + + # get default selected security options + selected = + encryption: true + sign: true + smimeConfig = App.Config.get('smime_config') + for type, selector of { default_sign: 'sign', default_encryption: 'encryption' } + if smimeConfig?.group_id?[type] && ticket.group_id + if smimeConfig.group_id[type][ticket.group_id.toString()] == false + selected[selector] = false + + @$('.js-securityEncrypt').attr('title', data.encryption.comment) + + # if encryption is possible + if data.encryption.success is true + @$('.js-securityEncrypt').attr('disabled', false) + + # overrule current selection with Group configuration + if selected.encryption + @$('.js-securityEncrypt').addClass('btn--active') + else + @$('.js-securityEncrypt').removeClass('btn--active') + + # if encryption is not possible + else + @$('.js-securityEncrypt').attr('disabled', true) + @$('.js-securityEncrypt').removeClass('btn--active') + + @$('.js-securitySign').attr('title', data.sign.comment) + + # if sign is possible + if data.sign.success is true + @$('.js-securitySign').attr('disabled', false) + + # overrule current selection with Group configuration + if selected.sign + @$('.js-securitySign').addClass('btn--active') + else + @$('.js-securitySign').removeClass('btn--active') + + # if sign is possible + else + @$('.js-securitySign').attr('disabled', true) + @$('.js-securitySign').removeClass('btn--active') + + error: (data) -> + details = data.responseJSON || {} + console.log(details) + ) + @delay(callback, 200, 'security-check') diff --git a/app/assets/javascripts/app/views/agent_ticket_create.jst.eco b/app/assets/javascripts/app/views/agent_ticket_create.jst.eco index f37872bcc..fef02088e 100644 --- a/app/assets/javascripts/app/views/agent_ticket_create.jst.eco +++ b/app/assets/javascripts/app/views/agent_ticket_create.jst.eco @@ -27,10 +27,17 @@
-
+
+
+ +
+
+
<%- @Icon('lock-open', 'btn-inactive-icon') %><%- @Icon('lock', 'btn-active-icon') %><%- @T('Encrypt') %>
+
<%- @Icon('not-signed', 'btn-inactive-icon') %><%- @Icon('signed', 'btn-active-icon') %><%- @T('Sign') %>
+
+
-
diff --git a/app/assets/javascripts/app/views/generic/select.jst.eco b/app/assets/javascripts/app/views/generic/select.jst.eco index 12d043ed8..d60ebcc05 100644 --- a/app/assets/javascripts/app/views/generic/select.jst.eco +++ b/app/assets/javascripts/app/views/generic/select.jst.eco @@ -1,5 +1,5 @@
- id="<%= @attribute.id %>"<% end %> class="form-control<%= " #{ @attribute.class }" if @attribute.class %>" name="<%= @attribute.name %>" <%= @attribute.multiple %> <%= @attribute.required %> <%= @attribute.autofocus %> <% if @attribute.disabled: %> disabled<% end %>> <% if @attribute.options: %> <% for row in @attribute.options: %> diff --git a/app/assets/javascripts/app/views/generic/ticket_perform_action/notification.jst.eco b/app/assets/javascripts/app/views/generic/ticket_perform_action/notification.jst.eco index 4348ce1af..5550fc97d 100644 --- a/app/assets/javascripts/app/views/generic/ticket_perform_action/notification.jst.eco +++ b/app/assets/javascripts/app/views/generic/ticket_perform_action/notification.jst.eco @@ -24,5 +24,13 @@
-
<%- @meta.body %>
+
+
+
<%- @meta.body %>
+
+
+
+
+
+
diff --git a/app/assets/javascripts/app/views/integration/ldap.jst.eco b/app/assets/javascripts/app/views/integration/ldap.jst.eco index b580e21fa..3b2a81f37 100644 --- a/app/assets/javascripts/app/views/integration/ldap.jst.eco +++ b/app/assets/javascripts/app/views/integration/ldap.jst.eco @@ -48,7 +48,7 @@ <%- @T('No Entries') %> <% else: %> - +
<%- @T('LDAP') %> @@ -69,7 +69,7 @@
<%- @T('No Entries') %>
<% else: %> - +
<%- @T('LDAP') %> diff --git a/app/assets/javascripts/app/views/integration/smime.jst.eco b/app/assets/javascripts/app/views/integration/smime.jst.eco new file mode 100644 index 000000000..7faf8ac95 --- /dev/null +++ b/app/assets/javascripts/app/views/integration/smime.jst.eco @@ -0,0 +1,14 @@ + +

<%- @T('Certificates & Private Keys') %>

+
+ +
<%- @T('Add Certificate') %>
+
<%- @T('Add Private Key') %>
+ +
+ +

<%- @T('Default Behavior') %>

+

Choose the default behavior of the S/MIME integration on per group basis. If signing or encrypting is not possible, the setting has no effect. Agents call always manually alter the behavior for each article.

+
+
<%- @T('Update') %>
+ diff --git a/app/assets/javascripts/app/views/integration/smime_certificate_add.jst.eco b/app/assets/javascripts/app/views/integration/smime_certificate_add.jst.eco new file mode 100644 index 000000000..731f9ff45 --- /dev/null +++ b/app/assets/javascripts/app/views/integration/smime_certificate_add.jst.eco @@ -0,0 +1,26 @@ +
+

+ +
+
+ +
+
+ +
+
+ +
+ <%- @T('or') %> +
+ +
+
+ +
+
+ +
+
+ +
\ No newline at end of file diff --git a/app/assets/javascripts/app/views/integration/smime_group.jst.eco b/app/assets/javascripts/app/views/integration/smime_group.jst.eco new file mode 100644 index 000000000..fc57f49d6 --- /dev/null +++ b/app/assets/javascripts/app/views/integration/smime_group.jst.eco @@ -0,0 +1,24 @@ + + + + + + <% if _.isEmpty(@groups): %> + + + + <% else: %> + <% for group in @groups: %> + + +
<%- @T('Group') %> + <%- @T('Sign') %> + <%- @T('Encryption') %> +
+ <%- @T('No Entries') %> +
<%= group.name %> + + + <% end %> + <% end %> +
diff --git a/app/assets/javascripts/app/views/integration/smime_list.jst.eco b/app/assets/javascripts/app/views/integration/smime_list.jst.eco new file mode 100644 index 000000000..e716e1e88 --- /dev/null +++ b/app/assets/javascripts/app/views/integration/smime_list.jst.eco @@ -0,0 +1,34 @@ + + + + + + <% if _.isEmpty(@certs): %> + + + + <% else: %> + <% for cert in @certs: %> + + +
<%- @T('Subject') %> + <%- @T('Hash') %> + <%- @T('Fingerprint') %> + <%- @T('Created') %> + <%- @T('Expires') %> + <%- @T('Actions') %> +
+ <%- @T('No Entries') %> +
<%= cert.subject %> + <% if cert.private_key: %>
<%- @T('Including private key.') %><% end %> +
<%= cert.doc_hash %> + <%= cert.fingerprint.substr(1, 10) %>... + <%- @datetime(cert.not_before_at) %> + <%- @datetime(cert.not_after_at) %> + +
+ <%- @Icon('trash') %> +
+ <% end %> + <% end %> +
diff --git a/app/assets/javascripts/app/views/integration/smime_private_key_add.jst.eco b/app/assets/javascripts/app/views/integration/smime_private_key_add.jst.eco new file mode 100644 index 000000000..c17484d18 --- /dev/null +++ b/app/assets/javascripts/app/views/integration/smime_private_key_add.jst.eco @@ -0,0 +1,37 @@ +
+

+ +
+
+
+ +
+
+ +
+
+ +
+ <%- @T('or') %> +
+ +
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+ +
diff --git a/app/assets/javascripts/app/views/layout_ref/buttons.jst.eco b/app/assets/javascripts/app/views/layout_ref/buttons.jst.eco index 5561ebab8..399fb89ef 100644 --- a/app/assets/javascripts/app/views/layout_ref/buttons.jst.eco +++ b/app/assets/javascripts/app/views/layout_ref/buttons.jst.eco @@ -4,9 +4,10 @@

Normal Buttons

Default

Default Button
+
Active Button
Slim Button
-
Disabled Button (via .is-disabled)
-
Disabled Button (via [disabled])
+
.is-disabled Button
+
[disabled] Button

Primary

Primary Button
@@ -24,6 +25,7 @@
Split First Button
Split Button
+
Active Split Button
Split Last Button
diff --git a/app/assets/javascripts/app/views/ticket_zoom/article_new.jst.eco b/app/assets/javascripts/app/views/ticket_zoom/article_new.jst.eco index 5f8eb25c3..d5ddcd324 100644 --- a/app/assets/javascripts/app/views/ticket_zoom/article_new.jst.eco +++ b/app/assets/javascripts/app/views/ticket_zoom/article_new.jst.eco @@ -56,6 +56,15 @@
+
+
+ +
+
+
<%- @Icon('lock-open', 'btn-inactive-icon') %><%- @Icon('lock', 'btn-active-icon') %><%- @T('Encrypt') %>
+
<%- @Icon('not-signed', 'btn-inactive-icon') %><%- @Icon('signed', 'btn-active-icon') %><%- @T('Sign') %>
+
+
diff --git a/app/assets/javascripts/app/views/ticket_zoom/article_view.jst.eco b/app/assets/javascripts/app/views/ticket_zoom/article_view.jst.eco index 275139cf6..7c82c506b 100644 --- a/app/assets/javascripts/app/views/ticket_zoom/article_view.jst.eco +++ b/app/assets/javascripts/app/views/ticket_zoom/article_view.jst.eco @@ -31,9 +31,51 @@
<% end %> + <% if @article.preferences.security?.encryption?.success || @article.preferences.security?.sign?.success: %> + + <% end %> +
<% if @article.sender.name isnt 'Agent': %> <% position = 'left' %> diff --git a/app/assets/stylesheets/svg-dimensions.css b/app/assets/stylesheets/svg-dimensions.css index c97090dab..11bd7d184 100644 --- a/app/assets/stylesheets/svg-dimensions.css +++ b/app/assets/stylesheets/svg-dimensions.css @@ -81,6 +81,7 @@ .icon-mood-superbad { width: 60px; height: 59px; } .icon-mood-supergood { width: 60px; height: 59px; } .icon-mute { width: 16px; height: 16px; } +.icon-not-signed { width: 14px; height: 14px; } .icon-note { width: 16px; height: 16px; } .icon-oauth2-button { width: 29px; height: 24px; } .icon-office365-button { width: 29px; height: 24px; } @@ -107,6 +108,7 @@ .icon-reply { width: 16px; height: 17px; } .icon-report { width: 20px; height: 20px; } .icon-searchdetail { width: 18px; height: 14px; } +.icon-signed { width: 14px; height: 14px; } .icon-signout { width: 15px; height: 19px; } .icon-small-dot { width: 16px; height: 16px; } .icon-sms { width: 17px; height: 17px; } diff --git a/app/assets/stylesheets/zammad.scss b/app/assets/stylesheets/zammad.scss index 0bccdea8d..67796f597 100644 --- a/app/assets/stylesheets/zammad.scss +++ b/app/assets/stylesheets/zammad.scss @@ -155,7 +155,6 @@ a { &.is-disabled, &[disabled] { - pointer-events: none; cursor: not-allowed !important; opacity: .33; } @@ -443,7 +442,6 @@ pre code.hljs { &.is-disabled, &[disabled], &:disabled { - pointer-events: none; cursor: not-allowed; opacity: .33; } @@ -492,20 +490,32 @@ pre code.hljs { } &.btn--small { - height: 27px; + height: 26px; font-size: 11px; padding-left: 8px; padding-right: 8px; } } + &-active-icon { + display: none; + } + &--active { - background: hsla(0,0%,0%,.5); + background: hsl(204,7%,28%); color: white; &:active { background: hsla(0,0%,0%,.55); } + + .btn-inactive-icon { + display: none; + } + + .btn-active-icon { + display: inline; + } } // used in .recipientList-controls @@ -531,9 +541,11 @@ pre code.hljs { &--primary { color: white; background: hsl(203,65%,55%); + &:active { background: hsl(203,65%,45%); } + .icon { fill: white; opacity: 1; @@ -1543,7 +1555,7 @@ label, .checkbox.form-group label, .label { text-transform: uppercase; - color: hsl(198,19%,72%); + color: hsl(198,15%,69%); display: block; font-size: 13px; font-weight: normal; @@ -1658,6 +1670,18 @@ https://stackoverflow.com/questions/17408815/fieldset-resizes-wrong-appears-to-h fieldset { display: table-cell; } } +.form-field-group { + padding: 20px; + background: hsl(0,0%,97%); + --background: hsl(0,0%,97%); + border-radius: 4px; + margin-bottom: 16px; + + > .form-group:last-child { + margin-bottom: 0; + } +} + fieldset > .form-group { padding: 0 4px; } @@ -5660,12 +5684,63 @@ footer { vertical-align: top; margin: 2px 3px 0 0; @include rtl(margin, 2px 0 0 3px); + + &.icon-lock { + margin: 0; + } } .article-meta .text-muted { color: #96969b; } + .article-meta-permanent { + margin: 0 55px; + + + .article-content .textBubble { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-top-width: 0; + } + + .alert { + margin-bottom: 0; + padding-left: 20px; + padding-right: 20px; + border-radius: 0; + box-shadow: 0 0 0 1px inset hsla(0,0%,0%,.04); + + &:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; + } + + &--blank { + background: hsl(212,14%,99%); + color: hsl(198,16%,70%); + + .customer.ticket-article-item & { + background: hsl(201,43%,96%); + border-color: hsl(203,38%,92%); + } + } + + .icon { + fill: currentColor; + margin: 2px 6px 0 0; + vertical-align: top; + width: 14px; + height: 14px; + } + + .icon-lock { + margin-top: 1px; + width: 16px; + height: 16px; + } + } + } + .internal-border { padding: 5px; border-radius: 8px; @@ -5775,7 +5850,7 @@ footer { .bubble-arrow { position: absolute; - width: 7px; + width: 6px; height: 9px; left: -6px; top: 15px; @@ -5786,7 +5861,7 @@ footer { content: ""; position: absolute; top: -1px; - left: 2px; + left: 1px; width: 11px; height: 11px; background: white; @@ -6724,6 +6799,15 @@ footer { &--square { border-radius: 0; } + + .btn { + margin-top: -4px; + margin-bottom: -5px; + + &:last-child { + margin-right: -5px; + } + } } .tags, @@ -7412,7 +7496,6 @@ footer { .dropdown-icon { width: 16px; height: 16px; - opacity: 0.39; } .dropdown-menu.dropdown-menu--light { @@ -8020,9 +8103,37 @@ footer { } } +.or-divider { + position: relative; + margin: 16px 0; + text-align: center; + + &:before { + content: ""; + position: absolute; + left: 0; + width: 100%; + top: 50%; + margin-top: -1px; + height: 1px; + background: hsla(0,0%,0%,.1); + } + + span { + position: relative; + background: white; + background: var(--background, white); + padding: 0 10px; + } +} + .settings-entry { margin-bottom: 42px; max-width: 700px; + + &--stretched { + max-width: none; + } } .setting-controls { diff --git a/app/controllers/integration/smime_controller.rb b/app/controllers/integration/smime_controller.rb new file mode 100644 index 000000000..c95f27888 --- /dev/null +++ b/app/controllers/integration/smime_controller.rb @@ -0,0 +1,154 @@ +# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/ + +class Integration::SMIMEController < ApplicationController + prepend_before_action { authentication_check && authorize! } + + def certificate_list + render json: SMIMECertificate.all + end + + def certificate_delete + SMIMECertificate.find(params[:id]).destroy! + render json: { + result: 'ok', + } + end + + def certificate_add + string = params[:data] + if string.blank? && params[:file].present? + string = params[:file].read.force_encoding('utf-8') + end + + item = SMIMECertificate.create!(public_key: string) + + render json: { + result: 'ok', + response: item, + } + rescue => e + unprocessable_entity(e) + end + + def private_key_delete + SMIMECertificate.find(params[:id]).update!( + private_key: nil, + private_key_secret: nil, + ) + + render json: { + result: 'ok', + } + end + + def private_key_add + string = params[:data] + if string.blank? && params[:file].present? + string = params[:file].read.force_encoding('utf-8') + end + + raise "Parameter 'data' or 'file' required." if string.blank? + + private_key = OpenSSL::PKey.read(string, params[:secret]) + modulus = private_key.public_key.n.to_s(16) + + certificate = SMIMECertificate.find_by(modulus: modulus) + + raise Exceptions::UnprocessableEntity, 'Unable for find certificate for this private key.' if !certificate + + certificate.update!(private_key: string, private_key_secret: params[:secret]) + + render json: { + result: 'ok', + } + rescue => e + unprocessable_entity(e) + end + + def search + result = { + type: 'S/MIME', + } + + result[:encryption] = article_encryption(params[:article]) + result[:sign] = article_sign(params[:ticket]) + + render json: result + end + + def article_encryption(article) + result = { + success: false, + comment: 'no recipient found', + } + + return result if article.blank? + return result if article[:to].blank? && article[:cc].blank? + + recipient = [ article[:to], article[:cc] ].compact.join(',').to_s + recipients = [] + begin + list = Mail::AddressList.new(recipient) + list.addresses.each do |address| + recipients.push address.address + end + rescue # rubocop:disable Lint/SuppressedException + end + + return result if recipients.blank? + + begin + certs = SMIMECertificate.for_recipipent_email_addresses!(recipients) + + if certs + if certs.any?(&:expired?) + result[:success] = false + result[:comment] = "certificates found for #{recipients.join(',')} but expired" + else + result[:success] = true + result[:comment] = "certificates found for #{recipients.join(',')}" + end + end + rescue => e + result[:comment] = e.message + end + + result + end + + def article_sign(ticket) + result = { + success: false, + comment: 'certificate not found', + } + + return result if ticket.blank? || !ticket[:group_id] + + group = Group.find_by(id: ticket[:group_id]) + return result if !group + + email_address = group.email_address + begin + list = Mail::AddressList.new(email_address.email) + from = list.addresses.first.to_s + cert = SMIMECertificate.for_sender_email_address(from) + if cert + if cert.expired? + result[:success] = false + result[:comment] = "certificate for #{email_address.email} found but expired" + else + result[:success] = true + result[:comment] = "certificate for #{email_address.email} found" + end + else + result[:success] = false + result[:comment] = "no certificate for #{email_address.email} found" + end + rescue => e + result[:comment] = e.message + end + + result + end + +end diff --git a/app/controllers/ticket_articles_controller.rb b/app/controllers/ticket_articles_controller.rb index 797953be1..642d11771 100644 --- a/app/controllers/ticket_articles_controller.rb +++ b/app/controllers/ticket_articles_controller.rb @@ -263,6 +263,15 @@ class TicketArticlesController < ApplicationController render json: result, status: :ok end + def retry_security_process + article = Ticket::Article.find(params[:id]) + authorize!(article, :update?) + + result = SecureMailing.retry(article) + + render json: result + end + private def sanitized_disposition diff --git a/app/jobs/ticket_article_communicate_email_job.rb b/app/jobs/ticket_article_communicate_email_job.rb index 6d22bd310..64b1ad486 100644 --- a/app/jobs/ticket_article_communicate_email_job.rb +++ b/app/jobs/ticket_article_communicate_email_job.rb @@ -62,7 +62,8 @@ class TicketArticleCommunicateEmailJob < ApplicationJob subject: subject, content_type: record.content_type, body: record.body, - attachments: record.attachments + attachments: record.attachments, + security: record.preferences[:security], }, notification ) diff --git a/app/models/channel/email_build.rb b/app/models/channel/email_build.rb index b1dc1cf13..f0d9a85e2 100644 --- a/app/models/channel/email_build.rb +++ b/app/models/channel/email_build.rb @@ -3,6 +3,8 @@ module Channel::EmailBuild =begin +generate email + mail = Channel::EmailBuild.build( from: 'sender@example.com', to: 'recipient@example.com', @@ -10,35 +12,37 @@ module Channel::EmailBuild content_type: 'text/plain', ) +generate email with S/MIME + + mail = Channel::EmailBuild.build( + from: 'sender@example.com', + to: 'recipient@example.com', + body: 'somebody with some text', + content_type: 'text/plain', + security: { + type: 'S/MIME', + encryption: { + success: true, + }, + sign: { + success: true, + }, + } + ) + =end def self.build(attr, notification = false) mail = Mail.new - # set organization - organization = Setting.get('organization') - if organization - mail['Organization'] = organization.to_s - end - - # notification - if notification - attr['X-Loop'] = 'yes' - attr['Precedence'] = 'bulk' - attr['Auto-Submitted'] = 'auto-generated' - attr['X-Auto-Response-Suppress'] = 'All' - end - - attr['X-Powered-By'] = 'Zammad - Helpdesk/Support (https://zammad.org/)' - attr['X-Mailer'] = 'Zammad Mail Service' - # set headers attr.each do |key, value| next if key.to_s == 'attachments' next if key.to_s == 'body' next if key.to_s == 'content_type' + next if key.to_s == 'security' - mail[key.to_s] = if value && value.class != Array + mail[key.to_s] = if value.present? && value.class != Array value.to_s else value @@ -70,6 +74,7 @@ module Channel::EmailBuild if !html_alternative && attr[:attachments].blank? mail.content_type 'text/plain; charset=UTF-8' mail.body attr[:body] + SecureMailing.outgoing(mail, attr[:security]) return mail end @@ -119,6 +124,25 @@ module Channel::EmailBuild } end end + + SecureMailing.outgoing(mail, attr[:security]) + + # set organization + organization = Setting.get('organization') + if organization.present? + mail['Organization'] = organization.to_s + end + + if notification + mail['X-Loop'] = 'yes' + mail['Precedence'] = 'bulk' + mail['Auto-Submitted'] = 'auto-generated' + mail['X-Auto-Response-Suppress'] = 'All' + end + + mail['X-Powered-By'] = 'Zammad - Helpdesk/Support (https://zammad.org/)' + mail['X-Mailer'] = 'Zammad Mail Service' + mail end diff --git a/app/models/channel/email_parser.rb b/app/models/channel/email_parser.rb index 598a7cbdb..f8291ea03 100644 --- a/app/models/channel/email_parser.rb +++ b/app/models/channel/email_parser.rb @@ -87,6 +87,7 @@ class Channel::EmailParser headers, body, self.class.sender_attributes(headers), + raw: msg, ] message_attributes.reduce({}.with_indifferent_access, &:merge) end diff --git a/app/models/channel/filter/secure_mailing.rb b/app/models/channel/filter/secure_mailing.rb new file mode 100644 index 000000000..84be2af01 --- /dev/null +++ b/app/models/channel/filter/secure_mailing.rb @@ -0,0 +1,8 @@ +# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/ + +module Channel::Filter::SecureMailing + + def self.run(_channel, mail) + ::SecureMailing.incoming(mail) + end +end diff --git a/app/models/smime_certificate.rb b/app/models/smime_certificate.rb new file mode 100644 index 000000000..99b1acee6 --- /dev/null +++ b/app/models/smime_certificate.rb @@ -0,0 +1,99 @@ +# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/ + +class SMIMECertificate < ApplicationModel + validates :fingerprint, uniqueness: true + + def self.parse(raw) + OpenSSL::X509::Certificate.new(raw.gsub!(/(?:TRUSTED\s)?(CERTIFICATE---)/, '\1')) + end + + # Search for the certificate of the given sender email address + # + # @example + # certificate = SMIMECertificates.for_sender_email_address('some1@example.com') + # # => # [#] The found certificate records + def self.for_recipipent_email_addresses!(addresses) + certificates = [] + remaining_addresses = addresses.map(&:downcase) + find_each do |certificate| + + # intersection of both lists + cerfiticate_for = certificate.email_addresses & remaining_addresses + next if cerfiticate_for.blank? + + certificates.push(certificate) + + # subtract found recipient(s) + remaining_addresses -= cerfiticate_for + + # end loop if no addresses are remaining + break if remaining_addresses.blank? + end + + return certificates if remaining_addresses.blank? + + raise ActiveRecord::RecordNotFound, "Can't find S/MIME encryption certificates for: #{remaining_addresses.join(', ')}" + end + + def public_key=(string) + cert = self.class.parse(string) + + self.subject = cert.subject + self.doc_hash = cert.subject.hash.to_s(16) + self.fingerprint = OpenSSL::Digest.new('SHA1', cert.to_der).to_s + self.modulus = cert.public_key.n.to_s(16) + self.not_before_at = cert.not_before + self.not_after_at = cert.not_after + self.raw = cert.to_s + end + + def parsed + @parsed ||= self.class.parse(raw) + end + + def email_addresses + @email_addresses ||= begin + subject_alt_name = parsed.extensions.detect { |extension| extension.oid == 'subjectAltName' } + if subject_alt_name.blank? + warning = <<~TEXT.squish + SMIMECertificate with ID #{id} has no subjectAltName + extension and therefore no email addresses assigned. + This makes it useless in terms of S/MIME. Please check. + TEXT + Rails.logger.warn warning + return [] + end + + # ["IP Address:192.168.7.23", "IP Address:192.168.7.42", "email:jd@example.com", "email:John.Doe@example.com", "dirName:dir_sect"] + entries = subject_alt_name.value.split(/,\s?/) + # ["email:jd@example.com", "email:John.Doe@example.com"] + email_address_entries = entries.select { |entry| entry.start_with?('email') } + # ["jd@example.com", "John.Doe@example.com"] + email_address_entries.map! { |entry| entry.split(':')[1] } + # ["jd@example.com", "john.doe@example.com"] + email_address_entries.map!(&:downcase) + end + end + + def expired? + !Time.zone.now.between?(not_before_at, not_after_at) + end +end diff --git a/app/models/ticket.rb b/app/models/ticket.rb index 9484b0816..5af2e467e 100644 --- a/app/models/ticket.rb +++ b/app/models/ticket.rb @@ -1498,6 +1498,57 @@ result return end + security = nil + if Setting.get('smime_integration') + sign = value['sign'].present? && value['sign'] != 'no' + encryption = value['encryption'].present? && value['encryption'] != 'no' + security = { + type: 'S/MIME', + sign: { + success: false, + }, + encryption: { + success: false, + }, + } + + if sign + sign_found = false + begin + list = Mail::AddressList.new(email_address.email) + from = list.addresses.first.to_s + cert = SMIMECertificate.for_sender_email_address(from) + if cert && !cert.expired? + sign_found = true + security[:sign][:success] = true + security[:sign][:comment] = "certificate for #{email_address.email} found" + end + rescue # rubocop:disable Lint/SuppressedException + end + + if value['sign'] == 'discard' && !sign_found + logger.info "Unable to send trigger based notification to #{recipient_string} because of missing group #{group.name} email #{email_address.email} certificate for signing (discarding notification)." + return + end + end + + if encryption + certs_found = false + begin + SMIMECertificate.for_recipipent_email_addresses!(recipients_checked) + certs_found = true + security[:encryption][:success] = true + security[:encryption][:comment] = "certificates found for #{recipient_string}" + rescue # rubocop:disable Lint/SuppressedException + end + + if value['encryption'] == 'discard' && !certs_found + logger.info "Unable to send trigger based notification to #{recipient_string} because public certificate is not available for encryption (discarding notification)." + return + end + end + end + objects = build_notification_template_objects(article) # get subject @@ -1516,6 +1567,12 @@ result (body, attachments_inline) = HtmlSanitizer.replace_inline_images(body, id) + preferences = {} + preferences[:perform_origin] = perform_origin + if security.present? + preferences[:security] = security + end + message = Ticket::Article.create( ticket_id: id, to: recipient_string, @@ -1525,9 +1582,7 @@ result internal: value['internal'] || false, # default to public if value was not set sender: Ticket::Article::Sender.find_by(name: 'System'), type: Ticket::Article::Type.find_by(name: 'email'), - preferences: { - perform_origin: perform_origin, - }, + preferences: preferences, updated_by_id: 1, created_by_id: 1, ) diff --git a/app/models/ticket/article.rb b/app/models/ticket/article.rb index 888fe3242..1e057a4ef 100644 --- a/app/models/ticket/article.rb +++ b/app/models/ticket/article.rb @@ -337,4 +337,5 @@ returns o_id: id, ) end + end diff --git a/app/policies/controllers/integration/smime_controller_policy.rb b/app/policies/controllers/integration/smime_controller_policy.rb new file mode 100644 index 000000000..b630ad0f6 --- /dev/null +++ b/app/policies/controllers/integration/smime_controller_policy.rb @@ -0,0 +1,4 @@ +class Controllers::Integration::SMIMEControllerPolicy < Controllers::ApplicationControllerPolicy + permit! :search, to: 'ticket.agent' + default_permit!('admin.integration.smime') +end diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb index 58eb6be5b..87061c42a 100644 --- a/config/initializers/inflections.rb +++ b/config/initializers/inflections.rb @@ -20,4 +20,5 @@ ActiveSupport::Inflector.inflections(:en) do |inflect| # Rails thinks the singularized version of knowledge_bases is knowledge_basis?! # see: KnowledgeBase.table_name.singularize inflect.singular(/(knowledge_base)s$/i, '\1') + inflect.acronym 'SMIME' end diff --git a/config/routes/integration_smime.rb b/config/routes/integration_smime.rb new file mode 100644 index 000000000..07b8a38f3 --- /dev/null +++ b/config/routes/integration_smime.rb @@ -0,0 +1,10 @@ +Zammad::Application.routes.draw do + api_path = Rails.configuration.api_path + + match api_path + '/integration/smime', to: 'integration/smime#search', via: :post + match api_path + '/integration/smime/certificate', to: 'integration/smime#certificate_add', via: :post + match api_path + '/integration/smime/certificate', to: 'integration/smime#certificate_delete', via: :delete + match api_path + '/integration/smime/certificate', to: 'integration/smime#certificate_list', via: :get + match api_path + '/integration/smime/private_key', to: 'integration/smime#private_key_add', via: :post + match api_path + '/integration/smime/private_key', to: 'integration/smime#private_key_delete', via: :delete +end diff --git a/config/routes/ticket.rb b/config/routes/ticket.rb index 35c93d308..60ac8832f 100644 --- a/config/routes/ticket.rb +++ b/config/routes/ticket.rb @@ -45,5 +45,5 @@ Zammad::Application.routes.draw do match api_path + '/ticket_attachment/:ticket_id/:article_id/:id', to: 'ticket_articles#attachment', via: :get match api_path + '/ticket_attachment_upload_clone_by_article/:article_id', to: 'ticket_articles#ticket_attachment_upload_clone_by_article', via: :post match api_path + '/ticket_article_plain/:id', to: 'ticket_articles#article_plain', via: :get - + match api_path + '/ticket_articles/:id/retry_security_process', to: 'ticket_articles#retry_security_process', via: :post end diff --git a/contrib/edit-icon-license-list.php b/contrib/edit-icon-license-list.php index f276e40e1..fa438ab61 100644 --- a/contrib/edit-icon-license-list.php +++ b/contrib/edit-icon-license-list.php @@ -131,7 +131,7 @@ $imageTypes = '{*.svg}'; # Set to true if you prefer sorting images by name # If set to false, images will be sorted by date -$sortByImageName = false; +$sortByImageName = true; # Set to false if you want the oldest images to appear first # This is only used if images are sorted by date (see above) diff --git a/contrib/icon-sprite.sketch b/contrib/icon-sprite.sketch index 49bc3bcb17c846501a9f5c3f3de9a712ca54c56c..6f00dab67a63c26026fe570038e725158b5205a6 100644 GIT binary patch delta 276842 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%0Aq@se zp>q@W9H0{rEC_v$ketlvqw2;)gKOxI;f`2p##(@0vvhx^Bdl?3xnV`9)s{oC`$OQX~1}^lsPO7l;gp zIm8U}h(XuR@;m7oxCx95TtxXh6iJ*??O5l6rg)~>jJ?rUG{+y2pF`H;EGA&G!fOzq zCZ)F(>2fvg6?rwAK{f z_g4k9hK$0}X7-x#h=J#PQ!pb8nJmQ&5-wLAwWj|q0M{2b)uxC?_-;K%?%!rDt}E>4 zWE^ayak{F9dTadWei2X*>bmTGVRR%#dOdSs|GKkb9OxZjdinmz%0lds@S0&t(o-(W zwTWI}J*;62^rc>g^ok)`v=27*sCetEAvr)nsBOPIad&z#!D6@}S@�=O_wn@($T_ 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ϒW`OK;j+=wNU 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 z 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 diff --git a/db/migrate/20120101000001_create_base.rb b/db/migrate/20120101000001_create_base.rb index ed28a8cd5..4c436334b 100644 --- a/db/migrate/20120101000001_create_base.rb +++ b/db/migrate/20120101000001_create_base.rb @@ -724,5 +724,21 @@ class CreateBase < ActiveRecord::Migration[4.2] end add_index :active_job_locks, :lock_key, unique: true add_index :active_job_locks, :active_job_id, unique: true + + create_table :smime_certificates do |t| + t.string :subject, limit: 500, null: false + t.string :doc_hash, limit: 250, null: false + t.string :fingerprint, limit: 250, null: false + t.string :modulus, limit: 1024, null: false + t.datetime :not_before_at, null: true + t.datetime :not_after_at, null: true + t.binary :raw, limit: 10.megabytes, null: false + t.binary :private_key, limit: 10.megabytes, null: true + t.string :private_key_secret, limit: 500, null: true + t.timestamps limit: 3, null: false + end + add_index :smime_certificates, [:fingerprint], unique: true + add_index :smime_certificates, [:modulus] + add_index :smime_certificates, [:subject] end end diff --git a/db/migrate/20200121000001_smime_support.rb b/db/migrate/20200121000001_smime_support.rb new file mode 100644 index 000000000..1c68fee4c --- /dev/null +++ b/db/migrate/20200121000001_smime_support.rb @@ -0,0 +1,74 @@ +class SMIMESupport < ActiveRecord::Migration[5.2] + def up + + # return if it's a new setup + return if !Setting.find_by(name: 'system_init_done') + + Setting.create_if_not_exists( + title: 'S/MIME integration', + name: 'smime_integration', + area: 'Integration::Switch', + description: 'Defines if S/MIME encryption is enabled or not.', + options: { + form: [ + { + display: '', + null: true, + name: 'smime_integration', + tag: 'boolean', + options: { + true => 'yes', + false => 'no', + }, + }, + ], + }, + state: false, + preferences: { + prio: 1, + authentication: true, + permission: ['admin.integration'], + }, + frontend: true + ) + Setting.create_if_not_exists( + title: 'S/MIME config', + name: 'smime_config', + area: 'Integration::SMIME', + description: 'Defines the S/MIME config.', + options: {}, + state: {}, + preferences: { + prio: 2, + permission: ['admin.integration'], + }, + frontend: true, + ) + Setting.create_if_not_exists( + title: 'Defines postmaster filter.', + name: '0016_postmaster_filter_smime', + area: 'Postmaster::PreFilter', + description: 'Defines postmaster filter to handle secure mailing.', + options: {}, + state: 'Channel::Filter::SecureMailing', + frontend: false + ) + + create_table :smime_certificates do |t| + t.string :subject, limit: 500, null: false + t.string :doc_hash, limit: 250, null: false + t.string :fingerprint, limit: 250, null: false + t.string :modulus, limit: 1024, null: false + t.datetime :not_before_at, null: true + t.datetime :not_after_at, null: true + t.binary :raw, limit: 10.megabytes, null: false + t.binary :private_key, limit: 10.megabytes, null: true + t.string :private_key_secret, limit: 500, null: true + t.timestamps limit: 3, null: false + end + add_index :smime_certificates, [:fingerprint], unique: true + add_index :smime_certificates, [:modulus] + add_index :smime_certificates, [:subject] + end + +end diff --git a/db/seeds/settings.rb b/db/seeds/settings.rb index 4273751c4..a09976d39 100644 --- a/db/seeds/settings.rb +++ b/db/seeds/settings.rb @@ -3349,6 +3349,15 @@ Setting.create_if_not_exists( state: 'Channel::Filter::IdentifySender', frontend: false ) +Setting.create_if_not_exists( + title: 'Defines postmaster filter.', + name: '0016_postmaster_filter_smime', + area: 'Postmaster::PreFilter', + description: 'Defines postmaster filter to handle secure mailing.', + options: {}, + state: 'Channel::Filter::SecureMailing', + frontend: false +) Setting.create_if_not_exists( title: 'Defines postmaster filter.', name: '0020_postmaster_filter_auto_response_check', @@ -4549,3 +4558,45 @@ Setting.create_if_not_exists( }, frontend: true ) + +Setting.create_if_not_exists( + title: 'S/MIME integration', + name: 'smime_integration', + area: 'Integration::Switch', + description: 'Defines if S/MIME encryption is enabled or not.', + options: { + form: [ + { + display: '', + null: true, + name: 'smime_integration', + tag: 'boolean', + options: { + true => 'yes', + false => 'no', + }, + }, + ], + }, + state: false, + preferences: { + prio: 1, + authentication: true, + permission: ['admin.integration'], + }, + frontend: true +) + +Setting.create_if_not_exists( + title: 'S/MIME config', + name: 'smime_config', + area: 'Integration::SMIME', + description: 'Defines the S/MIME config.', + options: {}, + state: {}, + preferences: { + prio: 2, + permission: ['admin.integration'], + }, + frontend: true, +) diff --git a/lib/secure_mailing.rb b/lib/secure_mailing.rb new file mode 100644 index 000000000..77a6a00c2 --- /dev/null +++ b/lib/secure_mailing.rb @@ -0,0 +1,25 @@ +class SecureMailing + include ::Mixin::HasBackends + + def self.incoming(mail) + active_backends.each do |backend| + "#{backend}::Incoming".constantize.process(mail) + end + end + + def self.retry(article) + active_backends.each do |backend| + "#{backend}::Retry".constantize.process(article) + end + end + + def self.outgoing(mail, security) + active_backends.each do |backend| + "#{backend}::Outgoing".constantize.process(mail, security) + end + end + + def self.active_backends + backends.select(&:active?) + end +end diff --git a/lib/secure_mailing/backend.rb b/lib/secure_mailing/backend.rb new file mode 100644 index 000000000..b840d1dea --- /dev/null +++ b/lib/secure_mailing/backend.rb @@ -0,0 +1,9 @@ +class SecureMailing::Backend + include Mixin::IsBackend + + def self.inherited(subclass) + subclass.is_backend_of(::SecureMailing) + end +end + +Mixin::RequiredSubPaths.eager_load_recursive(__dir__) diff --git a/lib/secure_mailing/backend/handler.rb b/lib/secure_mailing/backend/handler.rb new file mode 100644 index 000000000..b6263bddb --- /dev/null +++ b/lib/secure_mailing/backend/handler.rb @@ -0,0 +1,6 @@ +class SecureMailing::Backend::Handler + + def self.process(*args) + new(*args).process + end +end diff --git a/lib/secure_mailing/smime.rb b/lib/secure_mailing/smime.rb new file mode 100644 index 000000000..d022d8c9d --- /dev/null +++ b/lib/secure_mailing/smime.rb @@ -0,0 +1,6 @@ +class SecureMailing::SMIME < SecureMailing::Backend + + def self.active? + Setting.get('smime_integration') + end +end diff --git a/lib/secure_mailing/smime/incoming.rb b/lib/secure_mailing/smime/incoming.rb new file mode 100644 index 000000000..cddc24429 --- /dev/null +++ b/lib/secure_mailing/smime/incoming.rb @@ -0,0 +1,180 @@ +class SecureMailing::SMIME::Incoming < SecureMailing::Backend::Handler + + EXPRESSION_MIME = %r{application/(x-pkcs7|pkcs7)-mime}i.freeze + EXPRESSION_SIGNATURE = %r{application/(x-pkcs7|pkcs7)-signature}i.freeze + + OPENSSL_PKCS7_VERIFY_FLAGS = OpenSSL::PKCS7::NOVERIFY | OpenSSL::PKCS7::NOINTERN + + def initialize(mail) + @mail = mail + @content_type = @mail[:mail_instance].content_type + end + + def process + return if !process? + + initialize_article_preferences + decrypt + verify_signature + log + end + + def initialize_article_preferences + article_preferences[:security] = { + type: 'S/MIME', + sign: { + success: false, + comment: nil, + }, + encryption: { + success: false, + comment: nil, + } + } + end + + def article_preferences + @article_preferences ||= begin + key = 'x-zammad-article-preferences'.to_sym + @mail[ key ] ||= {} + @mail[ key ] + end + end + + def process? + signed? || smime? + end + + def signed?(content_type = @content_type) + EXPRESSION_SIGNATURE.match?(content_type) + end + + def smime?(content_type = @content_type) + EXPRESSION_MIME.match?(content_type) + end + + def decrypt + return if !smime? + + success = false + comment = 'Unable to find private key to decrypt' + ::SMIMECertificate.where.not(private_key: [nil, '']).find_each do |cert| + key = OpenSSL::PKey::RSA.new(cert.private_key, cert.private_key_secret) + + begin + decrypted_data = p7enc.decrypt(key, cert.parsed) + rescue + next + end + + @mail[:mail_instance].header['Content-Type'] = nil + @mail[:mail_instance].header['Content-Disposition'] = nil + @mail[:mail_instance].header['Content-Transfer-Encoding'] = nil + @mail[:mail_instance].header['Content-Description'] = nil + + new_raw_mail = "#{@mail[:mail_instance].header}#{decrypted_data}" + + mail_new = Channel::EmailParser.new.parse(new_raw_mail) + mail_new.each do |local_key, local_value| + @mail[local_key] = local_value + end + + success = true + comment = cert.subject + if cert.expired? + comment += " (Certificate #{cert.fingerprint} with start date #{cert.not_before_at} and end date #{cert.not_after_at} expired!)" + end + + # overwrite content_type for signature checking + @content_type = @mail[:mail_instance].content_type + break + end + + article_preferences[:security][:encryption] = { + success: success, + comment: comment, + } + end + + def verify_signature + return if !signed? + + success = false + comment = 'Unable to find certificate for verification' + ::SMIMECertificate.find_each do |cert| + verify_certs = [] + verify_ca = OpenSSL::X509::Store.new + + if cert.parsed.issuer.to_s == cert.parsed.subject.to_s + verify_ca.add_cert(cert.parsed) + + # CA + verify_certs = p7enc.certificates.select do |message_cert| + message_cert.issuer.to_s == cert.parsed.subject.to_s && verify_ca.verify(message_cert) + end + else + + # normal + verify_certs.push(cert.parsed) + end + + success = p7enc.verify(verify_certs, verify_ca, nil, OPENSSL_PKCS7_VERIFY_FLAGS) + next if !success + + comment = cert.subject + if cert.expired? + comment += " (Certificate #{cert.fingerprint} with start date #{cert.not_before_at} and end date #{cert.not_after_at} expired!)" + end + break + rescue => e + success = false + comment = e.message + end + + if success + @mail[:attachments].delete_if do |attachment| + signed?(attachment.dig(:preferences, 'Content-Type')) + end + end + + article_preferences[:security][:sign] = { + success: success, + comment: comment, + } + end + + def p7enc + OpenSSL::PKCS7.read_smime(@mail[:raw]) + end + + def log + %i[sign encryption].each do |action| + result = article_preferences[:security][action] + next if result.blank? + + if result[:success] + status = 'success' + elsif result[:comment].blank? + # means not performed + next + else + status = 'failed' + end + + HttpLog.create( + direction: 'in', + facility: 'S/MIME', + url: "#{@mail[:from]} -> #{@mail[:to]}", + status: status, + ip: nil, + request: { + message_id: @mail[:message_id], + }, + response: article_preferences[:security], + method: action, + created_by_id: 1, + updated_by_id: 1, + ) + end + end +end diff --git a/lib/secure_mailing/smime/outgoing.rb b/lib/secure_mailing/smime/outgoing.rb new file mode 100644 index 000000000..fa4bb650a --- /dev/null +++ b/lib/secure_mailing/smime/outgoing.rb @@ -0,0 +1,84 @@ +class SecureMailing::SMIME::Outgoing < SecureMailing::Backend::Handler + + def initialize(mail, security) + @mail = mail + @security = security + end + + def process + return if !process? + + if @security[:sign][:success] && @security[:encryption][:success] + processed = encrypt(signed) + log('sign', 'success') + log('encryption', 'success') + elsif @security[:sign][:success] + processed = Mail.new(signed) + log('sign', 'success') + elsif @security[:encryption][:success] + processed = encrypt(@mail.encoded) + log('encryption', 'success') + end + + overwrite_mail(processed) + end + + def process? + return false if @security.blank? + return false if @security[:type] != 'S/MIME' + + @security[:sign][:success] || @security[:encryption][:success] + end + + def overwrite_mail(processed) + @mail.body = nil + @mail.body = processed.body.encoded + + @mail.content_disposition = processed.content_disposition + @mail.content_transfer_encoding = processed.content_transfer_encoding + @mail.content_type = processed.content_type + end + + def signed + from = @mail.from.first + cert_model = SMIMECertificate.for_sender_email_address(from) + raise "Unable to find ssl private key for '#{from}'" if !cert_model + raise "Expired certificate for #{from} (fingerprint #{cert_model.fingerprint}) with #{cert_model.not_before_at} to #{cert_model.not_after_at}" if !@security[:sign][:allow_expired] && cert_model.expired? + + private_key = OpenSSL::PKey::RSA.new(cert_model.private_key, cert_model.private_key_secret) + OpenSSL::PKCS7.write_smime(OpenSSL::PKCS7.sign(cert_model.parsed, private_key, @mail.encoded, [], OpenSSL::PKCS7::DETACHED)) + rescue => e + log('sign', 'failed', e.message) + raise + end + + def encrypt(data) + certificates = SMIMECertificate.for_recipipent_email_addresses!(@mail.to) + expired_cert = certificates.detect(&:expired?) + raise "Expired certificates for cert with #{expired_cert.not_before_at} to #{expired_cert.not_after_at}" if !@security[:encryption][:allow_expired] && expired_cert.present? + + Mail.new(OpenSSL::PKCS7.write_smime(OpenSSL::PKCS7.encrypt(certificates.map(&:parsed), data, cipher))) + rescue => e + log('encryption', 'failed', e.message) + raise + end + + def cipher + @cipher ||= OpenSSL::Cipher.new('AES-128-CBC') + end + + def log(action, status, error = nil) + HttpLog.create( + direction: 'out', + facility: 'S/MIME', + url: "#{@mail[:from]} -> #{@mail[:to]}", + status: status, + ip: nil, + request: @security, + response: { error: error }, + method: action, + created_by_id: 1, + updated_by_id: 1, + ) + end +end diff --git a/lib/secure_mailing/smime/retry.rb b/lib/secure_mailing/smime/retry.rb new file mode 100644 index 000000000..eaff22bac --- /dev/null +++ b/lib/secure_mailing/smime/retry.rb @@ -0,0 +1,91 @@ +class SecureMailing::SMIME::Retry < SecureMailing::Backend::Handler + + def initialize(article) + @article = article + end + + def process + return existing_result if already_processed? + + save_result if retry_succeeded? + retry_result + end + + def signature_checked? + @signature_checked ||= existing_result&.dig('sign', 'success') || false + end + + def decrypted? + @decrypted ||= existing_result&.dig('encryption', 'success') || false + end + + def already_processed? + signature_checked? && decrypted? + end + + def existing_result + @article.preferences['security'] + end + + def mail + @mail ||= begin + raw_mail = @article.as_raw.store_file.content + Channel::EmailParser.new.parse(raw_mail).tap do |parsed| + SecureMailing.incoming(parsed) + end + end + end + + def retry_result + @retry_result ||= mail['x-zammad-article-preferences']['security'] + end + + def signature_found? + return false if signature_checked? + + retry_result['sign']['success'] + end + + def decryption_succeeded? + return false if decrypted? + + retry_result['encryption']['success'] + end + + def retry_succeeded? + return true if signature_found? + + decryption_succeeded? + end + + def save_result + save_decrypted if decryption_succeeded? + @article.preferences['security'] = retry_result + @article.save! + end + + def save_decrypted + @article.content_type = mail['content_type'] + @article.body = mail['body'] + + Store.remove( + object: 'Ticket::Article', + o_id: @article.id, + ) + + mail[:attachments]&.each do |attachment| + filename = attachment[:filename].force_encoding('utf-8') + if !filename.force_encoding('UTF-8').valid_encoding? + filename = filename.utf8_encode(fallback: :read_as_sanitized_binary) + end + Store.add( + object: 'Ticket::Article', + o_id: @article.id, + data: attachment[:data], + filename: filename, + preferences: attachment[:preferences], + created_by_id: @article.created_by_id, + ) + end + end +end diff --git a/public/assets/images/icons.svg b/public/assets/images/icons.svg index 763cce338..f117ee617 100644 --- a/public/assets/images/icons.svg +++ b/public/assets/images/icons.svg @@ -555,6 +555,11 @@ + + + not-signed + + note @@ -716,6 +721,11 @@ <path d="M13.21 8.62a1.602 1.602 0 0 1-1.59-1.61 1.604 1.604 0 0 1 1.6-1.59h.01c.427.003.827.172 1.127.476.3.304.463.707.46 1.134-.003.425-.17.826-.471 1.125-.301.3-.702.465-1.126.465h-.01M10 6.953a3.172 3.172 0 0 0 4.768 2.76l1.926 1.93.05.047a.37.37 0 0 0 .526 0l.621-.62a.375.375 0 0 0 0-.527l-.048-.05-1.93-1.93A3.17 3.17 0 0 0 13.191 3.8 3.177 3.177 0 0 0 10 6.953z" opacity=".5"/> <path d="M0 1c0-.552.449-1 1.007-1h12.986C14.549 0 15 .444 15 1c0 .552-.449 1-1.007 1H1.007A1.001 1.001 0 0 1 0 1zm0 4c0-.552.446-1 .998-1h7.004C8.553 4 9 4.444 9 5c0 .552-.446 1-.998 1H.998A.996.996 0 0 1 0 5zm0 4c0-.552.446-1 .998-1h7.004C8.553 8 9 8.444 9 9c0 .552-.446 1-.998 1H.998A.996.996 0 0 1 0 9zm0 4c0-.552.449-1 1.007-1h12.986c.556 0 1.007.444 1.007 1 0 .552-.449 1-1.007 1H1.007A1.001 1.001 0 0 1 0 13z"/> </g> +</symbol><symbol id="icon-signed" viewBox="0 0 14 14"> + <title> + signed + + signout diff --git a/public/assets/images/icons/not-signed.svg b/public/assets/images/icons/not-signed.svg new file mode 100644 index 000000000..3f2c7af3d --- /dev/null +++ b/public/assets/images/icons/not-signed.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 61.1 (89650) - https://sketch.com --> + <title>not-signed + Created with Sketch. + + + + \ No newline at end of file diff --git a/public/assets/images/icons/signed.svg b/public/assets/images/icons/signed.svg new file mode 100644 index 000000000..247b4ed87 --- /dev/null +++ b/public/assets/images/icons/signed.svg @@ -0,0 +1,9 @@ + + + + signed + Created with Sketch. + + + + \ No newline at end of file diff --git a/spec/factories/smime_certificate.rb b/spec/factories/smime_certificate.rb new file mode 100644 index 000000000..2cb6b27ea --- /dev/null +++ b/spec/factories/smime_certificate.rb @@ -0,0 +1,17 @@ +FactoryBot.define do + factory :smime_certificate do + created_at { Time.zone.now } + updated_at { Time.zone.now } + + transient do + fixture { nil } + end + + public_key { File.read( Rails.root.join("spec/fixtures/smime/#{fixture}.crt") ) if fixture } + + trait :with_private do + private_key { File.read( Rails.root.join("spec/fixtures/smime/#{fixture}.key") ) } + private_key_secret { File.read( Rails.root.join("spec/fixtures/smime/#{fixture}.secret") ).strip! } + end + end +end diff --git a/spec/factories/template.rb b/spec/factories/template.rb index f0072428a..eeeb2029c 100644 --- a/spec/factories/template.rb +++ b/spec/factories/template.rb @@ -17,12 +17,13 @@ FactoryBot.define do trait :dummy_data do options do { - 'formSenderType' => sender_type, - 'title' => title, - 'body' => body, - 'customer_id' => customer.id, - 'group_id' => group.id, - 'owner_id' => owner.id, + 'formSenderType' => sender_type, + 'title' => title, + 'body' => body, + 'customer_id' => customer.id, + 'customer_id_completion' => "#{customer.firstname} #{customer.lastname} <#{customer.email}>", + 'group_id' => group.id, + 'owner_id' => owner.id, } end end diff --git a/spec/fixtures/smime/CaseInsenstive@eXample.COM.crt b/spec/fixtures/smime/CaseInsenstive@eXample.COM.crt new file mode 100644 index 000000000..58fae7ec7 --- /dev/null +++ b/spec/fixtures/smime/CaseInsenstive@eXample.COM.crt @@ -0,0 +1,37 @@ +-----BEGIN TRUSTED CERTIFICATE----- +MIIGZDCCBEygAwIBAgIUAfZ9Sb8pCb7RN34x7oUVKZ/ftY8wDQYJKoZIhvcNAQEL +BQAwgZcxHTAbBgkqhkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMQswCQYDVQQGEwJE +RTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xGTAXBgNVBAoMEEV4 +YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxFDASBgNVBAMM +C2V4YW1wbGUuY29tMCAXDTIwMDUyODExMzg0NFoYDzIyMjAwNDEwMTEzODQ0WjCB +ozEpMCcGCSqGSIb3DQEJARYaQ2FzZUluc2Vuc3RpdmVAZVhhbXBsZS5DT00xCzAJ +BgNVBAYTAkRFMQ8wDQYDVQQIDAZCZXJsaW4xDzANBgNVBAcMBkJlcmxpbjEZMBcG +A1UECgwQRXhhbXBsZSBTZWN1cml0eTEWMBQGA1UECwwNSVQgRGVwYXJ0bWVudDEU +MBIGA1UEAwwLZXhhbXBsZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQDaNxe6VMcsIVG+Y/aNlNsUWzEZvSycDGKH+1AZ2NBjeEyNRuoiBdbosyxk +mPm6fZ4Prcr2ufIPj5K0cS8xPSBGErqv/6QIUELhEupdxh5cIdhBVDIW/EPrbUFw +CyEAT5/W4p1sqOA8nK1DEac5JprXRiWXzyoWX3HhWbhC20Al1cCqTEoc0pqbSocJ +pN7pmi5VpudtdNFtdlyhkeqT/Yep8roERfEdi5NxBtrn8xWpPXG+db30NjXgZZ9n +wbOHpNKD/Cm/63vIRFtIN1AmrHGE51/2NsrxZGrZ0VoPmx8b82jWb6k22b4EUGdH +Vi7UdLFz2MjBOiYfzLeBPD8PScQQ7PqLYRCb7cTfZExazQC8uBeCHoB5HV9or3aB +CYjpI8PkPEi1CBsCc/ZWh9cUeA7ttZQBwSE+uAyqabOWRMaJO14TRWjlfu2jdRuE +bLtuPGkKzv+iHIRl41E2NgcaP42NRl5limanzvATrD2upd22OmdjzjvE2k2ffksp +tDnlisWrmg3TrAfsHL8AJGwdEzyHH/TNoDd82roOi13UNQBIS5gHFEj8SqaeSTlC +PhCWbpQSTwyi04Lamyw3x7yLsPI5QSLnngWdYgTnC0dGvV+Cn5O6svpPoavLzimF +DfMVb45uPyw/u4VSftdeN4U0jkRxPd+nRr9rcOZKllGWDUEkIQIDAQABo4GXMIGU +MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgXgMB0GA1UdDgQWBBT8m5pVFWnVMeZ/Hsy5 +6eaBAB/qTDAfBgNVHSMEGDAWgBQMLUKtYgxz7600qkVe6yLEMX3YbDAlBgNVHREE +HjAcgRpDYXNlSW5zZW5zdGl2ZUBlWGFtcGxlLkNPTTATBgNVHSUEDDAKBggrBgEF +BQcDBDANBgkqhkiG9w0BAQsFAAOCAgEAkL+wwgHfsFIDfXRPc3TIIUExu1PayiS8 +0ohDFPYlMpq9dUlqqANqzb2WC52E4dxi3LCJfjYuqHFmxNta/3iZwrL25JzR1g5g +ByL7lGMwbMIR/LV/noOqXbTSpwzUcpPD+ElZjexseyrj/xwU5BIMfT8cfQ2h3G+1 +nMhn7iXxV4c3LpHAbV1eKZAtbVw+Mq4QpM1F6Jd2u9aYChUfbD5HDvihhEEHA0GR +ZSSns2pQpLplneh6eemPPJSvrhp86TEbVBtaEc+oT/bJoSnByHy8RYI3ST+u/oxF ++slxBrWj1Tbwu8AlGKSxYcXRxYdhjP3R477Uu5NyP9dzrcWctLy77GSv3fLy0xpI +SrMu3J3hIdVrZL+/x/kCWQ/u5oy6dI/O4ewXWyWg/r5Ccj/xZhIdHRH7bSKXgqOn +dL2U8vQGZdIuGkHTznCLagX8Tw74LcP9oHUpQM0rj7v4IY/qaWRt9CBUTAt/CN1l +nACYUIwiWirBV9i8kwtikyqc+baZMdX/QyXqjdZBHRWm2ewQM5meA9Sqer+iIiH7 +iDVX4DROMYvOx2bfvRNR/X7q1cZHpcoa4cfMGbkYp1vlVsS3BBApbjGUsqoBYxlK +mERsZxk4XPJSeeS1i/Szp94FzKp8qg3YuAx71eJnTZxuzRvnztSufRQyOP6sSbtJ +3fE8GIlZAgYwIjAKBggrBgEFBQcDBKAUBggrBgEFBQcDAgYIKwYBBQUHAwE= +-----END TRUSTED CERTIFICATE----- diff --git a/spec/fixtures/smime/CaseInsenstive@eXample.COM.csr b/spec/fixtures/smime/CaseInsenstive@eXample.COM.csr new file mode 100644 index 000000000..40011bda2 --- /dev/null +++ b/spec/fixtures/smime/CaseInsenstive@eXample.COM.csr @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIE6TCCAtECAQAwgaMxKTAnBgkqhkiG9w0BCQEWGkNhc2VJbnNlbnN0aXZlQGVY +YW1wbGUuQ09NMQswCQYDVQQGEwJERTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQH +DAZCZXJsaW4xGTAXBgNVBAoMEEV4YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlU +IERlcGFydG1lbnQxFDASBgNVBAMMC2V4YW1wbGUuY29tMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA2jcXulTHLCFRvmP2jZTbFFsxGb0snAxih/tQGdjQ +Y3hMjUbqIgXW6LMsZJj5un2eD63K9rnyD4+StHEvMT0gRhK6r/+kCFBC4RLqXcYe +XCHYQVQyFvxD621BcAshAE+f1uKdbKjgPJytQxGnOSaa10Yll88qFl9x4Vm4QttA +JdXAqkxKHNKam0qHCaTe6ZouVabnbXTRbXZcoZHqk/2HqfK6BEXxHYuTcQba5/MV +qT1xvnW99DY14GWfZ8Gzh6TSg/wpv+t7yERbSDdQJqxxhOdf9jbK8WRq2dFaD5sf +G/No1m+pNtm+BFBnR1Yu1HSxc9jIwTomH8y3gTw/D0nEEOz6i2EQm+3E32RMWs0A +vLgXgh6AeR1faK92gQmI6SPD5DxItQgbAnP2VofXFHgO7bWUAcEhPrgMqmmzlkTG +iTteE0Vo5X7to3UbhGy7bjxpCs7/ohyEZeNRNjYHGj+NjUZeZYpmp87wE6w9rqXd +tjpnY847xNpNn35LKbQ55YrFq5oN06wH7By/ACRsHRM8hx/0zaA3fNq6Dotd1DUA +SEuYBxRI/Eqmnkk5Qj4Qlm6UEk8MotOC2pssN8e8i7DyOUEi554FnWIE5wtHRr1f +gp+TurL6T6Gry84phQ3zFW+Obj8sP7uFUn7XXjeFNI5EcT3fp0a/a3DmSpZRlg1B +JCECAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4ICAQBkUCBJ2lYcHPpJim1F09xSbP9B +nHhBXZmE8TdOIQF2Y5aJLtt9rGj+XYzypsz35+FGGSchiKFgdKN+PEGgzkKCeEIG +CIHZW2K9fVtMqsAixKbdn0fHWdItdnEkvse3fIt4O2vr6WYP6xJ4MdEFGyevOw3d +4573Gq+khzgdBY7AZDIPsJu28SkESoPw1yzo3R5XV59kGvM67gNijQWu68F6casR +kQWo8vs5TkmzERBredoJoOb6OCpbdj42jbMf9R5uu3fFJtPQqPxE2aLv5dBI6U+e +aPRnYHFOo4AMhIELaiIsXaHVEfiICFGrZtv8goHdkxeB7flwC5m1Ml7jIj/v5/Ib +1s5/x95urE+OIhUmXyr8bifRijxfqQxL0Ol/nbxZx4AjQb07MaJ7PlqatwX2SjQ/ +5Sh/Sex44qFLD+lA3+c6hH3yW4q+rcbciiYa9Imih9sflQcT53jWcwomMsRcA8cP +wMmV2K0JBBYcOOHkyT1+L1v1BGWn0sNlHU+ES58OPU1d/IMbbVK7AZghN/CLPrIG +MlfuOmehiV5vnOvUX5pWsTQAF+7tP2Gw/CUN2TRbOb63OZSlWy1xSlzE9jbs7hb2 +WrbTH8e5eI3l0cCT1Ecbz+9/Bm8gtozbbEE/yMyok+Y5NJYjwVboCwQ1QYiIr/eU +eSfenFSsad1y7r5stw== +-----END CERTIFICATE REQUEST----- diff --git a/spec/fixtures/smime/CaseInsenstive@eXample.COM.key b/spec/fixtures/smime/CaseInsenstive@eXample.COM.key new file mode 100644 index 000000000..dab0bc3e2 --- /dev/null +++ b/spec/fixtures/smime/CaseInsenstive@eXample.COM.key @@ -0,0 +1,54 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-256-CBC,897152EBDB085F8EFC4E413FBF5A35FD + +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 +-----END RSA PRIVATE KEY----- diff --git a/spec/fixtures/smime/CaseInsenstive@eXample.COM.secret b/spec/fixtures/smime/CaseInsenstive@eXample.COM.secret new file mode 100644 index 000000000..81c545efe --- /dev/null +++ b/spec/fixtures/smime/CaseInsenstive@eXample.COM.secret @@ -0,0 +1 @@ +1234 diff --git a/spec/fixtures/smime/ca.crt b/spec/fixtures/smime/ca.crt new file mode 100644 index 000000000..a21cece14 --- /dev/null +++ b/spec/fixtures/smime/ca.crt @@ -0,0 +1,35 @@ +-----BEGIN CERTIFICATE----- +MIIGEzCCA/ugAwIBAgIUdRCemO0RlIZ2tZTwO/1W2eeR/eEwDQYJKoZIhvcNAQEL +BQAwgZcxHTAbBgkqhkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMQswCQYDVQQGEwJE +RTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xGTAXBgNVBAoMEEV4 +YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxFDASBgNVBAMM +C2V4YW1wbGUuY29tMCAXDTIwMDUyMDEzNDcxMFoYDzIyMjAwNDAyMTM0NzEwWjCB +lzEdMBsGCSqGSIb3DQEJARYOY2FAZXhhbXBsZS5jb20xCzAJBgNVBAYTAkRFMQ8w +DQYDVQQIDAZCZXJsaW4xDzANBgNVBAcMBkJlcmxpbjEZMBcGA1UECgwQRXhhbXBs +ZSBTZWN1cml0eTEWMBQGA1UECwwNSVQgRGVwYXJ0bWVudDEUMBIGA1UEAwwLZXhh +bXBsZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC1bJsQfM2d +3xnNCvQRNaj4u4s5/TnXMdQzwb1fkRTOejEzV0qEXWWTewCMqgFenf/PwHsm6dEC +ESfO8aMz3yu8b8kpIBt3H5cdzSAaQ+Vyyv4bDe+o9EGcYzhRgonef7rYEaU+9s0S +qNDUws1XEAqtu77VHG82p99KSe7nL9t+I01R+f7PNkj553O5QoCHWg1I6zfj7s95 +lk9x8wHcBdRfyvYpCAkyV357dDvky2v/zHHYOelgAF0MG77kbsxHLlS9IM+GVFsc +pun28LoS4kokO9d7sDhkwSWFYGCQ/jURDtgFl/kf3JYqoCXdGvaTC1cesX9jm7Pu +HqFB7fhXbsKi2U8RmbTQ3iSsrkn/XWEbcOwGWOBmiDdmAAdCd5Fx2ALizviCfeyE +R0FzWstdDolugCGHt+6Ymm+hn84ZJMfe8HpSb/rqupSUgJUYLJCBFAyRGs5KugQA +/h/Zcd8JTh0cg1BCBca7Gqruqp1RyY09v/VYUlvPqyurfsVGSDvB79UPC0jRSt9I +T6ztiQUEeVcwZz0h2a77NW7JhKd5u96+rbxM2JnBKiNLthEaL92FIjSaZ0bpqJ6E +j/2FO3dhxSgX+lNMEnUmXgJ4Sf/pamoHIjr/KBbB4BF19JiGNsMP2Xa6FjwCmiM/ +62s7K6N32wa7kniRVKbvkAT0N7117TqsEwIDAQABo1MwUTAdBgNVHQ4EFgQUDC1C +rWIMc++tNKpFXusixDF92GwwHwYDVR0jBBgwFoAUDC1CrWIMc++tNKpFXusixDF9 +2GwwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAa6/qeDl7R1iv +rRR66oAjjkt9m191fO41c/f+kA8qOeCNKuZRGWHYPRJYg2P72uQFANHawl8jcFlW +3gFNJ/+i7CxEhxeIFxIYX+wFEgqCBZCd1Ao+4i68C4EAVNVmtPxC96aGstzgamg/ +qIv70DpLDpTC6ZcD/qHbJQb2Qspsuz1jvkELQ3on77utHEaJcBn6C1qKotRIplWH +OKTczLtCgx/BI5QGV+XjzaJXm34l5LS3fA2Y+f2faSWz6lBjSZnTTxijBQfrMDqr +2h6CkEWniPeEY85Knbh7tdc7l0Q+mtUEXrw+8hrDRu8bVAfeGsx4464gd4ulZrmH +bBVqTxsarhih/UsB37Pk+lAueB5T/aqbr4QJj1mu+hukQcqySUCbl5b8S9sgfbB0 +RP+N9OgqRnkLlnds5eG3+XJl4G6h0iWEKP/XapQcf6VBZTvs17AxVnPDvDUKirTG +ecvAj8m07orp33Ng/5obFYxgLaJEBh2bA1NIVvPQzaYxDssp21JOawyUiWEAc9u0 +itycRBjSYxp8Q84HSj2Mw0+RQ4LKpclUlBeuN9tKo155lJanGVOm3Dy7QhpI0nxT +LMOTqLLv5EJo+5ok1IUTLBkvtPvFsYVZuauJyDdTUc7fpdILXXO9jGIKcBzf7ima +FglHwSJZSR2WTTsmd6f/9grOUVNt51I= +-----END CERTIFICATE----- diff --git a/spec/fixtures/smime/ca.key b/spec/fixtures/smime/ca.key new file mode 100644 index 000000000..ecf4b81bf --- /dev/null +++ b/spec/fixtures/smime/ca.key @@ -0,0 +1,54 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-256-CBC,C883629DF6D2EB2F339DA0E9DDE3A287 + +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 +-----END RSA PRIVATE KEY----- diff --git a/spec/fixtures/smime/ca.secret b/spec/fixtures/smime/ca.secret new file mode 100644 index 000000000..81c545efe --- /dev/null +++ b/spec/fixtures/smime/ca.secret @@ -0,0 +1 @@ +1234 diff --git a/spec/fixtures/smime/expiredca.crt b/spec/fixtures/smime/expiredca.crt new file mode 100644 index 000000000..0a290508a --- /dev/null +++ b/spec/fixtures/smime/expiredca.crt @@ -0,0 +1,35 @@ +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- diff --git a/spec/fixtures/smime/expiredca.key b/spec/fixtures/smime/expiredca.key new file mode 100644 index 000000000..a379d1b8d --- /dev/null +++ b/spec/fixtures/smime/expiredca.key @@ -0,0 +1,54 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-256-CBC,AFFF2A7AF6117991109A4B9D75D38008 + +tJc+dKbzF4ptKQWjrfnUsIa0Ihb44cVYtEQ63ouhN13xVNFSx0N0bBl4TehPo3c5 +OFG6asNMadxSSsZKUl3IKrZkcysUBD+U6qBg4ysdR4FO1yeUaoX7UpyIGSvl6fSY +reuBu+3IOTveUQNSFBrlIGe6/KpLNupG9dYUnXkRD8oCNYacb0K78JL8388YKgzn +XnXSUoKhlTa7jyRZASE5gdTEdMXjl5FAlWvtIUotkg5/oOa9clVg9psli/3GbHdp +BDa69kimwjvTHbeeqx4wk4tZ/G5bOq6H5LLMT0eD6R1e2upObpMWsfxgLO9LAK0V +YHUfmLFsJWSN4g7unNchx2otOswd0/q+iss7buhYEvWb5ZBro+NM318OGHiJO5SM +YQ6DxM5oI8EE4GmBJZeh1MWKJDR6IPRi6tXX2i/G8IshJXXm3OIHkicAj68eEwqK +Y2Ud0yFjHzqdfYMBUemhZlCXaEBh7sEqmtsK5x06laqm0Jeqzt1o8yVfcU0QIA1B +2ZswFiO/cnwK9AhEwjYYqXbpFkRHtR7EDap04IuiYEpF/yRHcYAe9wOjvZ+Baa7s +PnjKyePGmNQVWYPCSAIHKhp8BpPpwkFDaYvnn6LcOcs8LpDzgqrmsh7e4i4lV7z4 +qzP2SgbbkqrWr1wc//ldllztFocFU19SRnCGj38gicriLLIU9Up/B59In6Z9KGSl +qvmV1TKJwhpXbZlN9Z9Ea+fT6As+hSi7sycXbPtdkkH5EZf01ZXyUjItsueGB0Wh +8fnAS72Azj5eEVEDELOXiz/5jpGLM4MMfVfa6Za6OMI/VJ0ufyV3L8Ji8vnbiQob +7jVQeS6mZUCadxTORvdgtOA+qqLodOmi7bVRa0s9GkPer5PAhTe9A+xVEzU7hcbD +evl3MHmNHGdQPxgqP9xpnN8LandCLM6Y3QzZMHaqBwT8cS/eAmZm16n49qye8JSB +UJob9sCHh0etw0RtWXPWjMafn+Ct7QGnEMRrWb2/uhaf3cCAHOnaMXKu4osKrWp6 +pH0wHFhMs/VxP6h5FdbiDGmCEgTAGmGFGynvNRM14vA43y7TeFDjF3Fhv6QdbzMp +7ywTVrN/4rVdcCVoiVBYlE9OcKTAvvBIBFWzMPhaoIzQhPX4PzKdM6RCbLSogVvG +IuabaI9t6eD+W/0uo3yZnWBaj41A5e985ifV+ONgLNbV62oV01GGOewrraciHMez +wmGegi062vyP4dAp7B/xRy1iq5ximjWHxr3GzhDlLls0sIJA1w2hxEOy1ghYXoap +cEiaW8pkef285/bZ0FKRaaIp0vmiIf+dhmUV1k2/8m7zJVnvrExv3wDwiAvAhZ6i +wAiGEZPOA5EWNShuRdFneU3rpzeOZpci5ckq7ltWrmkJ0tIW9bKm/Gavho0wbrrx +PBW2EjtPcTp63/e/ObOUkFbbO/f/l+fmNLruPN1bWYep/eBsvVuRTiOuKN9IBxGL +tYTSdYY7rNE/l6djoqoVMh/uZL8hj/cRIFlaHWr7A0Wr95M6JXly2IynCqcmlPmv +16i8LiNfo/1Xv8BuoVth7GqmrcQzHsZkTU5j9bGj/fbsCCBliqlLuxkrY3NYPoEr +EHnWX+q8ywOeZJqgAV17EHxTxL/e+0iGQFy+oXEyxLOZvnRpp/wDgCuya6gQ05sa +iG8lkA3hP0UX1pL6SivEPIUecwEHw0pn9p/AuJ7n9ZgexHKYJrboSjB9JMnSuHoY +2pOwduyCvpc4TxH6qV1xXwyfHG/oNP99jnJdHGBMew1uU62Sfqf4kdo02OndGkdw +1WiK90w2qIAk5Cpgdyv+z/zaUDQEqVdbMUUFgqUCd7Is6nldZKAvgcoMUnrUnZxj +mCtgBt+3n4QkXTKNa/AZxdOiwlSqOGODjWvbPxI0VEb1hffhkROfewhJtJHtqfqb +5TkI3DDnBc2hsMRvI0h6f+K11VySQJtDA2YwEyyE+SsS0DRLivBlPUnRD//k8iFR +xiuTSsnyU5FlH4Pjn+gClLDyToytbdZUYcEVilycmrDzeYzfL+2Oy/mq8NPgEBlB +Ay8M5c500rIDO0g8a5x+5qqMvOE0e66ZfL5NXoXwFYce7pWyb+pJzhe2EY90rVRe +q2njzSxL2ecZe/e5efPhXxEt3xAdxMm65Us18QjNVt/V8EMvtUMhNwAK4k5dP/5u +GECF2kwHquEWKj4AmX/NDfaLuJdidVIaiY5DuLNkqKcqoKQXblKcInRFi7g//89R +EOpI34hshqOSNUa0/xBwRxOBijGcwr8yOpeymSutXRhbVRJReK8PkH+uNAkXjpuZ +/7ItWvvuadM5VLLFmH2cBKYufwGLc96XzVsqreP1UMOZLZZqPJ8wmBbFdHjmOpUR +1BTwbmLDS6EmrvmHDop7wQcN59LhB13H4E8MVFWfCaH9fCo4u6s+qZdNmFiaY9KD +74/QrOImf33AlioYwN4Rme80AmzwnT1up1ZHa1O2ec+2dQudnLI7b3HIHj3qmw7n +M0SDnthGBVED1izQKfTpovzKfWkQ4oIZLAktxy3TEUVgM0ni6zoNK9dQrm/QNuKC +sMeV3HoxoZhioxxzhUDDuwZFr1oPhLn8p4gnwoTXBqZEiENjdy5w+pZ/r5InVmM5 +CT9sglDIz3Uge6o6OA0kvNif/R1BFH8crMoWCZM10SA3N51emByYd0G0Hdv8/qNw +/13gJXwlOl3pMIkOpjhWcHrLh43VubMnF8ldmSd8AVuvUlztr8KK+C1prUV3HBzg +01HLizyWbKEHeFEFCajAdLPxl5QJZj0RRMEGGOeMUv+xVtIzrYb7Qzvlmfivr42n +6T9qQvT9zfRttMA+bl8XOcGGVEfYDR7p0O0Xg3QAb4v4k5NtbA8AMjrHOWqQRpFj +yVf9nJlLm2MhvVA6CTRzk1tIRtndQDBUWWrDB7jXMOlxUgJsRZDlGYn1DgvYyVNZ +LIzTMNgeIKiC6vvUQNPcPn5U0SE6/BbaM9+G6vWqyWWr1ryaihu1xygBksvSFSLA +9hVIIoiZ+g5Gir7ZBsl/q2ZU9/k852lVQu6EaBI7GWRu8h7ZV1o/YxSwuiMLX0CN +fUFbpJW+LeNjeoKBfzyNjPTrFmOQIWS0FSL6Ktc5W+5b2qJZ8yxSrUxn1YzHdHhA +-----END RSA PRIVATE KEY----- diff --git a/spec/fixtures/smime/expiredca.secret b/spec/fixtures/smime/expiredca.secret new file mode 100644 index 000000000..81c545efe --- /dev/null +++ b/spec/fixtures/smime/expiredca.secret @@ -0,0 +1 @@ +1234 diff --git a/spec/fixtures/smime/expiredsmime1@example.com.crt b/spec/fixtures/smime/expiredsmime1@example.com.crt new file mode 100644 index 000000000..fa1d90f69 --- /dev/null +++ b/spec/fixtures/smime/expiredsmime1@example.com.crt @@ -0,0 +1,37 @@ +-----BEGIN TRUSTED CERTIFICATE----- +MIIGZzCCBE+gAwIBAgIUCSX5LFwjHF203lCsQWh3FmcEo3IwDQYJKoZIhvcNAQEL +BQAwgZ4xJDAiBgkqhkiG9w0BCQEWFWV4cGlyZWRjYUBleGFtcGxlLmNvbTELMAkG +A1UEBhMCREUxDzANBgNVBAgMBkJlcmxpbjEPMA0GA1UEBwwGQmVybGluMRkwFwYD +VQQKDBBFeGFtcGxlIFNlY3VyaXR5MRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRQw +EgYDVQQDDAtleGFtcGxlLmNvbTAeFw0xMDA1MjMxMzQ3MThaFw0xMDA1MjQxMzQ3 +MThaMIGiMSgwJgYJKoZIhvcNAQkBFhlleHBpcmVkc21pbWUxQGV4YW1wbGUuY29t +MQswCQYDVQQGEwJERTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4x +GTAXBgNVBAoMEEV4YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFydG1l +bnQxFDASBgNVBAMMC2V4YW1wbGUuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAu2WQQ8nX2X9JqZwqQi0qiVmu5gn956l63OF47lhJzP7hha7aP2nT +Syv+fNHn+5Td9Bu8VlNFMcGgcEAgtl9ESx5sFMgYjl0zRUNNcUHCMXFQ4deTq6IJ +/WzjOIZxaS15Cy7L7CUPYGhrxhaCCXH1CoR3fX8SzxZDNEUJsHq1MuJln+sodcXT +04UQ4rgvgnv0UGU5T2iQoCP4fhlICyG1iU7OBwYS+ifJDH8EJSSbDrkbZaO18Svk +aYu81s1GBcSPMOJBJRDKwHdj/0QEGY4PuK2xYOE4SkQ31gJAjMVaSCxBv1i/ePgg +n9Dl+Wnlxq9SI9K5OBd14LnrpTYIksIRQ8um6jehR7i1JA04DG+El0qZNJvgZTP/ +sVdX11/HdYmRQ/agPNoMlcAxWd7aNJ4uHStElh/P599WnjonoU8MCpiGm3+spnIF +Xdg0PXTMYm1jpixwQj9YKIKSi16ABi77GgknSe+Fsvua4TJWvf0emySnhje0k4pR +fet5vi/uRbUv/qtm4KFSdkZrbBDlNuLOYATlDP9DLHmGlvSfoL6XWktYHKtr14dh +ThhpPayxOCRP7VJtx2lY40YrTJsSPRNTSokVp6Iaopps2Cvmifix6oObsGmfFH2I +vEhrqmv/hDMvQGb3dLmeUiomd5GTG9ThaZGuT6XcsqTVNodsyJAik88CAwEAAaOB +ljCBkzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF4DAdBgNVHQ4EFgQUdgQNLDuAzIMe +B4CsomLEZU8IRZIwHwYDVR0jBBgwFoAUH2C76A6xdx+lIt0fi4TqUWTpj4UwJAYD +VR0RBB0wG4EZZXhwaXJlZHNtaW1lMUBleGFtcGxlLmNvbTATBgNVHSUEDDAKBggr +BgEFBQcDBDANBgkqhkiG9w0BAQsFAAOCAgEAhK4r3vPyg2aV1o7KWG+tZ1OGudJj +KfiGoOiee3yRuZABonb0FxqmPt2wFQ9Z2yk4mDHNmAE1BiiPErAPQ9dzbyR5turP +VvQ6e41khyOR5ZzKfjJtkTAn8iQAVHS4lr3B0jjeNtzpPvCfTX2F0BhI9hO6BU9+ +vpMHcm2JdriCUrPMYmoyujib+Dc76dRBOWIJWRu4q0ANvrYQOWiKW/GdMDiRbNVB +Fu31s0fyxdA/TM9FBrk9E0EDpyxskaWULMXK7VBa7GfBD6P/MFdxGbE/HT87KewI +J5G+2x2kCKfzNGKOhcHDegfvX30DiR86NQREnazAXATpMBtlroUn4eWWBOw2Trod ++a+U11ET9t43PXxgk7jp5UwgUqHTNdCMgy1wc0JZw01m6aXS6mfG5NxuCZRgRvUj +LLwzo/wa/lYKTm5t4s9j4B3yNK7BThOKNcsQSKPTWg4eUWFTVPaXI+eN10vbNYZ7 +OUWrzm9BMvH6RBGktaJzbJ597D29R56d044T65njVJO3BaZyTWhkp51P47w+BDxX +jSJjutQsNiEaG4KSWhiJfI2ya3lp6u9iNzsfLsmGl2ywWjhyQPGfee894twt9LdU +r0bak4xs76aD5p/BXL9BatXd6almGjv0SxUUjYJ6VBThXjm9//gfhcxtZkWVPfev +WsOFFaZH/kQ7yH4wIjAKBggrBgEFBQcDBKAUBggrBgEFBQcDAgYIKwYBBQUHAwE= +-----END TRUSTED CERTIFICATE----- diff --git a/spec/fixtures/smime/expiredsmime1@example.com.csr b/spec/fixtures/smime/expiredsmime1@example.com.csr new file mode 100644 index 000000000..5f2058ca6 --- /dev/null +++ b/spec/fixtures/smime/expiredsmime1@example.com.csr @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIE6DCCAtACAQAwgaIxKDAmBgkqhkiG9w0BCQEWGWV4cGlyZWRzbWltZTFAZXhh +bXBsZS5jb20xCzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCZXJsaW4xDzANBgNVBAcM +BkJlcmxpbjEZMBcGA1UECgwQRXhhbXBsZSBTZWN1cml0eTEWMBQGA1UECwwNSVQg +RGVwYXJ0bWVudDEUMBIGA1UEAwwLZXhhbXBsZS5jb20wggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQC7ZZBDydfZf0mpnCpCLSqJWa7mCf3nqXrc4XjuWEnM +/uGFrto/adNLK/580ef7lN30G7xWU0UxwaBwQCC2X0RLHmwUyBiOXTNFQ01xQcIx +cVDh15Orogn9bOM4hnFpLXkLLsvsJQ9gaGvGFoIJcfUKhHd9fxLPFkM0RQmwerUy +4mWf6yh1xdPThRDiuC+Ce/RQZTlPaJCgI/h+GUgLIbWJTs4HBhL6J8kMfwQlJJsO +uRtlo7XxK+Rpi7zWzUYFxI8w4kElEMrAd2P/RAQZjg+4rbFg4ThKRDfWAkCMxVpI +LEG/WL94+CCf0OX5aeXGr1Ij0rk4F3XgueulNgiSwhFDy6bqN6FHuLUkDTgMb4SX +Spk0m+BlM/+xV1fXX8d1iZFD9qA82gyVwDFZ3to0ni4dK0SWH8/n31aeOiehTwwK +mIabf6ymcgVd2DQ9dMxibWOmLHBCP1gogpKLXoAGLvsaCSdJ74Wy+5rhMla9/R6b +JKeGN7STilF963m+L+5FtS/+q2bgoVJ2RmtsEOU24s5gBOUM/0MseYaW9J+gvpda +S1gcq2vXh2FOGGk9rLE4JE/tUm3HaVjjRitMmxI9E1NKiRWnohqimmzYK+aJ+LHq +g5uwaZ8UfYi8SGuqa/+EMy9AZvd0uZ5SKiZ3kZMb1OFpka5PpdyypNU2h2zIkCKT +zwIDAQABoAAwDQYJKoZIhvcNAQELBQADggIBADS28gWmrzgcXx+ZTFc3EpffNmcx +lulJ31PXsNot2NRMga4mRA5L8GK1uKrLAIq4koaBUGT0vvV46R9zpC+bildfxNGz +5+v7mvIYkpdfFJW0vAHnO4FuUMkNHDvLSVtly+zQD6k1fwrHxCqsr0bKaZE28b5Z +Bf/9mLprifmtSOy0brSGQ/C7C3z4NCvtLHd6Tb53lnBK6WTeoRYKXvFynIN5Guf1 +ONCcUK2TIRxjSYLiz7A26SpHGHfgGnjZutJUqKtr2sWhpq/XVZe8tfAWBrMTn4oT +SJAYRQ7iHdr15egpB0Y/SNn5nkcYSsSg+deEzV2pTbxgEOlY/+ti/V1xyBumIFo8 +6Taj2mRXZHkzUNqEWB+nG6zvJwqyefTxaDA6Ijw29tFSURxH0j5priAgKJaBzQ5z +LTLfdi/HU92k7ACJxK5tJdDRj1uVUxPg2wS+mZVn3s4qU6wly3Nk8JsnG+WKUQFQ +BU/a00qy/4KjthFm6Tb++I0X7xZO42aMuaVepskQyum7AhTqehyayGo/MhGf1QIs +ouTC8BF7MMBvF2EHEf3TOazbYDoeUS3VHm1wEgjlt500/DiOlFxMWO7JCebRTxHA +NuHxvIwaPOQPP3gLi0IxV1HzG5rPxa66l+pp3M+lU8V+nQuNBvCa10FVgQB+BBrt +5En06ChboN3gVolO +-----END CERTIFICATE REQUEST----- diff --git a/spec/fixtures/smime/expiredsmime1@example.com.key b/spec/fixtures/smime/expiredsmime1@example.com.key new file mode 100644 index 000000000..ada4921c2 --- /dev/null +++ b/spec/fixtures/smime/expiredsmime1@example.com.key @@ -0,0 +1,54 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-256-CBC,8CE77F705A91FC4378059C551C7C5A05 + +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 +-----END RSA PRIVATE KEY----- diff --git a/spec/fixtures/smime/expiredsmime1@example.com.secret b/spec/fixtures/smime/expiredsmime1@example.com.secret new file mode 100644 index 000000000..81c545efe --- /dev/null +++ b/spec/fixtures/smime/expiredsmime1@example.com.secret @@ -0,0 +1 @@ +1234 diff --git a/spec/fixtures/smime/expiredsmime2@example.com.crt b/spec/fixtures/smime/expiredsmime2@example.com.crt new file mode 100644 index 000000000..fd851f1f6 --- /dev/null +++ b/spec/fixtures/smime/expiredsmime2@example.com.crt @@ -0,0 +1,37 @@ +-----BEGIN TRUSTED CERTIFICATE----- +MIIGZzCCBE+gAwIBAgIUCSX5LFwjHF203lCsQWh3FmcEo3MwDQYJKoZIhvcNAQEL +BQAwgZ4xJDAiBgkqhkiG9w0BCQEWFWV4cGlyZWRjYUBleGFtcGxlLmNvbTELMAkG +A1UEBhMCREUxDzANBgNVBAgMBkJlcmxpbjEPMA0GA1UEBwwGQmVybGluMRkwFwYD +VQQKDBBFeGFtcGxlIFNlY3VyaXR5MRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRQw +EgYDVQQDDAtleGFtcGxlLmNvbTAeFw0xMDA1MjMxMzQ3MThaFw0xMDA1MjQxMzQ3 +MThaMIGiMSgwJgYJKoZIhvcNAQkBFhlleHBpcmVkc21pbWUyQGV4YW1wbGUuY29t +MQswCQYDVQQGEwJERTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4x +GTAXBgNVBAoMEEV4YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFydG1l +bnQxFDASBgNVBAMMC2V4YW1wbGUuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAn7Ki6wiAVUD8sDEEIJQCzI1tP2Vbri6F5kubfu2SVpUCL4i/qC/j +t1n1WfpeKT07yx7thZhuMewCrgfIONNy/4nrVTSYHr1qZ+yAkkm4NeTCMLkjBRir +gt4S/VKWJsKhApuz2JdliqPPtEKhUfDQrN8fhGeJ2zclBFo8WERuzyMhof2zu2ni +qxRBx3vCapf8pz3nWkP3ysZ+qvKKa+se2E1rT6t97a7qpgW+lepeGukgSRNGGsOR +CeBcwWtds1TtgSqAwlbgNCFavL2A6y9+KEgjOMzhsi8Czf05TLbLL4Y6sLFeuZ8r +hwiJjejR/5qjsUnFSBXIw20ulTJsfEO0puC0irB+J5yt+BtKZWh2TzvhqRIKn+Uy +Z1B91XySsPOGga12mK4HX3lY78ddmt3XDDEcL/0/c1IEuTyJrDiHCsum60gWssuY +yGRfnDJrKVkFd6oASh6YYIvEBQhY0ib1qsfa22DRqixuN41QFwFa9QRhcmOq2l+6 +Nq8UlznRY/57K2IZQGZ9BO5Y4lYx4Wc1x+C75cFdvAcryj8Gs1E7529Bg3feb09k +H6nCsSiVGCc8xOPfnZjIzYNVN0W/98Scr/Uc3YR1MO3fWljqiDr3xWNrrQTjEglJ +DwfQUGz6wfCPQKtQulmLvKQ19ntclNyW+eMH+ITpJ1WLMCHfxpt8zcsCAwEAAaOB +ljCBkzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF4DAdBgNVHQ4EFgQU6SsGDhLYx99k +Ypy1OkSDt095FGEwHwYDVR0jBBgwFoAUH2C76A6xdx+lIt0fi4TqUWTpj4UwJAYD +VR0RBB0wG4EZZXhwaXJlZHNtaW1lMkBleGFtcGxlLmNvbTATBgNVHSUEDDAKBggr +BgEFBQcDBDANBgkqhkiG9w0BAQsFAAOCAgEAtbfj4fF+GwokiV/NLA0mPmQT8+Hb +aV4lRbJX7wGmHP12wArH4O/aqMOMOKqfU50sJPT/KpxhDcNurXdl9YDxAMqlHZku +sLFb52Apd/X6ceWBuvimXs7TQDSx7Jv14YKf9byZ2VZj7XOvhX08ewxl0S41VQmW +jWylMbO27wE+jRz47TE1/t++HPbHms4EMGxMCK/QwtFN3YFH8HDEfYyIbLY5wH7x +9jmdl0JpDGdq8ZqXiiJHhAq07q7mEJ3wo6gyK/cdrv/Oovb+GuIpK9mflLlyn127 +zOrABF/k5w7UVh1r6K59UWY638kCKASr35uyaYIYmeJcocauXf5i+66GHrI/yCRo +IRSD/Dm/raSy8gQJ44mDKkSpDr7+0oZGFqwWJWfxlGRaGKk/vnffuiG+RjMOF9Vu +naNcZXe5cjd2n51VegZWNind9Xm44QgEVtq/ywN+sMLJnwjck9bwdfOtBBI0zfYE +IY8izvwwJaDWlrus6QN3ZKU4InZP2nBxMxZF06ntxzvdXCivWO0NFnvdErPUX17p +esO8c0/NQUK1Lf0QJd3+DgGpCaGNlmfY1vbJLHUBBVo46eXAEvGpJ18eh64hBvts +75XZji+9Zz/sXoehBRPpx8szLFvUrv0MmUYzRl47T2uxPV4j75AvQg707T3AAwpZ +BDFPN1E+9oEkHcUwIjAKBggrBgEFBQcDBKAUBggrBgEFBQcDAgYIKwYBBQUHAwE= +-----END TRUSTED CERTIFICATE----- diff --git a/spec/fixtures/smime/expiredsmime2@example.com.csr b/spec/fixtures/smime/expiredsmime2@example.com.csr new file mode 100644 index 000000000..622f6f785 --- /dev/null +++ b/spec/fixtures/smime/expiredsmime2@example.com.csr @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIE6DCCAtACAQAwgaIxKDAmBgkqhkiG9w0BCQEWGWV4cGlyZWRzbWltZTJAZXhh +bXBsZS5jb20xCzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCZXJsaW4xDzANBgNVBAcM +BkJlcmxpbjEZMBcGA1UECgwQRXhhbXBsZSBTZWN1cml0eTEWMBQGA1UECwwNSVQg +RGVwYXJ0bWVudDEUMBIGA1UEAwwLZXhhbXBsZS5jb20wggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCfsqLrCIBVQPywMQQglALMjW0/ZVuuLoXmS5t+7ZJW +lQIviL+oL+O3WfVZ+l4pPTvLHu2FmG4x7AKuB8g403L/ietVNJgevWpn7ICSSbg1 +5MIwuSMFGKuC3hL9UpYmwqECm7PYl2WKo8+0QqFR8NCs3x+EZ4nbNyUEWjxYRG7P +IyGh/bO7aeKrFEHHe8Jql/ynPedaQ/fKxn6q8opr6x7YTWtPq33truqmBb6V6l4a +6SBJE0Yaw5EJ4FzBa12zVO2BKoDCVuA0IVq8vYDrL34oSCM4zOGyLwLN/TlMtssv +hjqwsV65nyuHCImN6NH/mqOxScVIFcjDbS6VMmx8Q7Sm4LSKsH4nnK34G0plaHZP +O+GpEgqf5TJnUH3VfJKw84aBrXaYrgdfeVjvx12a3dcMMRwv/T9zUgS5PImsOIcK +y6brSBayy5jIZF+cMmspWQV3qgBKHphgi8QFCFjSJvWqx9rbYNGqLG43jVAXAVr1 +BGFyY6raX7o2rxSXOdFj/nsrYhlAZn0E7ljiVjHhZzXH4LvlwV28ByvKPwazUTvn +b0GDd95vT2QfqcKxKJUYJzzE49+dmMjNg1U3Rb/3xJyv9RzdhHUw7d9aWOqIOvfF +Y2utBOMSCUkPB9BQbPrB8I9Aq1C6WYu8pDX2e1yU3Jb54wf4hOknVYswId/Gm3zN +ywIDAQABoAAwDQYJKoZIhvcNAQELBQADggIBAHvxYspSNaV/k9ram2S/N+OepSQq +BZh5sQKI/JXqihU6/CEXB48Ogwmg0b4HbpVmZWqgs4XbGediTtj3yq5HVmqQ3518 +ZIUH/ZwKn4HSCQyTJ4PmMCVq15E+nqhXGMCuk/4xVTuv4eCqHKHqLvliWLU6Zqy2 +5TJKLMOLlfulbN5KkV/2S185pHXDt/IHey6/GISeuIR0t9ev8+3apv7TWLT/aLbn +lJQuHFLBOWmFjk0QF69jcXA8O6wjmJguJA2NjamrjQ0Uy+PXN1IDchEwGmLDKbEv +OcuhkBoV5RV+RPw1VBTavjkmHWT6Mb4NW4Iq+iT/SV/oYNqCmJcFKj4s1qxOvB6A +DxWsbX241nf3SUJDcoKl9eLXPqYZDqoH9PNufuJBaHXwUbicKBSdSbDhNPuk3JOM +jOnLeQYE8yrS27xm83XlB0wP11zSefQ+gfKFjOQUuS1RXpQngSDk6RzusglZUhjn +UJdJhTwucOaamGdgpu+LwvZxiAmj9wM2+r6XJ01+VmoKmc+u0/5Kp29AjkjcaFQn +c5PdrgIRtypE4SNZMniY584QNE0boJ503ygiiXd4WTR58Lbg1ezd9EpQeDsfDP3u +suzS3ChO1JCidk7YhV6BKoSAR7fmRBUefu7jWtY/fOUZnl0F9+WA2lwShtFqYE0j +hLPOcHKMoBEygeCn +-----END CERTIFICATE REQUEST----- diff --git a/spec/fixtures/smime/expiredsmime2@example.com.key b/spec/fixtures/smime/expiredsmime2@example.com.key new file mode 100644 index 000000000..d7999ec23 --- /dev/null +++ b/spec/fixtures/smime/expiredsmime2@example.com.key @@ -0,0 +1,54 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-256-CBC,2D01520A669DCCAAC31310846FD3F95A + +uVTH48B5k3TxkQgfo3lXllNxXLICC5UZXv6znRxk35fJD7PnDpeOMDijlW7S4+gi +CrnOzm6ImRy8it0jMU2M/kzsT3vfOXMW7/kP4Su+nqOGiL1A98Rm6UKqj3MXaXnL +aNYgaJT+m9DyTU3ih1jz9azXfy+iotFMng2Flo/xeqxODTu5O1xzhx1F7TowpWGK +uQL1jv6uzTTtsq9xjyS3PeVIloviwETTNMgS21eqQ6uK5rJWSqJQTj8wqHLme5I0 +YNrvDXPOYjMUrA5EvfyzyZmgriQaJuCmkjot4EqzQd5UCfPxbugRaKY297oMkfAK +NTW1OGOiuCX+OS2v191Aaz/b+Zs0GNj/iYf747EvO5s8usGlNCTBM6CGOst72ldW +ns0x1HO7JoMyP8S9Cv1J99KG0yKXPJs0WQDGL7XnOh5hwZgQ3LJskmur/v+ltKra +zN/TQOGnKqFs/MKnlTc8560DVsoFdaZAC+IU9eM0+hqMlVCgFS1bYuYK1o/Q/S7b +H6GavupTiYaV+8psRGfe3XUkm/hSyzFBg8/W8kxS14ZqVoWd0vmuZTXDLDWnp60K ++dxUokKac3FQwtqsdYm/jf6RA3JoSMAhr/M5TKKQdZGSr17A2uhDft8KEerOTg5W +sJaW9Wc32O7xFLcxN8rdTPmrZddLwHw7j+oUeD06z1UdCAEdWRVQ9bdF93Gxf4Ts +OMudfmmPqxGsqJSdkzOqC/Rz+OZwYqHxryYFzOjvyC369txIXFj5/WmWsG7zBvh9 +tsDD6k50v5vxuATUIYY6xibiOCjJww73vjxRCtwalMYjkw78WccLtJReq8lvN268 +17Fig0bouhQpSEtdQ0gYTiy3spnuoxbyn0kD5bcm0EWoqrcrnOFQJPZ+GAoaXDzf +UHWbKwb88ReegDiU3Q4Wcx5A1jCG0vwOckzuP1AJRYmu/IOu7/mWoNDdFGNgon+Y +pDO2UTYs3JT+bs1UxEuUjcao8ElQfkVeN6cX8YBh5X8iF4iNfX8FBI0rV9sovkYX +Fg4i908c0iCj43gslUMQeGiliNVaMuvepzOI9D432A2C9bZoFfRHlCWuS4VTuBhk +n7REMuaxHhV49MhNrxgQ1K5RuTk+E9aSEOSAXRDyrj5HzMooB/O5d/FWNl+N7PTV +G2lTc80rAlnOX/quqo2F3KjRmlRmHgRJbA7zBktz1H4oRBJv0qGijglQPF2CtBcz +FJTuPZEvvcw7Vnxgi3oCfbayD+Y2k3QC3Ly3RhuhWRQsTA60xhHt1kglJTIUQhy1 +/gYBqPuIrOQZe29yDYqtuMfZelVY706GpcARwRy6039YB5MRZJpVhS8sbhxVht4N +x8GhdFA5xD55BQGbHuXp6A5lLHuL/mFjYleUssWQ8FCQ66a6MF9TpBd3upgewc63 +h/WS/8UklySB9Fz3q903N29Rr4tfAZ+fOtlhk+3NqOs7MONEl07saU2NkqeCjffM +T3xE4ug4Bm2hJLGrzq7B5bCl4AEQa1gLTwxxoSaIEcIGNwBw5nzHqkxQMTlb86kt +Px0g1p/nudOeVpyiSHTYy3fcXgtOsUF0RWgvK1mkH/w7gI9EPhn9J9BE3uqQqEcN +kGKGbewJNkJSIvOTZpym7sUWo5x6xpi2zpTZkHqfmB9RZ7TeAh7BJTQ2Dn51psQw +Qe9utdJr1zx/O4MW8A4MlyEh+5VThEt9q+vzXHVgWzmEDp4Rhf57uyGOXzYJWwES +UAwKPC9N8cFwM3IlTH8KlfkRjszy7rLENTQcq05szp765y7xazIwAyghRpdb+oXE +tHyWKTSsU5zV/P+gXFb0BQdBq+pFtWEaaHAdb0KFEF8AUAUImvKhwiRPp5F1okxr +91l0VW4CD56HwD/+s3NQw2a0wR1SHp6a2KUKLxB88fFtUn55nkEjXARGkTn6Y4Y3 +3f58q0puBXVmfOEU/S8fb0I5/9HoVOKVzmsaD7nssi5jOSRGnI7O+P/a8l6KzMFb +lGTYz31TLKkcuT7H24K7zpGZ2wiufa4NnFUQ3w0VjHQsC2E0gfnmJWK/4Zx99TtJ +hpREXmeacU7PvtdM+vk7p+/bgz9S9QvvskuqHeY4LKUVaNjx8tRGPUFBZNqBezud +r+h7kSwMOkMVQFl80rtbyURchFfiLaQkabeMLT/L9+TFRcGUqoPs5nXJpjw/8WBF +RdfJlOG3ppBm2xDSqMlu1/LdZTAaaXJ7YgukisbEXSe/tJdqauxcZUo5769StEjm +00h6o84Fas77o8XUm3rANeNEyPu2PkLuzPNwvuj1SeDjIZjeFzkaVWWFvTItDPGA +8LXAeBRA/UmBZt6kyJK7xXO/sQXTIMHGDLTSDGAD8ZS0O+Zdqc22Sb3/zDw7RMIB ++pFWHX5laPX50O7dismlQXkmtqEhHBKbU9xNjgVjsGj6VA/B61HgdqBgeNyr8++n +CNgS3xUsoPoe/Vtsa5futRSKVww+FSd8+xNFhsNhUZCHKdWbZP1gDfsRapr7xbBb +LreDKjDS0+fHE0SChVn7AgT8576904ZJQ/0WlinnxgjyTA0gH/Viz/qBTSwCH/Uc +6AazhetHg1nu5bPfzUxtJGBiAV7TPE+vAdqx/BgftpX0XwP/ySF5OIqYbEiFg8gb +DHx9e9NDkSGYMmcxjbHDAqTe7azfOG9ZpMCFh4Gb7yiZDx1U5+2du0dQgJXAw8Ft +yavBV1eTnkvwpDl2FOC1BYEEilA8+EuHwj+dUezyioBOYFngOw92NwrIM8cZJVg/ +xy4kB1kbYECtZyRPGVMTPNj84LRaHwqq0mPIeHvB4Tghk2no1RQNuqZPy7EmfATM +Og8tp5CEgyzlBvmV4Tqw7jB6fi8HJNqmI2deLr9BPcelbGLnlzpq9e2ubixQlJUU +TMFpLt7WMUQjiyV/YeDx7VOE+nabLukKehQCt3dusbop5HcKepLb/8kGH/cMZm5i +CpGrAV1cdul64nR/+yUFdOuvz8jnHMD5sRCGagn2cAsOlOD6D54HSPzTnxLaFh7/ +5S8JYxfmkh/ddiIiC/RvaSgK8VCRhu4jwu3m9h1eJSZEepkMwZxPP7q6HN0pBt8V +6y5aidJ/b5Zcfu2fsxiDQKUR0w5wMm1Xx6/zOoJN4uzngYqkSjxaZtNDJHB3Tt1P +-----END RSA PRIVATE KEY----- diff --git a/spec/fixtures/smime/expiredsmime2@example.com.secret b/spec/fixtures/smime/expiredsmime2@example.com.secret new file mode 100644 index 000000000..81c545efe --- /dev/null +++ b/spec/fixtures/smime/expiredsmime2@example.com.secret @@ -0,0 +1 @@ +1234 diff --git a/spec/fixtures/smime/generate/Dockerfile b/spec/fixtures/smime/generate/Dockerfile new file mode 100644 index 000000000..9c54d003a --- /dev/null +++ b/spec/fixtures/smime/generate/Dockerfile @@ -0,0 +1,21 @@ +FROM alpine + +# faketime dependencies to generate outdated certificates +# see: https://github.com/trajano/alpine-libfaketime#with-simple-command-line-apps +COPY --from=trajano/alpine-libfaketime /faketime.so /lib/faketime.so +ENV LD_PRELOAD=/lib/faketime.so +ENV CERT_DIR "/etc/ssl/certs" + +# install openssl +RUN apk add --update openssl && \ + rm -rf /var/cache/apk/* + +# move base files to the container +COPY config/* / +COPY docker-entrypoint.sh / + +# enable volume to generate certificates into the hosts FS +VOLUME ["$CERT_DIR"] + +# start +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/spec/fixtures/smime/generate/README.md b/spec/fixtures/smime/generate/README.md new file mode 100644 index 000000000..c5abad19e --- /dev/null +++ b/spec/fixtures/smime/generate/README.md @@ -0,0 +1,6 @@ +# Zammad S/MIME test certificate generation + +This folder contains a `docker` image and the required files to generate various S/MIME certificates for testing purposes. These contain CA certificates as regular certificates (1). There is one special certificate that is for multiple emails at once (2). Additionally some already expired CA and certificates are generated (3). +For the CA there are `.key` and `.crt` files. For the certificates the `.key`, `.crt` and `.csr` are generated. Additionally a `.secret` file is added that contains the corresponding pass phrase. + +These are easily generated by executing the `run.sh` file. There is nothing more to it except of having `docker` installed and running. diff --git a/spec/fixtures/smime/generate/config/config.cnf b/spec/fixtures/smime/generate/config/config.cnf new file mode 100644 index 000000000..2b9a33183 --- /dev/null +++ b/spec/fixtures/smime/generate/config/config.cnf @@ -0,0 +1,8 @@ +[smime] +basicConstraints = CA:FALSE +keyUsage = nonRepudiation, digitalSignature, keyEncipherment +subjectKeyIdentifier = hash +#authorityKeyIdentifier = keyid:always,issuer +authorityKeyIdentifier = keyid,issuer +subjectAltName = email:copy +extendedKeyUsage = emailProtection diff --git a/spec/fixtures/smime/generate/config/double.cnf b/spec/fixtures/smime/generate/config/double.cnf new file mode 100644 index 000000000..356c69407 --- /dev/null +++ b/spec/fixtures/smime/generate/config/double.cnf @@ -0,0 +1,15 @@ +[ smime ] +basicConstraints = CA:FALSE +keyUsage = nonRepudiation, digitalSignature, keyEncipherment +subjectKeyIdentifier = hash +#authorityKeyIdentifier = keyid:always,issuer +authorityKeyIdentifier = keyid,issuer +extendedKeyUsage = emailProtection +subjectAltName=@alt_names + +[alt_names] +IP.1 = 192.168.0.23 +IP.2 = 192.168.0.42 +email.1 = smimedouble@example.com +email.2 = smimedouble@example.de +otherName = 1.2.3.4;UTF8:some other identifier diff --git a/spec/fixtures/smime/generate/config/pass.secret b/spec/fixtures/smime/generate/config/pass.secret new file mode 100644 index 000000000..81c545efe --- /dev/null +++ b/spec/fixtures/smime/generate/config/pass.secret @@ -0,0 +1 @@ +1234 diff --git a/spec/fixtures/smime/generate/docker-entrypoint.sh b/spec/fixtures/smime/generate/docker-entrypoint.sh new file mode 100755 index 000000000..8e2b23015 --- /dev/null +++ b/spec/fixtures/smime/generate/docker-entrypoint.sh @@ -0,0 +1,104 @@ +#!/bin/sh + +echo "Zammad S/MIME test certificate generation" + +if [[ ! -e "$CERT_DIR/ca.key" ]] || [[ ! -e "$CERT_DIR/ca.crt" ]] +then + echo "Generating ca.key" + openssl genrsa -aes256 -passout file:pass.secret -out $CERT_DIR/ca.key 4096 + + echo "Generating ca.crt" + openssl req -new -x509 -days 73000 -key $CERT_DIR/ca.key -passin file:pass.secret -out $CERT_DIR/ca.crt -subj "/emailAddress=ca@example.com/C=DE/ST=Berlin/L=Berlin/O=Example Security/OU=IT Department/CN=example.com" + + echo "Generating ca.secret" + cp pass.secret $CERT_DIR/ca.secret +fi + +for EMAIL_ADDRESS in smime1@example.com smime2@example.com smime3@example.com smimedouble@example.com CaseInsenstive@eXample.COM +do + if [[ ! -e "$CERT_DIR/$EMAIL_ADDRESS.crt" ]] + then + echo "Generating $EMAIL_ADDRESS.key" + openssl genrsa -aes256 -passout file:pass.secret -out $CERT_DIR/$EMAIL_ADDRESS.key 4096 + + echo "Generating $EMAIL_ADDRESS.csr (certificate signing request)" + openssl req -new -key $CERT_DIR/$EMAIL_ADDRESS.key -passin file:pass.secret -out $CERT_DIR/$EMAIL_ADDRESS.csr -subj "/emailAddress=$EMAIL_ADDRESS/C=DE/ST=Berlin/L=Berlin/O=Example Security/OU=IT Department/CN=example.com" + + echo "Generating $EMAIL_ADDRESS.crt (certificate)" + + if [ "$EMAIL_ADDRESS" != "smimedouble@example.com" ] + then + extfile="config.cnf" + else + # special config that contains two email addresses in one certificate + extfile="double.cnf" + fi + + openssl x509 -req \ + -days 73000 \ + -in $CERT_DIR/$EMAIL_ADDRESS.csr \ + -CA $CERT_DIR/ca.crt \ + -CAkey $CERT_DIR/ca.key \ + -out $CERT_DIR/$EMAIL_ADDRESS.crt \ + -addtrust emailProtection \ + -addreject clientAuth \ + -addreject serverAuth \ + -trustout \ + -CAcreateserial -CAserial /tmp/ca.seq \ + -extensions smime \ + -extfile "$extfile" \ + -passin file:pass.secret + + echo "Generating $EMAIL_ADDRESS.secret" + cp pass.secret $CERT_DIR/$EMAIL_ADDRESS.secret + fi +done + +echo "Generating expired" +FAKETIME=-10y date + +if [[ ! -e "$CERT_DIR/expiredca.key" ]] || [[ ! -e "$CERT_DIR/expiredca.crt" ]] +then + echo "Generating expiredca.key" + FAKETIME=-10y openssl genrsa -aes256 -passout file:pass.secret -out $CERT_DIR/expiredca.key 4096 + + echo "Generating expiredca.crt" + FAKETIME=-10y openssl req -new -x509 -days 1 -key $CERT_DIR/expiredca.key -passin file:pass.secret -out $CERT_DIR/expiredca.crt -subj "/emailAddress=expiredca@example.com/C=DE/ST=Berlin/L=Berlin/O=Example Security/OU=IT Department/CN=example.com" + + echo "Generating expiredca.secret" + cp pass.secret $CERT_DIR/expiredca.secret +fi + +for EMAIL_ADDRESS in expiredsmime1@example.com expiredsmime2@example.com +do + if [[ ! -e "$CERT_DIR/$EMAIL_ADDRESS.crt" ]] + then + echo "Generating $EMAIL_ADDRESS.key" + FAKETIME=-10y openssl genrsa -aes256 -passout file:pass.secret -out $CERT_DIR/$EMAIL_ADDRESS.key 4096 + + echo "Generating $EMAIL_ADDRESS.csr (certificate signing request)" + FAKETIME=-10y openssl req -new -key $CERT_DIR/$EMAIL_ADDRESS.key -passin file:pass.secret -out $CERT_DIR/$EMAIL_ADDRESS.csr -subj "/emailAddress=$EMAIL_ADDRESS/C=DE/ST=Berlin/L=Berlin/O=Example Security/OU=IT Department/CN=example.com" + + echo "Generating $EMAIL_ADDRESS.crt (certificate)" + FAKETIME=-10y openssl x509 -req \ + -days 1 \ + -in $CERT_DIR/$EMAIL_ADDRESS.csr \ + -CA $CERT_DIR/expiredca.crt \ + -CAkey $CERT_DIR/expiredca.key \ + -out $CERT_DIR/$EMAIL_ADDRESS.crt \ + -addtrust emailProtection \ + -addreject clientAuth \ + -addreject serverAuth \ + -trustout \ + -CAcreateserial -CAserial /tmp/expiredca.seq \ + -extensions smime \ + -extfile config.cnf \ + -passin file:pass.secret + + echo "Generating $EMAIL_ADDRESS.secret" + cp pass.secret $CERT_DIR/$EMAIL_ADDRESS.secret + fi +done + +# run command passed to docker run +exec "$@" diff --git a/spec/fixtures/smime/generate/run.sh b/spec/fixtures/smime/generate/run.sh new file mode 100755 index 000000000..0d5daaafd --- /dev/null +++ b/spec/fixtures/smime/generate/run.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -o errexit +set -o pipefail + +docker build --no-cache -t zammad/smime-test-certificates:latest . + +docker run --rm -v `pwd`/../:/etc/ssl/certs zammad/smime-test-certificates:latest + diff --git a/spec/fixtures/smime/oldca.crt b/spec/fixtures/smime/oldca.crt new file mode 100644 index 000000000..4c6778f69 --- /dev/null +++ b/spec/fixtures/smime/oldca.crt @@ -0,0 +1,35 @@ +-----BEGIN CERTIFICATE----- +MIIGFzCCA/+gAwIBAgIUMmCv8hoMpL1DxnfbdnB7B8toiJYwDQYJKoZIhvcNAQEL +BQAwgZoxIDAeBgkqhkiG9w0BCQEWEW9sZGNhQGV4YW1wbGUuY29tMQswCQYDVQQG +EwJERTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xGTAXBgNVBAoM +EEV4YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxFDASBgNV +BAMMC2V4YW1wbGUuY29tMB4XDTEwMDUyMzA3MDUwOFoXDTEwMDUyNDA3MDUwOFow +gZoxIDAeBgkqhkiG9w0BCQEWEW9sZGNhQGV4YW1wbGUuY29tMQswCQYDVQQGEwJE +RTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xGTAXBgNVBAoMEEV4 +YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxFDASBgNVBAMM +C2V4YW1wbGUuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtnoR +t1oSnGD2p6EF/RwRH2qrj0crDtVMubda6sls6tO14a/4qQ/za6WcSKRaPdVtsZ1j +r5yK8QaiaSZ4/jmfmuSpUvu0F7rQyhZ+bNI+ibF6YTHe2DGkdjH4rouoC7WEtfLz +saSYvojXOCelelbiMf94w6uDvMCRu5A47AHgFRAYWh3PD/kPuxefd2OYpZBjUVF0 +fOs6tkPWpPzt03Xu8RiJP1/UkLk/ZISLvG5VriMOG+KeOMFAz7gDNaGxoKJ7wlUb +A8Ht0FbQ5ZaYaDlmG0ENhnMoM74h6jxbPlRHvuDzAccZfb9m0e+HX9xP5Q8Cp+ib +EMpSe0SBE3N56a7aCPHTiXoC2wYL32rMUhjC2dgLT/UwBDiMiIksDm7W4IQv10l0 +GYGvinDBFEE+fVmQF/g0XBJGmTFi4uN+ZcXaUpLQiBi075E89Rwm9+Xrqr9L/fcm +y2GEnwN0KI2wyFnwMDDMRKfZXSMtU9sCEiqZTIXiAfy9t0wzjbG2P+cXh+p07TNv +POTCyaB98tfocIWIgB6GDFXfgZQJLtZN2Qwm1+MfG63OCFY9QCXoiTaja08+ukB8 +kZ8TNCzDs2E82D9fl5aldtaSwCuMJMc0cdIzi25SIJzc4UGtUrEFI8Olrk/QUQ+W +/h0OYptIwJGvdwEquVAfQrPDoIPEN0iJeHfNqWUCAwEAAaNTMFEwHQYDVR0OBBYE +FDw9N9kuUQx109fegyN/ZBWPLmYcMB8GA1UdIwQYMBaAFDw9N9kuUQx109fegyN/ +ZBWPLmYcMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBAC30oxIo +LaQcXt/AS9FyOZ3dD/5ZzynqTyoSEcP1QzEIXdwIxY3nUaqFCiosBzsd7ZmrSA3S +oaWyFYGutZppVtw39OsbJEKKOv5SX03HEJKoOHkbanPLVNBcdVytRGUI+b61VPEt +SVtbLWD3tjF1Pl0HOtYyzy8gZZWUYRD4LBHtUeDIkY6f1XPTZJuFxpvhb+9l+nGq +OYFhclxVtSNokP+/42vHiNgCuN+9XDhkI2nSC1hKHETEASEmXWCAJ1GI1RqDQ8yr +wghe8LDxRI9R2jTwsd6KEIAufxbEksKw1pvvRS0c06i5cAMf9w/dPerOd1sEdE07 +iESaWTc73kjmgglakFRumuuOqsUVmoW9S/IMVt5gyX0wQVjNmV6Ic3LKF5tmEi3E +7h0aFRtzQE+88QcldDLnU4hQA1IwGVpsKnohPq7YWi2HTSp6cJTsdB5c8Rl7zRCw +cy3xWOyLDlUxmYJehfwlHQy+Nf2MZ/KPO8a6Sv9IPF9H6Stra3LD41Ac7+pHz2B/ +SrGKieCqoY1Moby/nipRbdwF3ExBjOyDUem+VyYZy7ldsCBW0OE8cwb0D87PN/lu +PULhsWi4ZhPV72kQ5IOvQG/qj78tbVvsoxabY+cDvSrb1NA3aaoQC8T+1Q91YpQa +8c1mJgWpM0EAmsUKjGvE3swfKDtSOPndr6vo +-----END CERTIFICATE----- diff --git a/spec/fixtures/smime/oldca.key b/spec/fixtures/smime/oldca.key new file mode 100644 index 000000000..33b7882af --- /dev/null +++ b/spec/fixtures/smime/oldca.key @@ -0,0 +1,54 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-256-CBC,1B90035BC983D129D9910AA0D912DDE2 + +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 +-----END RSA PRIVATE KEY----- diff --git a/spec/fixtures/smime/oldca.secret b/spec/fixtures/smime/oldca.secret new file mode 100644 index 000000000..81c545efe --- /dev/null +++ b/spec/fixtures/smime/oldca.secret @@ -0,0 +1 @@ +1234 diff --git a/spec/fixtures/smime/oldsmime1@example.com.crt b/spec/fixtures/smime/oldsmime1@example.com.crt new file mode 100644 index 000000000..5934ad9bd --- /dev/null +++ b/spec/fixtures/smime/oldsmime1@example.com.crt @@ -0,0 +1,37 @@ +-----BEGIN TRUSTED CERTIFICATE----- +MIIGWzCCBEOgAwIBAgIUIUrCfVRV1i03o1zHmhtNv8XMpBQwDQYJKoZIhvcNAQEL +BQAwgZoxIDAeBgkqhkiG9w0BCQEWEW9sZGNhQGV4YW1wbGUuY29tMQswCQYDVQQG +EwJERTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xGTAXBgNVBAoM +EEV4YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxFDASBgNV +BAMMC2V4YW1wbGUuY29tMB4XDTEwMDUyMzA3MDUwOVoXDTEwMDUyNDA3MDUwOVow +gZ4xJDAiBgkqhkiG9w0BCQEWFW9sZHNtaW1lMUBleGFtcGxlLmNvbTELMAkGA1UE +BhMCREUxDzANBgNVBAgMBkJlcmxpbjEPMA0GA1UEBwwGQmVybGluMRkwFwYDVQQK +DBBFeGFtcGxlIFNlY3VyaXR5MRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRQwEgYD +VQQDDAtleGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +AOlZ96ydfW6IGP3roFTyqDTs37MAdHH2VyEYU0qxM98HhDcpXn3iNVeyyOTbeCwy +7yw67EdMwukXZ7VQnxeaz37e7n6tYG/S2lIKYZJkNr2kZ66QACfhSN54wH8sz7H4 +giwBV1NShdCtdcjUqV1r8srCOIsUGsW4b8W6HqZ6XDHzmkV6N3pJueUrQdWfY1El +7BBgJY6nsTSQzoycEA5PiWxo9b3Br7z34dj7sHvnQmT8qdlkPq9xfT1tiOpWF5Pk +3Xj6lwqSueYVWpCgohcrxuSi8DpZLwAXXjx410e1YuRMDcC6EbIQioePbFDfgcHv +tgluMZkY5JR0q25na16ONuFYx8FOL+7JzIyxvnUZYUQEvuFXaZk5YhxeRjITvNHr +iV4A7iINBkfwLXeo8GDywSK89VxC6g7p435CBBJfg2kE5jHIy2qVdw83zWfWRuhJ +Xg0NEUV7K8ktDL07w5EJOhhaEqUkvSeNSxUbR/eXyRyrs7kl1VLCI+Ug1x/YBRFn +br8NSKohqvv4s4aZ66bF7nkNlLVEZYmvZorL2VGjCGztbw7nEoft8FPDMfMseKiC +i5lhc4B54d93H06HuDG7TenkXfyCB70kmBSZpImpCJVdP8E3scYbys4zSomu1BQy +/CHn/GBVnS2spE27EWEm6vfF3sghJbFjXmW4O761XM0DAgMBAAGjgZIwgY8wCQYD +VR0TBAIwADALBgNVHQ8EBAMCBeAwHQYDVR0OBBYEFGlwE9fYOr/AGCyldJcQvvTz +Td82MB8GA1UdIwQYMBaAFDw9N9kuUQx109fegyN/ZBWPLmYcMCAGA1UdEQQZMBeB +FW9sZHNtaW1lMUBleGFtcGxlLmNvbTATBgNVHSUEDDAKBggrBgEFBQcDBDANBgkq +hkiG9w0BAQsFAAOCAgEAEXAym+igYPgt1pY3T1fgt0TEkzeBE8BY5s/A4Kpse0aU +RtaQ9jowxSF+hg/MtsNaxIZyXwS5bewrdGla/zlpcYd5uAxw7QgH5HpSrbo0yiVa +t9jET9VZO8ErbCHlf46wBduzNh7XUzZSm2sPBnlGL4CdpWbCQPFdqENFeEKiYpvC +g1Qgw/WTBaOmvNOIWVoSWqQDdLGdBCZys5bkR2YtbZzOgVF/eumyH95yk3BchM0A +scIyxWzHvf8Vss3Idp2djMmSI6tm4wQMvRZ3ScdLBtlStz+J0D3UNhV2lTjdewwn +oJ0RRSj58AVZlD4BFQ0GCg+gwsEhH71CWOuyFWtbzxKhdVojNKHkc6FioKnNffym +nge5o8wYuEETBsu2fHgMTSYxn1jOIVQZuHHXtN/BjXAZUZdKiz7jxZuNiZw43dMg +g5diNC0+VzsMEwINFd5/vQ9R1CX91RFXnZZ5MpM6IGYEHJ7QPRmLmxFtGcFi/f/U +lFCoK0nsOCIcWzFX4PJjAKTvWMekrrp09ImL0IRx+2L7RTA9R6x4DG17ZawTYA1L +uUvvVrbSjfmEIttlktEfL7g9xoDBWxsH7GpfBk4SKNg5jgGpeH5GxzQNPBeqwfeB +XH/n30Ym0jW+y0hDKvnPdjcvz0cJYHe4W3/srtqUu1aJmPa8he7jdejJSpkeUSAw +IjAKBggrBgEFBQcDBKAUBggrBgEFBQcDAgYIKwYBBQUHAwE= +-----END TRUSTED CERTIFICATE----- diff --git a/spec/fixtures/smime/oldsmime1@example.com.csr b/spec/fixtures/smime/oldsmime1@example.com.csr new file mode 100644 index 000000000..eed51f03d --- /dev/null +++ b/spec/fixtures/smime/oldsmime1@example.com.csr @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIE5DCCAswCAQAwgZ4xJDAiBgkqhkiG9w0BCQEWFW9sZHNtaW1lMUBleGFtcGxl +LmNvbTELMAkGA1UEBhMCREUxDzANBgNVBAgMBkJlcmxpbjEPMA0GA1UEBwwGQmVy +bGluMRkwFwYDVQQKDBBFeGFtcGxlIFNlY3VyaXR5MRYwFAYDVQQLDA1JVCBEZXBh +cnRtZW50MRQwEgYDVQQDDAtleGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAOlZ96ydfW6IGP3roFTyqDTs37MAdHH2VyEYU0qxM98HhDcp +Xn3iNVeyyOTbeCwy7yw67EdMwukXZ7VQnxeaz37e7n6tYG/S2lIKYZJkNr2kZ66Q +ACfhSN54wH8sz7H4giwBV1NShdCtdcjUqV1r8srCOIsUGsW4b8W6HqZ6XDHzmkV6 +N3pJueUrQdWfY1El7BBgJY6nsTSQzoycEA5PiWxo9b3Br7z34dj7sHvnQmT8qdlk +Pq9xfT1tiOpWF5Pk3Xj6lwqSueYVWpCgohcrxuSi8DpZLwAXXjx410e1YuRMDcC6 +EbIQioePbFDfgcHvtgluMZkY5JR0q25na16ONuFYx8FOL+7JzIyxvnUZYUQEvuFX +aZk5YhxeRjITvNHriV4A7iINBkfwLXeo8GDywSK89VxC6g7p435CBBJfg2kE5jHI +y2qVdw83zWfWRuhJXg0NEUV7K8ktDL07w5EJOhhaEqUkvSeNSxUbR/eXyRyrs7kl +1VLCI+Ug1x/YBRFnbr8NSKohqvv4s4aZ66bF7nkNlLVEZYmvZorL2VGjCGztbw7n +Eoft8FPDMfMseKiCi5lhc4B54d93H06HuDG7TenkXfyCB70kmBSZpImpCJVdP8E3 +scYbys4zSomu1BQy/CHn/GBVnS2spE27EWEm6vfF3sghJbFjXmW4O761XM0DAgMB +AAGgADANBgkqhkiG9w0BAQsFAAOCAgEAGoMv3vAwy8cBLr9rE0r02QKLyYHXtbWX +1JbK/UF/yIfXesde3c/mQdqd3zhxb3YDBK6d483C273a1jdC+8k5NfVvDpcbyLaW +/9sDd9VNXk9CrA4VUVvTBUfYXLsShTRRcyWY9TnoTt0eGnT3PTRzbnW6jEgxStd9 +WFhh+FEIea5J/FmvKoEUOkN5j6VQveBJoDwFRZTFLsV/vK4DpcDJJ9KRjm67EssP +n473kwPdzKjjODEitpJqjNG4casn9qgKCKu+a10W9smChsMxGE7Ic1yjb3zDZNfE +sBP8rTcLVe8Y4bEljZOe0acWIFWEltk1wrIJ8IBMEREqPUE3bi/MgD0EL9y44REv ++60YMmCO3BKWEKUM2UYJtNMosNKvULEea7Q3hVVgMV2InisIs3MnDFlwuSTtYF5u +ixR08/8ksvpvrL2ybWTOsJDtiZoaBVoVYr2Z+jXuUyXAXl1rfcmMGNzZ3PYqhTPV +KWBpPiQogyCllL3J2Yf7BD2FRSyjnbsm6Do5rdJLLCFrcltrJ9nOCvLWmawIusl7 +jymxpxAf/gOsHO3OfOJARhrL2jaSalaY8BcjLuUJCQ7u1zCDLgHnW+/CPMjDphcF +L+2plCWZr5gtkypczMJFw5ZOlK+SwI0TydCoWkQQxLjaWnqoxigsx3jF9W2uCQDX +iJZ6c2DEnLU= +-----END CERTIFICATE REQUEST----- diff --git a/spec/fixtures/smime/oldsmime1@example.com.key b/spec/fixtures/smime/oldsmime1@example.com.key new file mode 100644 index 000000000..ba3952b75 --- /dev/null +++ b/spec/fixtures/smime/oldsmime1@example.com.key @@ -0,0 +1,54 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-256-CBC,075058C49FC97E93DC2A6598E450A08C + +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 +-----END RSA PRIVATE KEY----- diff --git a/spec/fixtures/smime/oldsmime1@example.com.secret b/spec/fixtures/smime/oldsmime1@example.com.secret new file mode 100644 index 000000000..81c545efe --- /dev/null +++ b/spec/fixtures/smime/oldsmime1@example.com.secret @@ -0,0 +1 @@ +1234 diff --git a/spec/fixtures/smime/oldsmime2@example.com.crt b/spec/fixtures/smime/oldsmime2@example.com.crt new file mode 100644 index 000000000..8ef99aabd --- /dev/null +++ b/spec/fixtures/smime/oldsmime2@example.com.crt @@ -0,0 +1,37 @@ +-----BEGIN TRUSTED CERTIFICATE----- +MIIGWzCCBEOgAwIBAgIUIUrCfVRV1i03o1zHmhtNv8XMpBUwDQYJKoZIhvcNAQEL +BQAwgZoxIDAeBgkqhkiG9w0BCQEWEW9sZGNhQGV4YW1wbGUuY29tMQswCQYDVQQG +EwJERTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xGTAXBgNVBAoM +EEV4YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxFDASBgNV +BAMMC2V4YW1wbGUuY29tMB4XDTEwMDUyMzA3MDUxMFoXDTEwMDUyNDA3MDUxMFow +gZ4xJDAiBgkqhkiG9w0BCQEWFW9sZHNtaW1lMkBleGFtcGxlLmNvbTELMAkGA1UE +BhMCREUxDzANBgNVBAgMBkJlcmxpbjEPMA0GA1UEBwwGQmVybGluMRkwFwYDVQQK +DBBFeGFtcGxlIFNlY3VyaXR5MRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRQwEgYD +VQQDDAtleGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +AMWrCkplNiVerePhBjafapLrl2WwpzP8O1Epf9mAUrh0iMKX2G2Y1ve+JGLHALwU +aLnOOeOutPJKDGykWQ+/zV/8U80JmOLt8LyrTLzPun1I7FqGAkx/hO6skCbDo5er +szqhIx2bhLdS43EeANRx7RdzNWEYw9Eqgmcc3MFxOGIPe54EbnDcm0qzdvIxtNbZ +ll9rBuLlYAzGSs+5+WdbjnxZGhhaAICgmslJWg1Bh8LbuQX1YYEsThq/KBnidBOl +HSPGMDAj4g075T5A5KwhF6JG2sInSVXWjXktAzxUeZGY4f3dsVc3lAchw6W25IPP +ysF8IF3OfO+N+XKZLYZ9x1P+bB1dsdfSUZFUOWRUcpngWPKofkSYjUL0JQQgKCx3 +HmwKQBYhgIeJ35eIPPoWwGdvQTqmveyiYd4TqYYP6f+ay7gIPQEtfsF18y6kdfN5 +F3gkv2GKBOvfNP86fnrEftMcQLBxAro+5ceF4ENIBm9xWSgjEISMoD9TlMtn8bIr +Kn8p3Zot3KUMG8AT8g1w8sl+43m4hfbgIZFecMtTHGTfTBKO2KBBnb9oNXh8GAyp +QYRN8oUuC72DQShxfJ5nFYYPghDX7Mlmiwt0X32gi2YwpPf7OI+DQtuUhAGOoGr7 +oThUY631kASIXSVtDz+pbP2CYwbSlRqEOE+tkps/3nhfAgMBAAGjgZIwgY8wCQYD +VR0TBAIwADALBgNVHQ8EBAMCBeAwHQYDVR0OBBYEFElniL85pHV/jj46LaOKnG4n +s1gwMB8GA1UdIwQYMBaAFDw9N9kuUQx109fegyN/ZBWPLmYcMCAGA1UdEQQZMBeB +FW9sZHNtaW1lMkBleGFtcGxlLmNvbTATBgNVHSUEDDAKBggrBgEFBQcDBDANBgkq +hkiG9w0BAQsFAAOCAgEAbsc1EVFSRrFivUskd1RyHPeYGaPQilru1UKOINKlblaT +5niNK053XLgKgNYNyhmrJiOmIKPnV0iuTzLOjYsQbY0hArtoHYoMjWYwrPEL6cPq +KAcbvnE3Me8KXEDT1K0ysgwbW4jUyN2qFWbM6cEVu+mv7YOAsTt3J56gbRY71cQh +5wYP6qM3AfQ8aY3e18dEW4h7vLZL/VIvs7jW5NjBzJapfzuj4gvXNKobmAOeWXF3 +xAVT93dlgEo5EFexizgyUUG2Oeu/TlN2ssTHfNhgSLfmN20Q1PZf1CqCSS+FbFTp +IgKI07cHQZTM5Uk5M+MZKhmJDIWVKIDMOED2XGeITuKXDJjvU6nFnzEdEcwhiT/w +gxn+qcOo5v7HmmOxVXhtBCsCtZPsx/2DEjRUw5jEDvSsV2+HbCws8+Ry5Q4VT7l6 +NX8vhsmyXVLBDBGAhBY4HcV+L5FzluacixGdE+eP3ndN3pOOOQ1cMVTFCotYn/IJ +bZH8mCWfLkuPqkemnIWve4Xv1zVPteMroz56g+M2PnoxPqZbBrYyUEWo3RsYmLFi +Vne8VKWl2OwA/dVoxN4Cpr0JAqXPfYfeWA/f/ZJFTEfTDUN9+MYZyI11obcs2qEp +zjcHzyJKbpQUaeaTKqb6JGSXanHCaW8ud7rTTpH4X65xSoFqb4vd077WpkatBu4w +IjAKBggrBgEFBQcDBKAUBggrBgEFBQcDAgYIKwYBBQUHAwE= +-----END TRUSTED CERTIFICATE----- diff --git a/spec/fixtures/smime/oldsmime2@example.com.csr b/spec/fixtures/smime/oldsmime2@example.com.csr new file mode 100644 index 000000000..191ed2c03 --- /dev/null +++ b/spec/fixtures/smime/oldsmime2@example.com.csr @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIE5DCCAswCAQAwgZ4xJDAiBgkqhkiG9w0BCQEWFW9sZHNtaW1lMkBleGFtcGxl +LmNvbTELMAkGA1UEBhMCREUxDzANBgNVBAgMBkJlcmxpbjEPMA0GA1UEBwwGQmVy +bGluMRkwFwYDVQQKDBBFeGFtcGxlIFNlY3VyaXR5MRYwFAYDVQQLDA1JVCBEZXBh +cnRtZW50MRQwEgYDVQQDDAtleGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAMWrCkplNiVerePhBjafapLrl2WwpzP8O1Epf9mAUrh0iMKX +2G2Y1ve+JGLHALwUaLnOOeOutPJKDGykWQ+/zV/8U80JmOLt8LyrTLzPun1I7FqG +Akx/hO6skCbDo5erszqhIx2bhLdS43EeANRx7RdzNWEYw9Eqgmcc3MFxOGIPe54E +bnDcm0qzdvIxtNbZll9rBuLlYAzGSs+5+WdbjnxZGhhaAICgmslJWg1Bh8LbuQX1 +YYEsThq/KBnidBOlHSPGMDAj4g075T5A5KwhF6JG2sInSVXWjXktAzxUeZGY4f3d +sVc3lAchw6W25IPPysF8IF3OfO+N+XKZLYZ9x1P+bB1dsdfSUZFUOWRUcpngWPKo +fkSYjUL0JQQgKCx3HmwKQBYhgIeJ35eIPPoWwGdvQTqmveyiYd4TqYYP6f+ay7gI +PQEtfsF18y6kdfN5F3gkv2GKBOvfNP86fnrEftMcQLBxAro+5ceF4ENIBm9xWSgj +EISMoD9TlMtn8bIrKn8p3Zot3KUMG8AT8g1w8sl+43m4hfbgIZFecMtTHGTfTBKO +2KBBnb9oNXh8GAypQYRN8oUuC72DQShxfJ5nFYYPghDX7Mlmiwt0X32gi2YwpPf7 +OI+DQtuUhAGOoGr7oThUY631kASIXSVtDz+pbP2CYwbSlRqEOE+tkps/3nhfAgMB +AAGgADANBgkqhkiG9w0BAQsFAAOCAgEAOBxGS8NkStWWbcDfiuapX1XB49TCpfNZ +23ElMQ7T0vmfg/rQox1UiHPxLFlaJtdz9BoUT2PAv8aN6GCfzafGvxRwf34+EMxH +4YmekUba7Dp9xIdpApEsxA7OtXwMTgL2I47lUR4d1UI4UL1JWhAASAP2ZRiH69AH +Bkch4VFGWQE9f3F3k3oODe+yyQYeGhOvfoUrFLu05JQexYUjGjP3EVN2EVuOJLgW +w15m2wEjJk1CBptAl4AWWCKAvgwvwzHvzkaooUDZyZ2Q/rKeaM4zBu3/8/SXc7lQ +xFLfzvBuZIQX72o6d3NMAVDoQHHpi1PFgLMbbTkaLvzRzF4oLEMqQSBSa4id1uFf +7YYRop5Fu2UdyUX+dyDPZfVCJwIskdOE+AXiIlxDB/VpA1AGVDRwYPJIMjSsCr9m +xybrCZzYzVyWo5um5pVfRaJckcM6XxM60bigLPqietv9FUGfGfTlDHyRbpqJKYZ9 +azgR6QUg5PZQOF6V+iblZEsKxHpqqQT8UPBjyOH5qwq+mCbW4/kneSORPZOposnP +MHZH9lRZ/1LXM5YFrDaFMicKI/h9rRTtFMlH/dAzrvVmz+o5HXew30UipYbZOXZv +1qqvrrW/a8SwMsalEQUHDAnZe8BVI0sLUfOonaXRfzh1CwO7DIWw0XoHaYBkwwxw +bUDcHE3gKFM= +-----END CERTIFICATE REQUEST----- diff --git a/spec/fixtures/smime/oldsmime2@example.com.key b/spec/fixtures/smime/oldsmime2@example.com.key new file mode 100644 index 000000000..6486109f9 --- /dev/null +++ b/spec/fixtures/smime/oldsmime2@example.com.key @@ -0,0 +1,54 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-256-CBC,422646293BBDFBBD651E2D08160A9FE1 + +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 +-----END RSA PRIVATE KEY----- diff --git a/spec/fixtures/smime/oldsmime2@example.com.secret b/spec/fixtures/smime/oldsmime2@example.com.secret new file mode 100644 index 000000000..81c545efe --- /dev/null +++ b/spec/fixtures/smime/oldsmime2@example.com.secret @@ -0,0 +1 @@ +1234 diff --git a/spec/fixtures/smime/smime1@example.com.crt b/spec/fixtures/smime/smime1@example.com.crt new file mode 100644 index 000000000..4781ff97e --- /dev/null +++ b/spec/fixtures/smime/smime1@example.com.crt @@ -0,0 +1,37 @@ +-----BEGIN TRUSTED CERTIFICATE----- +MIIGVDCCBDygAwIBAgIUAh6m+t/Iz8s0i11uzqr7kDKyFewwDQYJKoZIhvcNAQEL +BQAwgZcxHTAbBgkqhkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMQswCQYDVQQGEwJE +RTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xGTAXBgNVBAoMEEV4 +YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxFDASBgNVBAMM +C2V4YW1wbGUuY29tMCAXDTIwMDUyMDEzNDcxMVoYDzIyMjAwNDAyMTM0NzExWjCB +mzEhMB8GCSqGSIb3DQEJARYSc21pbWUxQGV4YW1wbGUuY29tMQswCQYDVQQGEwJE +RTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xGTAXBgNVBAoMEEV4 +YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxFDASBgNVBAMM +C2V4YW1wbGUuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtUtb +zV02dBuQuR5Ef4zJAOTPMDw1DNl/GkY1MstUpoV2jjJeB1cDj8oq1RHDwBBVNsaL +4BT9pnCmy8YG0JITR85IBmWB454PSVX9lQHpBXwAihj3B/DjGV0phdo+FuYo3c7B +EygQk+RLKvD0jW/EhZ3dYw/lIU2iV+v3kBMi2R50RL5aEyRgp3/QlsViUWfJgnZn +MEHRtFLP6s/NbM6FkPZoMR36jJVL5xVn5I0+RzzsLTbaWWV6hxC2mDh16aBjcwkW +vJXpuFx/HpXMvLOjTgWssToifbqz2SE7Q4ssHnof7Mx6XD+MjCj+sbKoMbfWLSM0 +LUNBqeXhSxGDkT78C7rHzrfnRcqsp2jFpdeMBRRgEYe/2lIfrY0IKQWmfSOr6LOd +9Cs5VxG06nAZ8fF2FM6dw7DqbGXJ2kbD06yc9T9wmdU/TLNuVI4mgTLEojCHUTXG +pnfZtj8JH22lcsRglT3TmQX78UAdXWiyrPt/NoukLbeTTpKqQ2FsfS77N/B4V34/ +uu76y+opnRJiYUD+6R4q/wx5dISRyZjmfbNPLuZjXXEyckVIs2n3YfGYP1F+uDIr +UU6wRLlzBaO6rytzY2IAybp+sMIprs+j63LFMBBnnjBz3WBoE4DVnE6tKEGcDcyT +G27+9/lOsBVKIwpbuTi8PmEgaX6P123/069JMEsCAwEAAaOBjzCBjDAJBgNVHRME +AjAAMAsGA1UdDwQEAwIF4DAdBgNVHQ4EFgQUwdO+DOI19I8VZKUWNb+0CiehEYQw +HwYDVR0jBBgwFoAUDC1CrWIMc++tNKpFXusixDF92GwwHQYDVR0RBBYwFIESc21p +bWUxQGV4YW1wbGUuY29tMBMGA1UdJQQMMAoGCCsGAQUFBwMEMA0GCSqGSIb3DQEB +CwUAA4ICAQCFMaaAoAKMkNd8PhdR0/x+OHo/GXKPzy1mDs82SUx50z3CP4ZeaNpY +y13As8kkuy9apHJuOi3gCzSzJ7tWoSHObl++1knXt+0BVTDo4fAGD3+YZxohcGvZ +ua0uH0Wo38xW6fyNfzuNjCvbDaxW7eGNyUG8Zk6YUNHW9O8M3JzdwvPdBhfrnadN +tzxrClIziA2Z3JZODiSofnhkF0jzFotqSA+pA5lX9SnfOEW2CN20cV4YIKaErau5 +r1qvMe6W+PecyFGA2Ad9C9JvhKx9f14HqKMwM2MviqkAsjac7OzFrZc+Gs3lADiU +p7X9owpj+oVCGxQeBr2wwhfrzzY9emIF8oSVrFXlk9sQubGpH5R1OYBm2B16Qd0K +O46pMRq2flUnyBNqRwrCq6Mk4qsxOs6sn6dUVBiMyL0wqKlDIeYYCg9VTAblzDcj +2ipwzFmDz+wHZHHnLyuGqEId8XmpVtWiUOFZ7BfGpEPFrna8HcV6KOd+yydYmQr0 +6J8f/GnxF2qA6aZFxTFmyPt6rQ+I+deitY4RUGXm+LkXNRzR4wq5Bu+onijk8QWi +ZPhQ7ogwHgkoifMi5kzgUMz/2jF0eS9rBRgX2P9CttaKqRfD4H3hqYYxnjcGWxnZ +iRXhcgQlIAswjM8wJpeRpldOTnoB/xSJ67G6WdL4rpdP1Bh/7uZe1TAiMAoGCCsG +AQUFBwMEoBQGCCsGAQUFBwMCBggrBgEFBQcDAQ== +-----END TRUSTED CERTIFICATE----- diff --git a/spec/fixtures/smime/smime1@example.com.csr b/spec/fixtures/smime/smime1@example.com.csr new file mode 100644 index 000000000..13003027a --- /dev/null +++ b/spec/fixtures/smime/smime1@example.com.csr @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIE4TCCAskCAQAwgZsxITAfBgkqhkiG9w0BCQEWEnNtaW1lMUBleGFtcGxlLmNv +bTELMAkGA1UEBhMCREUxDzANBgNVBAgMBkJlcmxpbjEPMA0GA1UEBwwGQmVybGlu +MRkwFwYDVQQKDBBFeGFtcGxlIFNlY3VyaXR5MRYwFAYDVQQLDA1JVCBEZXBhcnRt +ZW50MRQwEgYDVQQDDAtleGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBALVLW81dNnQbkLkeRH+MyQDkzzA8NQzZfxpGNTLLVKaFdo4yXgdX +A4/KKtURw8AQVTbGi+AU/aZwpsvGBtCSE0fOSAZlgeOeD0lV/ZUB6QV8AIoY9wfw +4xldKYXaPhbmKN3OwRMoEJPkSyrw9I1vxIWd3WMP5SFNolfr95ATItkedES+WhMk +YKd/0JbFYlFnyYJ2ZzBB0bRSz+rPzWzOhZD2aDEd+oyVS+cVZ+SNPkc87C022lll +eocQtpg4demgY3MJFryV6bhcfx6VzLyzo04FrLE6In26s9khO0OLLB56H+zMelw/ +jIwo/rGyqDG31i0jNC1DQanl4UsRg5E+/Au6x86350XKrKdoxaXXjAUUYBGHv9pS +H62NCCkFpn0jq+iznfQrOVcRtOpwGfHxdhTOncOw6mxlydpGw9OsnPU/cJnVP0yz +blSOJoEyxKIwh1E1xqZ32bY/CR9tpXLEYJU905kF+/FAHV1osqz7fzaLpC23k06S +qkNhbH0u+zfweFd+P7ru+svqKZ0SYmFA/ukeKv8MeXSEkcmY5n2zTy7mY11xMnJF +SLNp92HxmD9RfrgyK1FOsES5cwWjuq8rc2NiAMm6frDCKa7Po+tyxTAQZ54wc91g +aBOA1ZxOrShBnA3Mkxtu/vf5TrAVSiMKW7k4vD5hIGl+j9dt/9OvSTBLAgMBAAGg +ADANBgkqhkiG9w0BAQsFAAOCAgEAo/nttSsH76fEfcpRq1WkYqvvi8ZEOPa4wehN +CqRQP2oiVuZyrDVFiDboyqAoCd0+AfIe5UQFaQ/PW1CFeVBRFStPJWxKanX/wlHA +vOyLxsH4jgDoIzH/HOMWlpUb7jaarGhkLxYJwgDoM0YznDGGZPb8GiewvL3psyPf +SKQAUWc9tVVdg0D9WhqSoseP860azx6dvKgisP2HDbZHYJkdIfCjYl6N913vhLKa +tg+FcT8DFqepH1LBUpi6Tj2SI2OYCgioY9mOG7jZn8EEYl1RH2GKj6uGaBULINBr +fWtWFsLkadnMFuR+6oIOHnisHdGNWZqJvy1YsEb/mu4yR27cgGmud8WSpeBRWPVa ++OUR1DnJgTLTcJLYnmIRKRloND58mqiswWb/IHxQgGu2v7rAYy4IxGapf+bsybVO +fgjk30yNKM2yH3ctos0yijYmt5Yj7k4sEFQl635Nwsz20qreQJ13pCQBmMg3xFNU +xpioO8PJFLrXVTQzv8BU5a8F26izDzM2RDVG7yhgrGoQYm66L6MEf5db/SNtx19I +Nmtepqdlj8vQ9OIK+MDzTT0UVEiUQJWm38lKjXFan+o6h3NkYjB+XHzLpU8q6azn +VTDmduZqCjuDU8woKWRAw95PrB3lW3TnMqnux5Ls1811tUyN1UM+JFG0EqVkEPG3 +nnV42u0= +-----END CERTIFICATE REQUEST----- diff --git a/spec/fixtures/smime/smime1@example.com.key b/spec/fixtures/smime/smime1@example.com.key new file mode 100644 index 000000000..6f569ab8a --- /dev/null +++ b/spec/fixtures/smime/smime1@example.com.key @@ -0,0 +1,54 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-256-CBC,C02E7FD1CD5C829F69D753D19B84384A + +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 +-----END RSA PRIVATE KEY----- diff --git a/spec/fixtures/smime/smime1@example.com.secret b/spec/fixtures/smime/smime1@example.com.secret new file mode 100644 index 000000000..81c545efe --- /dev/null +++ b/spec/fixtures/smime/smime1@example.com.secret @@ -0,0 +1 @@ +1234 diff --git a/spec/fixtures/smime/smime2@example.com.crt b/spec/fixtures/smime/smime2@example.com.crt new file mode 100644 index 000000000..0fe5a6b63 --- /dev/null +++ b/spec/fixtures/smime/smime2@example.com.crt @@ -0,0 +1,37 @@ +-----BEGIN TRUSTED CERTIFICATE----- +MIIGVDCCBDygAwIBAgIUAh6m+t/Iz8s0i11uzqr7kDKyFe0wDQYJKoZIhvcNAQEL +BQAwgZcxHTAbBgkqhkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMQswCQYDVQQGEwJE +RTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xGTAXBgNVBAoMEEV4 +YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxFDASBgNVBAMM +C2V4YW1wbGUuY29tMCAXDTIwMDUyMDEzNDcxMloYDzIyMjAwNDAyMTM0NzEyWjCB +mzEhMB8GCSqGSIb3DQEJARYSc21pbWUyQGV4YW1wbGUuY29tMQswCQYDVQQGEwJE +RTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xGTAXBgNVBAoMEEV4 +YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxFDASBgNVBAMM +C2V4YW1wbGUuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAshnv +h0UmOnz+vUBfB6baNJRjihj9amSqMRQpQLDOUVOMwU5kaHIKiFZ2nU00eLzB7eRF +/UEO7rpFILoq49TyZ+LogpH2Z11ZY4hw6ZVcX0qJ3Aq6X4Huqt0plq4BPdBO8Mdn +dgcgGU94+wKRFWFrL7GiiZMFbc0zZfaIMJY35mhWJfc0Sj8Y6tXpfSQHP9WANPII +8l1YYybv/8nCJCZtxnERTlHoFXay5IX9nr0WSGL+uv038dqClModT3ORp23jy07w +nXmWRURXqjBOb0ZbH0YXrj1axi0vc42E1cBUFLzhxDuD97h7T8a/9QbY8wJ5fKcy +pMU8DZZeMteMbQZBqVY53c42iqj8dkVkvoqVmtTvGbUy6gxsQHkhoZHLFgrWJdLr +YPIBev1DrsZwECgPfkaVn8tFnJpehxptkqONXaz1cp2sbI2oADAlnwK4yeWEVbTs +tKIULzSJidYhBoK7bsede3SsMnGWjwzPEfIQxQj0EpFQEMA+0Egy6l4OQ/96AAMp +tr5oap4yt+N1cpRHoIj8bLg7zzoAIgNceXM4+zPDeU7oa+6DwVM0zB4PnvXvh9gn +W5LKrZZekDgCSEpmehBYReJLbsUoGDCWJ6U5skRBDThsV/On4p05psKfKtNR4fzS +hco1kL06GlXrafWp7wPoh/aLHS9xxzf3YZ3KdvMCAwEAAaOBjzCBjDAJBgNVHRME +AjAAMAsGA1UdDwQEAwIF4DAdBgNVHQ4EFgQUcy/mPtRlG+eTit/lAYQkcymZNCUw +HwYDVR0jBBgwFoAUDC1CrWIMc++tNKpFXusixDF92GwwHQYDVR0RBBYwFIESc21p +bWUyQGV4YW1wbGUuY29tMBMGA1UdJQQMMAoGCCsGAQUFBwMEMA0GCSqGSIb3DQEB +CwUAA4ICAQAMdXmNlVP8XRs6kYF2iHZnvf0Po5RWI8/qM+3s5Ljd4TyvIM8T/s/v +b7ayKJlOzZ4c5o+DE65kTDRT6LRKhWHgjQ8jzAXEb71KK1fdK+ZQ+p+vgyIOmWq6 +J0gqcsX9V77cx/Gf2NSNeVPAONggqToapCXyI16uHnaiPMx/Qf4ivXmvaTNw3bVs +U5hqYrLcTxQYR03DgahcGj/ukWdtkpidLz0ex3xpgeiA0Ca0ucExrsDCWv/I/JS4 +KHRTxkI9TMSR28KpC3uI7m+OLMohTTNGD8dcD8kIiMBL6Q8DvXYs2aYN4ZBEAxnQ +qcgWYfBkmnONm2Ze3hXBwaJDFd87mXqMpAY+Sck6aRENxG+vj255VRI7rTgw19hM +G6EEbu9pwOfpmVmrkTmNByy0gXPXLcq0zqPkSsmdPEUdj7tbVAhpnhxW7hPfr7HJ +O7uc29UTn7Oby9pZkbAvLtJuPidQY69OpNsY878h8UBbCqo4unuZqLO+7PXrfGn2 +T4suSBLUznInTEgsHJNxoKXxTcpXaMwts7DsCMl9KsdF9ea0sVZhGUZ8Yqfxu/eX +4zV3UiapXRl6mS9FCSe7CLArxok853z8RlbDjS5M0wmKvRnoYmQi0Wz6E/hN/uMW +Qs6R7xOlxvkQrLkbPPIKnuP72xOWSGPY8AU2Hu9AfYNkhZ30Lyo6mTAiMAoGCCsG +AQUFBwMEoBQGCCsGAQUFBwMCBggrBgEFBQcDAQ== +-----END TRUSTED CERTIFICATE----- diff --git a/spec/fixtures/smime/smime2@example.com.csr b/spec/fixtures/smime/smime2@example.com.csr new file mode 100644 index 000000000..863dacb4f --- /dev/null +++ b/spec/fixtures/smime/smime2@example.com.csr @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIE4TCCAskCAQAwgZsxITAfBgkqhkiG9w0BCQEWEnNtaW1lMkBleGFtcGxlLmNv +bTELMAkGA1UEBhMCREUxDzANBgNVBAgMBkJlcmxpbjEPMA0GA1UEBwwGQmVybGlu +MRkwFwYDVQQKDBBFeGFtcGxlIFNlY3VyaXR5MRYwFAYDVQQLDA1JVCBEZXBhcnRt +ZW50MRQwEgYDVQQDDAtleGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBALIZ74dFJjp8/r1AXwem2jSUY4oY/WpkqjEUKUCwzlFTjMFOZGhy +CohWdp1NNHi8we3kRf1BDu66RSC6KuPU8mfi6IKR9mddWWOIcOmVXF9KidwKul+B +7qrdKZauAT3QTvDHZ3YHIBlPePsCkRVhay+xoomTBW3NM2X2iDCWN+ZoViX3NEo/ +GOrV6X0kBz/VgDTyCPJdWGMm7//JwiQmbcZxEU5R6BV2suSF/Z69Fkhi/rr9N/Ha +gpTKHU9zkadt48tO8J15lkVEV6owTm9GWx9GF649WsYtL3ONhNXAVBS84cQ7g/e4 +e0/Gv/UG2PMCeXynMqTFPA2WXjLXjG0GQalWOd3ONoqo/HZFZL6KlZrU7xm1MuoM +bEB5IaGRyxYK1iXS62DyAXr9Q67GcBAoD35GlZ/LRZyaXocabZKjjV2s9XKdrGyN +qAAwJZ8CuMnlhFW07LSiFC80iYnWIQaCu27HnXt0rDJxlo8MzxHyEMUI9BKRUBDA +PtBIMupeDkP/egADKba+aGqeMrfjdXKUR6CI/Gy4O886ACIDXHlzOPszw3lO6Gvu +g8FTNMweD57174fYJ1uSyq2WXpA4AkhKZnoQWEXiS27FKBgwlielObJEQQ04bFfz +p+KdOabCnyrTUeH80oXKNZC9OhpV62n1qe8D6If2ix0vccc392GdynbzAgMBAAGg +ADANBgkqhkiG9w0BAQsFAAOCAgEAo8vNeH4f/+3vSI8cs/ZKSkq8kkrmYdqFKuJh +cQK7XoE3bgRB0ahKFoR9vRTE+l9EZZEhQPzevlV44RXmZ4z4KVmm7uLHndaEzW3h +Pe/gQxXO+N9DJKYYtzFij9D/fevWz55aUtgrQg5CrF91B7kZVILWxNNX4EObwvqF +CmaIbOU1poGw2lI/weiGe4bcAbww9c4rNsXaxgqxSpWrtHGvAnF2JDayWVREJgi3 +xXtCrh7icg8uAzvTLHzUUho/yABv+HhgAZvBwelmD89QW8AUBwtYxyEEP/LQOgcq +VOGJb89rIHJzOHUZTF+dtEfEcjarxghlw5TcoMwrCA9sc49QrS8ksJYkpMKyG5EC +Sjyjk8S7tdm7TvHJ13EP14770ZTa1Rrpo1ENfOkmqbxbjzuQ2RRxRRunjGVwbIsX ++3FBNMRb6bo/kv2D5NYBahQA/KVHTSfZpX34P3b1XawmP95/jqW2fMyXZ5LGEJ57 +hw97dSNA5RBb4Dgd6ompmstaT3U7iLqFgnJq5Br60YLJASm0f0ou8ock0hoJva3y +8XA0687jDGmtp7wWt3GQCc06SZMtBFMrJIezih32C1V/8O8b4oRoChV+2DovZz48 +QpMOzXHi0hq1D70vw7kVOkeekMTOj3Pwl4e2nXgjwI3gj29bel2vNN7QkGDQw4RD +Yhv55HQ= +-----END CERTIFICATE REQUEST----- diff --git a/spec/fixtures/smime/smime2@example.com.key b/spec/fixtures/smime/smime2@example.com.key new file mode 100644 index 000000000..e20b5e144 --- /dev/null +++ b/spec/fixtures/smime/smime2@example.com.key @@ -0,0 +1,54 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-256-CBC,E635B30D63879480FEACF294E0B57BB7 + +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 +-----END RSA PRIVATE KEY----- diff --git a/spec/fixtures/smime/smime2@example.com.secret b/spec/fixtures/smime/smime2@example.com.secret new file mode 100644 index 000000000..81c545efe --- /dev/null +++ b/spec/fixtures/smime/smime2@example.com.secret @@ -0,0 +1 @@ +1234 diff --git a/spec/fixtures/smime/smime3@example.com.crt b/spec/fixtures/smime/smime3@example.com.crt new file mode 100644 index 000000000..76fa905a0 --- /dev/null +++ b/spec/fixtures/smime/smime3@example.com.crt @@ -0,0 +1,37 @@ +-----BEGIN TRUSTED CERTIFICATE----- +MIIGVDCCBDygAwIBAgIUAh6m+t/Iz8s0i11uzqr7kDKyFe4wDQYJKoZIhvcNAQEL +BQAwgZcxHTAbBgkqhkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMQswCQYDVQQGEwJE +RTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xGTAXBgNVBAoMEEV4 +YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxFDASBgNVBAMM +C2V4YW1wbGUuY29tMCAXDTIwMDUyMDEzNDcxNFoYDzIyMjAwNDAyMTM0NzE0WjCB +mzEhMB8GCSqGSIb3DQEJARYSc21pbWUzQGV4YW1wbGUuY29tMQswCQYDVQQGEwJE +RTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xGTAXBgNVBAoMEEV4 +YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxFDASBgNVBAMM +C2V4YW1wbGUuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA25Cw +6f4svFHkmWFBQzbg+3hzeCb9zgLOr4aIlq9UrNDZzO4ofhPlqInmzIIxgNgbcClM +x7ho9ArqLg0D/Nwt0DKCdKQ9Ft/BZk4Wo56DJu43KTbxyhaTK2cV1UYkvBuAwZHC +UrNgr8RfvSZsSWKOgqRCTozL/efBcv6zV9KLrN7vjboE0EhTA8MSTeruNdpjTtRV +v0BuF+oLTV1qrsNL63nmTg0MEZcqT0LAyAojfXd3vqoADDCOvY46SgMv5bMCTkR2 +9Vu5UZqAWfixyjj6nul29yyEhEbM2Vq8B5fVeHDgiCLcw2BIlYRbiQehdPjrMICz +HqERM2qeQjs29axE4kedjM6xn6lFTZoA75jUmEXZEK5srDhAU+bnus3mD6HbG+j2 +9ZIAvMnnz1vk8PN4rva8ImRUqCiocV3jblMvqHqOzWxdP1w1vN+jQaNxxkO3Oi5W +jZXPRNSfTx1sIrCaQkclmltGpIAN+qHhzcWQbnOszO0pobIAc6FpBHtjIS+8egZU +8yY98LBdgFPbnZmblEiHqlBfG+XfvxFveiIe38X5qLhyyAx2KyJaDGoUkHIXrStn +3KbdAmlRalZVAxwyXD+Jlsr3qNkiZJYOaAQK1fVxjO+ejNf3m8FxtdDa/ItBR7E1 +PjH7KehKr9QyFIhndKTyhDXA62lWqh/qzu5GPXUCAwEAAaOBjzCBjDAJBgNVHRME +AjAAMAsGA1UdDwQEAwIF4DAdBgNVHQ4EFgQUFFnnknu6xBErhaGX9FrgU+DaRx8w +HwYDVR0jBBgwFoAUDC1CrWIMc++tNKpFXusixDF92GwwHQYDVR0RBBYwFIESc21p +bWUzQGV4YW1wbGUuY29tMBMGA1UdJQQMMAoGCCsGAQUFBwMEMA0GCSqGSIb3DQEB +CwUAA4ICAQBTLrsJ5O0wZmwq3oiB57G+yjfOzvZqrl+pFKwc+VXbCYECc59o1yfh +8CFCnxsbKuG60ZwZlhuhyl2AY0GBlNNAaLbvsmInoUE7NZkiaA3wsme9DBZtoLiU ++G191veUMcvW91k4PgALckOIU8g430Qb4xjMfObz9wBqPNqxRr/JLeBYj04jhjVR +Zr0fC1q6UcMam8ZTA2SmGEgE50k0J9iBPBaRE/z6gPn04Z2PH3xD+7zA9/3QJym2 +FHEnKLRQoIO0Y3xp/h3z/TgeEUdR/Ix9IkftqcQVd60Bm/x+AxBnMNrFme0bRTh7 +ktdi9MVZT/eGYQb9Abw8T4Y+5e8J84zhoV3Ykc2WmIAPsoYWABbcP7MjDQ02S9q5 +rk7aL6ZQShp0ZYlcyrBLkWMgjW9U8w2SHvgwZv2fi9yq5Q2Or1POIJzpHFr1Vbdx +p4bwLiQMSM5sAZoRBMpvSYQRXRoW0z3qL+SvOGO0dIJPmTgpSYBEDoUiue85wywg +qt5t5Kajf+Xb+z290b/s2+r6a/7AuZYNuK2pg4hsCYQETOWIU4HobhpFO/oQF6/i +1ubKJmEc3kkCbDDnqdBrembSuDWGahueveYLHu0fkEFYTnFZCk/t/KWJ15OEHgsI +VYldqaedsdvA7Hk52EIcW4rLnLKMKvNREHzDbaL3SIn+H60kC6ZrtDAiMAoGCCsG +AQUFBwMEoBQGCCsGAQUFBwMCBggrBgEFBQcDAQ== +-----END TRUSTED CERTIFICATE----- diff --git a/spec/fixtures/smime/smime3@example.com.csr b/spec/fixtures/smime/smime3@example.com.csr new file mode 100644 index 000000000..ac58feb1a --- /dev/null +++ b/spec/fixtures/smime/smime3@example.com.csr @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIE4TCCAskCAQAwgZsxITAfBgkqhkiG9w0BCQEWEnNtaW1lM0BleGFtcGxlLmNv +bTELMAkGA1UEBhMCREUxDzANBgNVBAgMBkJlcmxpbjEPMA0GA1UEBwwGQmVybGlu +MRkwFwYDVQQKDBBFeGFtcGxlIFNlY3VyaXR5MRYwFAYDVQQLDA1JVCBEZXBhcnRt +ZW50MRQwEgYDVQQDDAtleGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBANuQsOn+LLxR5JlhQUM24Pt4c3gm/c4Czq+GiJavVKzQ2czuKH4T +5aiJ5syCMYDYG3ApTMe4aPQK6i4NA/zcLdAygnSkPRbfwWZOFqOegybuNyk28coW +kytnFdVGJLwbgMGRwlKzYK/EX70mbElijoKkQk6My/3nwXL+s1fSi6ze7426BNBI +UwPDEk3q7jXaY07UVb9AbhfqC01daq7DS+t55k4NDBGXKk9CwMgKI313d76qAAww +jr2OOkoDL+WzAk5EdvVbuVGagFn4sco4+p7pdvcshIRGzNlavAeX1Xhw4Igi3MNg +SJWEW4kHoXT46zCAsx6hETNqnkI7NvWsROJHnYzOsZ+pRU2aAO+Y1JhF2RCubKw4 +QFPm57rN5g+h2xvo9vWSALzJ589b5PDzeK72vCJkVKgoqHFd425TL6h6js1sXT9c +Nbzfo0GjccZDtzouVo2Vz0TUn08dbCKwmkJHJZpbRqSADfqh4c3FkG5zrMztKaGy +AHOhaQR7YyEvvHoGVPMmPfCwXYBT252Zm5RIh6pQXxvl378Rb3oiHt/F+ai4csgM +disiWgxqFJByF60rZ9ym3QJpUWpWVQMcMlw/iZbK96jZImSWDmgECtX1cYzvnozX +95vBcbXQ2vyLQUexNT4x+ynoSq/UMhSIZ3Sk8oQ1wOtpVqof6s7uRj11AgMBAAGg +ADANBgkqhkiG9w0BAQsFAAOCAgEAKbc3Mq4Pb5EXxpvJ1J4NF2t+ZrcH2JhT10// +d0Ll6oxBzCfs0fDO5T1wUC8sz/wKJ/kV+Vd9hB4e6YVX+OLxHyoXwsyUlHf5w7y2 +B+Kmr+I1gH7Sbo8Hvu9P6+ZEI+kEQcOZlI/mymjAIXy5oBqSk2kP9zsIKkfHf3P/ +LrGBShbveJ7wFD6QPXjl0/xwDvaGx32db7iFe8cmV/RK00jyJ91WYwn7jrKL/hJk +SessFGbVGj6hGLrfv6SwuinQDWAhBqT52RUOZcGj+rC7M+Y3wGl5pwWb0qMQzOi3 +r2OE5etGt3v5ZWbs3qRZXZCQ83uXTfBKGENnAcknK7BfPSCfZVcx9Im7rDti10kN +gfh4MuuKeBTVr2asmhi+6qfW7gNF05uCZ/a7i6vSjpDNr6PhUbQ9JoeD9d7GnOLM +QqssR0S0VCU60hGw7bH4PWIxRuZYo+j5WBC/LA3scFEGlk/cCv52lIv0H4GIajus +oR1UzywntK/1GNOwO7LHePweranTP5KMdNWnYYcw43ND9hvhTZwKapKhM2TidXvT +F+mCwU5o+9CDk8nRcER1DFjyrFlzQg1i2QqyKCrKUiZ3GKj++RdzhiEypyMwS3co +fdTlN3L040+wY9v7FVItNwkhke3i9JIjxrgLHMHmq24yEtYHYXaCnQBIxNBL0OG6 +TeYaIuo= +-----END CERTIFICATE REQUEST----- diff --git a/spec/fixtures/smime/smime3@example.com.key b/spec/fixtures/smime/smime3@example.com.key new file mode 100644 index 000000000..a2c968863 --- /dev/null +++ b/spec/fixtures/smime/smime3@example.com.key @@ -0,0 +1,54 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-256-CBC,B60A858865943D0BF01E8FB0E2DF8999 + +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 +-----END RSA PRIVATE KEY----- diff --git a/spec/fixtures/smime/smime3@example.com.secret b/spec/fixtures/smime/smime3@example.com.secret new file mode 100644 index 000000000..81c545efe --- /dev/null +++ b/spec/fixtures/smime/smime3@example.com.secret @@ -0,0 +1 @@ +1234 diff --git a/spec/fixtures/smime/smimedouble@example.com.crt b/spec/fixtures/smime/smimedouble@example.com.crt new file mode 100644 index 000000000..098923d66 --- /dev/null +++ b/spec/fixtures/smime/smimedouble@example.com.crt @@ -0,0 +1,39 @@ +-----BEGIN TRUSTED CERTIFICATE----- +MIIGojCCBIqgAwIBAgIUAh6m+t/Iz8s0i11uzqr7kDKyFe8wDQYJKoZIhvcNAQEL +BQAwgZcxHTAbBgkqhkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMQswCQYDVQQGEwJE +RTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xGTAXBgNVBAoMEEV4 +YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxFDASBgNVBAMM +C2V4YW1wbGUuY29tMCAXDTIwMDUyMDEzNDcxNVoYDzIyMjAwNDAyMTM0NzE1WjCB +oDEmMCQGCSqGSIb3DQEJARYXc21pbWVkb3VibGVAZXhhbXBsZS5jb20xCzAJBgNV +BAYTAkRFMQ8wDQYDVQQIDAZCZXJsaW4xDzANBgNVBAcMBkJlcmxpbjEZMBcGA1UE +CgwQRXhhbXBsZSBTZWN1cml0eTEWMBQGA1UECwwNSVQgRGVwYXJ0bWVudDEUMBIG +A1UEAwwLZXhhbXBsZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDis/CvhZWB56xP8x8fd1B6ab3FXeSIcxT/OY4hgQbx1aJ75f6E0jbsJMGdXCiO +HWE/gRUkkJfnWbO1o/2aZoIb6jUmQnDtPruMAcAZTfcXJwwISJGdrePczLOf1hOi +93N7Jobwq25KJK5zLhggfniWrc7zUIQfOWCAvAqSKmd8rRSYVSZ2oBzwySIquVee +EmYOOfu6nJpr3fFF96u2LFTOcPTqopjdJo7M5pRhwd/42jGpRQMBwcrJyimNhNLH +CfcVblV6NFYcpueNrQfYbnfSU3NW45jzeekrOIBu2hXJ5I+k7OB3RflV82yGswa6 +VMfeyWg6LJ2B+89AFuFBS3KhRYXIyzYTz4YekXMfwn+kZbbidexhW6vTJwk6ecPj +TOGRsW+cuQrrowldBSwT46t7FjDZaDwDNsSyX7Wf0NXSVB/9VH8+Oigy/pW92EQy +OlPsSK20MFm9k0h0oc7GcsSwsKbc8HRHEjnIT7r0GSToCZ8xLevoRM5u56T+ok5E +fATCtz5hbSPW5ZUJy97KPHxzoqKgnD1IxyS000A1pmlNRHJ4exzh1YkGEBunPUHp +7Yda3WDB6neZy00exN6LFQJhx0+CV+KMCJxhZsheLH54/55TxIla1djgoToIVAVv +hQP+ST31704TGyAws68Hz/ZZHLZUL+56w/sULOJgZg3BdwIDAQABo4HYMIHVMAkG +A1UdEwQCMAAwCwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTT9j2ZNIZiBXpGLd2iEmON +biSFmzAfBgNVHSMEGDAWgBQMLUKtYgxz7600qkVe6yLEMX3YbDATBgNVHSUEDDAK +BggrBgEFBQcDBDBmBgNVHREEXzBdhwTAqAAXhwTAqAAqgRdzbWltZWRvdWJsZUBl +eGFtcGxlLmNvbYEWc21pbWVkb3VibGVAZXhhbXBsZS5kZaAeBgMqAwSgFwwVc29t +ZSBvdGhlciBpZGVudGlmaWVyMA0GCSqGSIb3DQEBCwUAA4ICAQBRd1Itr7HtXe2X +K5KfnnWnFIzcqBmwEX6Za2XuYfGtMcM0vyc45Dvns/15TTu5QswZS0DavdYg3j65 +WS1Gcf7AOkUgnBJRosS2GJwmiV4lz/UG5mCeXwyogPYU2ZYpMPst2KfpbFj7ZNZx +wxqW7iKIiEdw7RsiXkSQZ4Oc0z9peex7t+pHeAimlHCTaHfB/L09kwpO+aHmaC5S +V7wY230HQQjMpyE3U9XyCXvaHPMQkT53uMPBHw7ZE7R9CxXMnUvsjfUG9EVUj2Z6 +vg5dRCimI04o/j2mp6KHt2FCSaebgzG5obBoOJOC0FusLQ6bLs0zRmn4rwpeBTs7 +sEt/nCGmmiUKyMMVrUZtobF0vo9rV3f5CxeBZMooamM6DV/QbIGvzDOvp4eImHXw +/ppHoKAg8CZxIuqLF333Z11iCfq2/lRYD4/jKcj3izJ2sobuYifm5nPCH5k7gtyR +sXqmcdcU/O3VVSQ1nENMal6BPo7sFo3t4iT/rS9j2OfS2QqcaQeOxVe9TlJ9lbsh +gOZQOPWPiCikR/lWPwW7MUN0IUpkqlfyPlMWiQ5QpTbfOTLtfY5rTrMBdBOZ5k7c +U5u8dZBf3JeUjroDVuIHzzrebVby7Fywo8pMvZBqhJ2BWiNaIc0NuTb5KnYZzKAN +VJ6ELG5wAciX5b/KlHI1PWLgmMjdUjAiMAoGCCsGAQUFBwMEoBQGCCsGAQUFBwMC +BggrBgEFBQcDAQ== +-----END TRUSTED CERTIFICATE----- diff --git a/spec/fixtures/smime/smimedouble@example.com.csr b/spec/fixtures/smime/smimedouble@example.com.csr new file mode 100644 index 000000000..93c3c93a7 --- /dev/null +++ b/spec/fixtures/smime/smimedouble@example.com.csr @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIE5jCCAs4CAQAwgaAxJjAkBgkqhkiG9w0BCQEWF3NtaW1lZG91YmxlQGV4YW1w +bGUuY29tMQswCQYDVQQGEwJERTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZC +ZXJsaW4xGTAXBgNVBAoMEEV4YW1wbGUgU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERl +cGFydG1lbnQxFDASBgNVBAMMC2V4YW1wbGUuY29tMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA4rPwr4WVgeesT/MfH3dQemm9xV3kiHMU/zmOIYEG8dWi +e+X+hNI27CTBnVwojh1hP4EVJJCX51mztaP9mmaCG+o1JkJw7T67jAHAGU33FycM +CEiRna3j3Myzn9YTovdzeyaG8KtuSiSucy4YIH54lq3O81CEHzlggLwKkipnfK0U +mFUmdqAc8MkiKrlXnhJmDjn7upyaa93xRfertixUznD06qKY3SaOzOaUYcHf+Nox +qUUDAcHKycopjYTSxwn3FW5VejRWHKbnja0H2G530lNzVuOY83npKziAbtoVyeSP +pOzgd0X5VfNshrMGulTH3sloOiydgfvPQBbhQUtyoUWFyMs2E8+GHpFzH8J/pGW2 +4nXsYVur0ycJOnnD40zhkbFvnLkK66MJXQUsE+OrexYw2Wg8AzbEsl+1n9DV0lQf +/VR/PjooMv6VvdhEMjpT7EittDBZvZNIdKHOxnLEsLCm3PB0RxI5yE+69Bkk6Amf +MS3r6ETObuek/qJORHwEwrc+YW0j1uWVCcveyjx8c6KioJw9SMcktNNANaZpTURy +eHsc4dWJBhAbpz1B6e2HWt1gwep3mctNHsTeixUCYcdPglfijAicYWbIXix+eP+e +U8SJWtXY4KE6CFQFb4UD/kk99e9OExsgMLOvB8/2WRy2VC/uesP7FCziYGYNwXcC +AwEAAaAAMA0GCSqGSIb3DQEBCwUAA4ICAQCGOMY/DJR/qgNq4E+KPJnCEBWMoJ3i +uIwYiKPn7Wcl2WRNdJim78bCSJkquUkJHmDcLOnHU4GeBgaNZs1do18S9SUsUKtn +zrPkoAVFGE9MN6q4e7/J7DOh0qluV3qd0jHmCluDNGF+bAorYx7nx+dg7AZtZ7jE +qVCnuMpf9pXl4cOpwb+KbvPcwcUTZ/r53yh/2o9gqqojzLvC9+f1wS12qpV1aem3 +kQlR9YZX+QUJtP8X9/IfmgGH1YO9XSDwHL4TnkW9oPZR70cv70rtd8StSSfLS/Er +sIpXMiU5sbqYu/Dh1gxxCJ9Rgaesc8jGtfiux8j+3Pg4YHRyh7dV0nQPzRxZg5zA +KqLLE7erq0AwO/bq3EFlOkknd4Ewm8i50EjL8hu9zKbdsvfBc8m2ox/V9gUtLPFd +k7xa5uyZkTemi20Oe3rWiuBnRHcCGkqmwLJQ3Dn1+gFuVoeAKi5igFlIq+HipFS2 +ljLpL9gBaVrvoLH3PZ8Kl+cToXvTKZ5xQVBsXn3qg/owNqtFJnY9zel0AuTzP9Wo +xZIMBn0E+doXtRtIPxRFGgzV9fBtfaJlV85kdXPMuO9rJV6WizpNdbTI7UNIkHix +d/VZpZ94hv4yaQZkYrrxsiuD7MW/CNlsBNde2JwIV0anNEi7EPXlAvS0GrF8HiT1 +J9wg4NQrmLj5kQ== +-----END CERTIFICATE REQUEST----- diff --git a/spec/fixtures/smime/smimedouble@example.com.key b/spec/fixtures/smime/smimedouble@example.com.key new file mode 100644 index 000000000..f27b0fa18 --- /dev/null +++ b/spec/fixtures/smime/smimedouble@example.com.key @@ -0,0 +1,54 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-256-CBC,AEB75ED78474CDCBB6810500E499387A + +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 +-----END RSA PRIVATE KEY----- diff --git a/spec/fixtures/smime/smimedouble@example.com.secret b/spec/fixtures/smime/smimedouble@example.com.secret new file mode 100644 index 000000000..81c545efe --- /dev/null +++ b/spec/fixtures/smime/smimedouble@example.com.secret @@ -0,0 +1 @@ +1234 diff --git a/spec/lib/secure_mailing/smime_spec.rb b/spec/lib/secure_mailing/smime_spec.rb new file mode 100644 index 000000000..1f4933279 --- /dev/null +++ b/spec/lib/secure_mailing/smime_spec.rb @@ -0,0 +1,534 @@ +require 'rails_helper' + +RSpec.describe SecureMailing::SMIME do + before do + Setting.set('smime_integration', true) + end + + let(:raw_body) { 'Some text' } + + let(:system_email_address) { 'smime1@example.com' } + let(:customer_email_address) { 'smime2@example.com' } + + let(:sender_certificate_subject) { "/emailAddress=#{sender_email_address}/C=DE/ST=Berlin/L=Berlin/O=Example Security/OU=IT Department/CN=example.com" } + let(:recipient_certificate_subject) { "/emailAddress=#{recipient_email_address}/C=DE/ST=Berlin/L=Berlin/O=Example Security/OU=IT Department/CN=example.com" } + + let(:expired_email_address) { 'expiredsmime1@example.com' } + + let(:ca_certificate_subject) { '/emailAddress=ca@example.com/C=DE/ST=Berlin/L=Berlin/O=Example Security/OU=IT Department/CN=example.com' } + + def build_mail + Channel::EmailBuild.build( + from: sender_email_address, + to: recipient_email_address, + body: raw_body, + content_type: 'text/plain', + security: security_preferences + ) + end + + describe '.outgoing' do + + shared_examples 'HttpLog writer' do |status| + + it "logs #{status}" do + expect do + build_mail + rescue + # allow failures + end.to change(HttpLog, :count).by(1) + expect(HttpLog.last.attributes).to include('direction' => 'out', 'status' => status) + end + end + + let(:sender_email_address) { system_email_address } + let(:recipient_email_address) { customer_email_address } + + context 'without security' do + let(:security_preferences) do + nil + end + + it 'builds mail' do + expect(build_mail.body).not_to match(SecureMailing::SMIME::Incoming::EXPRESSION_SIGNATURE) + expect(build_mail.body).not_to match(SecureMailing::SMIME::Incoming::EXPRESSION_MIME) + expect(build_mail.body).to eq(raw_body) + end + end + + context 'signing' do + + let(:security_preferences) do + { + type: 'S/MIME', + sign: { + success: true, + }, + encryption: { + success: false, + }, + } + end + + context 'private key present' do + + before do + create(:smime_certificate, :with_private, fixture: system_email_address) + end + + it 'builds mail' do + expect(build_mail.body).to match(SecureMailing::SMIME::Incoming::EXPRESSION_SIGNATURE) + end + + it_behaves_like 'HttpLog writer', 'success' + + context 'expired certificate' do + + let(:system_email_address) { expired_email_address } + + it 'raises exception' do + expect { build_mail }.to raise_error RuntimeError + end + + it_behaves_like 'HttpLog writer', 'failed' + end + end + + context 'no private key present' do + before do + create(:smime_certificate, fixture: system_email_address) + end + + it 'raises exception' do + expect { build_mail }.to raise_error RuntimeError + end + + it_behaves_like 'HttpLog writer', 'failed' + end + end + + context 'encryption' do + + let(:security_preferences) do + { + type: 'S/MIME', + sign: { + success: false, + }, + encryption: { + success: true, + }, + } + end + + context 'public key present' do + before do + create(:smime_certificate, fixture: recipient_email_address) + end + + it 'builds mail' do + mail = build_mail + + expect(mail['Content-Type'].value).to match(SecureMailing::SMIME::Incoming::EXPRESSION_MIME) + expect(mail.body).not_to include(raw_body) + end + + it_behaves_like 'HttpLog writer', 'success' + + context 'expired certificate' do + + let(:recipient_email_address) { expired_email_address } + + it 'raises exception' do + expect { build_mail }.to raise_error RuntimeError + end + + it_behaves_like 'HttpLog writer', 'failed' + end + end + + context 'no public key present' do + + it 'raises exception' do + expect { build_mail }.to raise_error ActiveRecord::RecordNotFound + end + + it_behaves_like 'HttpLog writer', 'failed' + end + end + end + + describe '.incoming' do + + shared_examples 'HttpLog writer' do |status| + + it "logs #{status}" do + expect do + mail + rescue + # allow failures + end.to change(HttpLog, :count).by(2) + expect(HttpLog.last.attributes).to include('direction' => 'in', 'status' => status) + end + end + + let(:sender_email_address) { customer_email_address } + let(:recipient_email_address) { system_email_address } + + context 'signature verification' do + + let(:allow_expired) { false } + + let(:security_preferences) do + { + type: 'S/MIME', + sign: { + success: true, + allow_expired: allow_expired, + }, + encryption: { + success: false, + }, + } + end + + context 'sender certificate present' do + + before do + create(:smime_certificate, :with_private, fixture: sender_email_address) + end + + let(:mail) do + smime_mail = build_mail + + mail = Channel::EmailParser.new.parse(smime_mail.to_s) + SecureMailing.incoming(mail) + + mail + end + + it 'verifies' do + expect(mail[:body]).to include(raw_body) + expect(mail['x-zammad-article-preferences'][:security][:sign][:success]).to be true + expect(mail['x-zammad-article-preferences'][:security][:sign][:comment]).to eq(sender_certificate_subject) + expect(mail['x-zammad-article-preferences'][:security][:encryption][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:encryption][:comment]).to be nil + end + + it_behaves_like 'HttpLog writer', 'success' + + context 'expired' do + + # required to build mail with expired certificate + let(:allow_expired) { true } + let(:sender_email_address) { expired_email_address } + + it 'verifies with comment' do + expect(mail[:body]).to include(raw_body) + expect(mail['x-zammad-article-preferences'][:security][:sign][:success]).to be true + expect(mail['x-zammad-article-preferences'][:security][:sign][:comment]).to include(expired_email_address).and include('expired') + expect(mail['x-zammad-article-preferences'][:security][:encryption][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:encryption][:comment]).to be nil + end + + it_behaves_like 'HttpLog writer', 'success' + end + end + + context 'no sender certificate' do + + let!(:sender_certificate) { create(:smime_certificate, :with_private, fixture: sender_email_address) } + + let(:mail) do + smime_mail = build_mail + mail = Channel::EmailParser.new.parse(smime_mail.to_s) + + sender_certificate.destroy! + + SecureMailing.incoming(mail) + + mail + end + + it 'fails' do + expect(mail[:body]).to include(raw_body) + expect(mail['x-zammad-article-preferences'][:security][:sign][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:sign][:comment]).to eq('Unable to find certificate for verification') + expect(mail['x-zammad-article-preferences'][:security][:encryption][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:encryption][:comment]).to be nil + end + + context 'public key present in signature' do + + let(:not_related_fixture) { 'smime3@example.com' } + let!(:not_related_certificate) { create(:smime_certificate, fixture: not_related_fixture) } + + context 'not related certificate present' do + + it 'fails' do + expect(mail[:body]).to include(raw_body) + expect(mail['x-zammad-article-preferences'][:security][:sign][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:sign][:comment]).to eq('Unable to find certificate for verification') + expect(mail['x-zammad-article-preferences'][:security][:encryption][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:encryption][:comment]).to be nil + end + + it_behaves_like 'HttpLog writer', 'failed' + + context 'CA' do + + let(:not_related_fixture) { 'expiredca' } + + it 'fails' do + expect(mail[:body]).to include(raw_body) + expect(mail['x-zammad-article-preferences'][:security][:sign][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:sign][:comment]).to eq('Unable to find certificate for verification') + expect(mail['x-zammad-article-preferences'][:security][:encryption][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:encryption][:comment]).to be nil + end + + it_behaves_like 'HttpLog writer', 'failed' + end + end + + context 'usage not prevented' do + let(:not_related_certificate_subject) { "/emailAddress=#{not_related_fixture}/C=DE/ST=Berlin/L=Berlin/O=Example Security/OU=IT Department/CN=example.com" } + + before do + # remove OpenSSL::PKCS7::NOINTERN + stub_const('SecureMailing::SMIME::Incoming::OPENSSL_PKCS7_VERIFY_FLAGS', OpenSSL::PKCS7::NOVERIFY) + end + + it 'wrongly performs a verification' do + expect(mail[:body]).to include(raw_body) + expect(mail['x-zammad-article-preferences'][:security][:sign][:success]).to be true + expect(mail['x-zammad-article-preferences'][:security][:sign][:comment]).to eq(not_related_certificate_subject) + expect(mail['x-zammad-article-preferences'][:security][:encryption][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:encryption][:comment]).to be nil + end + end + end + + context 'root CA present' do + + before do + create(:smime_certificate, fixture: ca_fixture) + end + + let(:ca_fixture) { 'ca' } + + it 'verifies' do + expect(mail[:body]).to include(raw_body) + expect(mail['x-zammad-article-preferences'][:security][:sign][:success]).to be true + expect(mail['x-zammad-article-preferences'][:security][:sign][:comment]).to eq(ca_certificate_subject) + expect(mail['x-zammad-article-preferences'][:security][:encryption][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:encryption][:comment]).to be nil + end + + it_behaves_like 'HttpLog writer', 'success' + + context 'expired' do + let(:ca_fixture) { 'expiredca' } + + it 'fails' do + expect(mail[:body]).to include(raw_body) + expect(mail['x-zammad-article-preferences'][:security][:sign][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:sign][:comment]).to eq('Unable to find certificate for verification') + expect(mail['x-zammad-article-preferences'][:security][:encryption][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:encryption][:comment]).to be nil + end + + it_behaves_like 'HttpLog writer', 'failed' + + context 'allowed' do + + let(:allow_expired) { true } + + # ATTENTION: expired CA is a special case where `allow_expired` does not count + it 'fails' do + expect(mail[:body]).to include(raw_body) + expect(mail['x-zammad-article-preferences'][:security][:sign][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:sign][:comment]).to eq('Unable to find certificate for verification') + expect(mail['x-zammad-article-preferences'][:security][:encryption][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:encryption][:comment]).to be nil + end + + it_behaves_like 'HttpLog writer', 'failed' + end + end + end + end + end + + context 'decryption' do + + let(:allow_expired) { false } + let(:security_preferences) do + { + type: 'S/MIME', + sign: { + success: false, + }, + encryption: { + success: true, + allow_expired: allow_expired, + }, + } + end + + let!(:sender_certificate) { create(:smime_certificate, :with_private, fixture: sender_email_address) } + let!(:recipient_certificate) { create(:smime_certificate, :with_private, fixture: recipient_email_address) } + + context 'private key present' do + + let(:mail) do + smime_mail = build_mail + + mail = Channel::EmailParser.new.parse(smime_mail.to_s) + SecureMailing.incoming(mail) + + mail + end + + it 'decrypts' do + expect(mail[:body]).to include(raw_body) + expect(mail['x-zammad-article-preferences'][:security][:sign][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:sign][:comment]).to be nil + expect(mail['x-zammad-article-preferences'][:security][:encryption][:success]).to be true + expect(mail['x-zammad-article-preferences'][:security][:encryption][:comment]).to eq(recipient_certificate_subject) + end + + it_behaves_like 'HttpLog writer', 'success' + + context 'expired allowed' do + let(:allow_expired) { true } + let(:system_email_address) { expired_email_address } + + it 'decrypts with comment' do + expect(mail[:body]).to include(raw_body) + expect(mail['x-zammad-article-preferences'][:security][:sign][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:sign][:comment]).to be nil + expect(mail['x-zammad-article-preferences'][:security][:encryption][:success]).to be true + expect(mail['x-zammad-article-preferences'][:security][:encryption][:comment]).to include(expired_email_address).and include('expired') + end + + it_behaves_like 'HttpLog writer', 'success' + end + end + + context 'no private key present' do + + let(:mail) do + smime_mail = build_mail + + mail = Channel::EmailParser.new.parse(smime_mail.to_s) + + sender_certificate.destroy! + recipient_certificate.destroy! + + SecureMailing.incoming(mail) + + mail + end + + it 'fails' do + expect(mail[:body]).to include('no visible content') + expect(mail['x-zammad-article-preferences'][:security][:sign][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:sign][:comment]).to be nil + expect(mail['x-zammad-article-preferences'][:security][:encryption][:success]).to be false + expect(mail['x-zammad-article-preferences'][:security][:encryption][:comment]).to eq('Unable to find private key to decrypt') + end + + it_behaves_like 'HttpLog writer', 'failed' + end + end + end + + describe '.retry' do + let(:sender_email_address) { customer_email_address } + let(:recipient_email_address) { system_email_address } + + let(:security_preferences) do + { + type: 'S/MIME', + sign: { + success: true, + }, + encryption: { + success: true, + }, + } + end + + let(:mail) do + sender_certificate = create(:smime_certificate, :with_private, fixture: sender_email_address) + recipient_certificate = create(:smime_certificate, :with_private, fixture: system_email_address) + + smime_mail = Channel::EmailBuild.build( + from: sender_email_address, + to: recipient_email_address, + body: raw_body, + content_type: 'text/plain', + security: security_preferences, + attachments: [ + { + content_type: 'text/plain', + content: 'blub', + filename: 'test-file1.txt', + }, + ], + ) + mail = Channel::EmailParser.new.parse(smime_mail.to_s) + + sender_certificate.destroy + recipient_certificate.destroy + + mail + end + + let!(:article) do + _ticket, article, _user, _mail = Channel::EmailParser.new.process({}, mail['raw'] ) + article + end + + context 'private key added' do + before do + create(:smime_certificate, :with_private, fixture: recipient_email_address) + create(:smime_certificate, fixture: sender_email_address) + end + + it 'succeeds' do + SecureMailing.retry(article) + + expect(article.preferences[:security][:sign][:success]).to be true + expect(article.preferences[:security][:sign][:comment]).to eq(sender_certificate_subject) + expect(article.preferences[:security][:encryption][:success]).to be true + expect(article.preferences[:security][:encryption][:comment]).to eq(recipient_certificate_subject) + expect(article.body).to include(raw_body) + expect(article.attachments.count).to eq(1) + expect(article.attachments.first.filename).to eq('test-file1.txt') + end + + context 'S/MIME activated' do + + before do + Setting.set('smime_integration', false) + end + + it 'succeeds' do + Setting.set('smime_integration', true) + + SecureMailing.retry(article) + + expect(article.preferences[:security][:sign][:success]).to be true + expect(article.preferences[:security][:sign][:comment]).to eq(sender_certificate_subject) + expect(article.preferences[:security][:encryption][:success]).to be true + expect(article.preferences[:security][:encryption][:comment]).to eq(recipient_certificate_subject) + expect(article.body).to include(raw_body) + expect(article.attachments.count).to eq(1) + expect(article.attachments.first.filename).to eq('test-file1.txt') + end + end + end + end +end diff --git a/spec/models/smime_certificate_spec.rb b/spec/models/smime_certificate_spec.rb new file mode 100644 index 000000000..6ac33e1bc --- /dev/null +++ b/spec/models/smime_certificate_spec.rb @@ -0,0 +1,195 @@ +require 'rails_helper' + +RSpec.describe SMIMECertificate, type: :model do + + describe '.for_sender_email_address' do + + let(:lookup_address) { 'smime1@example.com' } + + context 'no certificate present' do + it 'returns nil' do + expect(described_class.for_sender_email_address(lookup_address)).to be nil + end + end + + context 'certificate present' do + + context 'with private key' do + + let!(:certificate) { create(:smime_certificate, :with_private, fixture: lookup_address) } + + it 'returns certificate' do + expect(described_class.for_sender_email_address(lookup_address)).to eq(certificate) + end + end + + context 'without private key' do + + before do + create(:smime_certificate, fixture: lookup_address) + end + + it 'returns nil' do + expect(described_class.for_sender_email_address(lookup_address)).to be nil + end + end + + context 'different letter case' do + + let(:fixture) { 'CaseInsenstive@eXample.COM' } + let(:lookup_address) { 'CaseInsenStive@Example.coM' } + + context 'with private key' do + + let!(:certificate) { create(:smime_certificate, :with_private, fixture: fixture) } + + it 'returns certificate' do + expect(described_class.for_sender_email_address(lookup_address)).to eq(certificate) + end + end + end + end + end + + describe 'for_recipipent_email_addresses!' do + + context 'no certificate present' do + + let(:lookup_addresses) { ['smime1@example.com', 'smime2@example.com'] } + + it 'raises ActiveRecord::RecordNotFound' do + expect { described_class.for_recipipent_email_addresses!(lookup_addresses) }.to raise_error(ActiveRecord::RecordNotFound) + end + end + + context 'not all certificates present' do + + let(:existing_address) { 'smime1@example.com' } + let(:not_existing_address) { 'smime2@example.com' } + let(:lookup_addresses) { [existing_address, not_existing_address] } + + before do + create(:smime_certificate, fixture: existing_address) + end + + it 'raises ActiveRecord::RecordNotFound' do + expect { described_class.for_recipipent_email_addresses!(lookup_addresses) }.to raise_error(ActiveRecord::RecordNotFound) + end + + context 'exception message' do + + let(:message) do + described_class.for_recipipent_email_addresses!(lookup_addresses) + rescue => e + e.message + end + + it 'does not contain found address' do + expect(message).not_to include(existing_address) + end + + it 'contains address not found' do + expect(message).to include(not_existing_address) + end + end + end + + context 'all certificates present' do + + let(:lookup_addresses) { ['smime1@example.com', 'smime2@example.com'] } + + let!(:certificates) do + lookup_addresses.map do |existing_address| + create(:smime_certificate, fixture: existing_address) + end + end + + it 'returns certificates' do + expect(described_class.for_recipipent_email_addresses!(lookup_addresses)).to eq(certificates) + end + end + + context 'different letter case' do + + let(:fixture) { 'CaseInsenstive@eXample.COM' } + let(:lookup_addresses) { ['CaseInsenStive@Example.coM'] } + + let!(:certificates) do + [ create(:smime_certificate, fixture: fixture) ] + end + + it 'returns certificates' do + expect(described_class.for_recipipent_email_addresses!(lookup_addresses)).to eq(certificates) + end + end + + end + + describe '#email_addresses' do + + context 'certificate with single email address' do + let(:email_address) { 'smime1@example.com' } + let(:certificate) { create(:smime_certificate, fixture: email_address) } + + it 'returns the mail address' do + expect(certificate.email_addresses).to eq([email_address]) + end + end + + context 'certificate with multiple email addresses' do + let(:email_addresses) { ['smimedouble@example.com', 'smimedouble@example.de'] } + let(:certificate) { create(:smime_certificate, fixture: 'smimedouble@example.com') } + + it 'returns all mail addresses' do + expect(certificate.email_addresses).to eq(email_addresses) + end + end + + end + + describe '#expired?' do + + let(:certificate) { create(:smime_certificate, fixture: fixture) } + + context 'expired' do + let(:fixture) { 'expiredsmime1@example.com' } + + it 'returns true' do + expect(certificate.expired?).to be true + end + end + + context 'valid' do + let(:fixture) { 'smime1@example.com' } + + it 'returns false' do + expect(certificate.expired?).to be false + end + end + end + + context 'certificate parsing' do + + context 'expiration dates' do + + shared_examples 'correctly parsed' do |fixture| + let(:certificate) { create(:smime_certificate, fixture: fixture) } + + it "handles '#{fixture}' fixture" do + expect(certificate.not_before_at).to a_kind_of(ActiveSupport::TimeWithZone) + expect(certificate.not_after_at).to a_kind_of(ActiveSupport::TimeWithZone) + end + end + + it_behaves_like 'correctly parsed', 'smime1@example.com' + it_behaves_like 'correctly parsed', 'smime2@example.com' + it_behaves_like 'correctly parsed', 'smime3@example.com' + it_behaves_like 'correctly parsed', 'CaseInsenstive@eXample.COM' + it_behaves_like 'correctly parsed', 'ca' + end + end + + it 'ensures uniqueness of records' do + expect { create_list(:smime_certificate, 2, fixture: 'smime1@example.com') }.to raise_error(ActiveRecord::RecordInvalid, /Validation failed/) + end +end diff --git a/spec/models/trigger_spec.rb b/spec/models/trigger_spec.rb index f31b5e210..757a65b59 100644 --- a/spec/models/trigger_spec.rb +++ b/spec/models/trigger_spec.rb @@ -182,6 +182,209 @@ RSpec.describe Trigger, type: :model do end end end + + context 'active S/MIME integration' do + before do + Setting.set('smime_integration', true) + + create(:smime_certificate, :with_private, fixture: system_email_address) + create(:smime_certificate, fixture: customer_email_address) + end + + let(:system_email_address) { 'smime1@example.com' } + let(:customer_email_address) { 'smime2@example.com' } + + let(:email_address) { create(:email_address, email: system_email_address) } + + let(:group) { create(:group, email_address: email_address) } + let(:customer) { create(:customer_user, email: customer_email_address) } + + let(:security_preferences) { Ticket::Article.last.preferences[:security] } + + let(:perform) do + { + 'notification.email' => { + 'recipient' => 'ticket_customer', + 'subject' => 'Subject dummy.', + 'body' => 'Body dummy.', + }.merge(security_configuration) + } + end + + let!(:ticket) { create(:ticket, group: group, customer: customer) } + + context 'sending articles' do + + before do + Observer::Transaction.commit + end + + context 'expired certificate' do + + let(:system_email_address) { 'expiredsmime1@example.com' } + + let(:security_configuration) do + { + 'sign' => 'always', + 'encryption' => 'always', + } + end + + it 'creates unsigned article' do + expect(security_preferences[:sign][:success]).to be false + expect(security_preferences[:encryption][:success]).to be true + end + end + + context 'sign and encryption not set' do + + let(:security_configuration) { {} } + + it 'does not sign or encrypt' do + expect(security_preferences[:sign][:success]).to be false + expect(security_preferences[:encryption][:success]).to be false + end + end + + context 'sign and encryption disabled' do + let(:security_configuration) do + { + 'sign' => 'no', + 'encryption' => 'no', + } + end + + it 'does not sign or encrypt' do + expect(security_preferences[:sign][:success]).to be false + expect(security_preferences[:encryption][:success]).to be false + end + end + + context 'sign is enabled' do + let(:security_configuration) do + { + 'sign' => 'always', + 'encryption' => 'no', + } + end + + it 'signs' do + expect(security_preferences[:sign][:success]).to be true + expect(security_preferences[:encryption][:success]).to be false + end + end + + context 'encryption enabled' do + + let(:security_configuration) do + { + 'sign' => 'no', + 'encryption' => 'always', + } + end + + it 'encrypts' do + expect(security_preferences[:sign][:success]).to be false + expect(security_preferences[:encryption][:success]).to be true + end + end + + context 'sign and encryption enabled' do + + let(:security_configuration) do + { + 'sign' => 'always', + 'encryption' => 'always', + } + end + + it 'signs and encrypts' do + expect(security_preferences[:sign][:success]).to be true + expect(security_preferences[:encryption][:success]).to be true + end + end + end + + context 'discard' do + + context 'sign' do + + let(:security_configuration) do + { + 'sign' => 'discard', + } + end + + context 'group without certificate' do + let(:group) { create(:group) } + + it 'does not fire' do + expect { Observer::Transaction.commit } + .to change(Ticket::Article, :count).by(0) + end + end + end + + context 'encryption' do + + let(:security_configuration) do + { + 'encryption' => 'discard', + } + end + + context 'customer without certificate' do + let(:customer) { create(:customer) } + + it 'does not fire' do + expect { Observer::Transaction.commit } + .to change(Ticket::Article, :count).by(0) + end + end + end + + context 'mixed' do + + context 'sign' do + + let(:security_configuration) do + { + 'encryption' => 'always', + 'sign' => 'discard', + } + end + + context 'group without certificate' do + let(:group) { create(:group) } + + it 'does not fire' do + expect { Observer::Transaction.commit } + .to change(Ticket::Article, :count).by(0) + end + end + end + + context 'encryption' do + + let(:security_configuration) do + { + 'encryption' => 'discard', + 'sign' => 'always', + } + end + + context 'customer without certificate' do + let(:customer) { create(:customer) } + + it 'does not fire' do + expect { Observer::Transaction.commit } + .to change(Ticket::Article, :count).by(0) + end + end + end + end + end + end end context 'for condition "ticket updated"' do diff --git a/spec/requests/integration/smime_spec.rb b/spec/requests/integration/smime_spec.rb new file mode 100644 index 000000000..b79761a55 --- /dev/null +++ b/spec/requests/integration/smime_spec.rb @@ -0,0 +1,196 @@ +require 'rails_helper' + +RSpec.describe 'Integration SMIME', type: :request do + + let(:admin_user) { create(:admin_user) } + let(:email_address) { 'smime1@example.com' } + + before do + authenticated_as(admin_user) + end + + describe '/integration/smime/certificate' do + + let(:endpoint) { '/api/v1/integration/smime/certificate' } + + let(:certificate_path) do + Rails.root.join("spec/fixtures/smime/#{email_address}.crt") + end + let(:certificate_string) do + File.read(certificate_path) + end + + context 'POST requests' do + + let(:parsed_certificate) { SMIMECertificate.parse(certificate_string) } + + it 'adds certificate by string' do + expect do + post endpoint, params: { data: certificate_string }, as: :json + end.to change(SMIMECertificate, :count).by(1) + + expect(response).to have_http_status(:ok) + expect(DateTime.parse(json_response['response']['not_after_at'])).to eq(parsed_certificate.not_after) + end + + it 'adds certificate by file' do + expect do + post endpoint, params: { file: Rack::Test::UploadedFile.new(certificate_path, 'text/plain', true) } + end.to change(SMIMECertificate, :count).by(1) + + expect(response).to have_http_status(:ok) + expect(DateTime.parse(json_response['response']['not_after_at'])).to eq(parsed_certificate.not_after) + end + end + + context 'GET requests' do + + let!(:certificate) { create(:smime_certificate, fixture: email_address) } + + it 'lists certificates' do + get endpoint, as: :json + expect(response).to have_http_status(:ok) + + expect(json_response.any? { |e| e['id'] == certificate.id }).to be true + end + end + + context 'DELETE requests' do + + let!(:certificate) { create(:smime_certificate, fixture: email_address) } + + it 'deletes certificate' do + expect do + delete endpoint, params: { id: certificate.id }, as: :json + end.to change(SMIMECertificate, :count).by(-1) + + expect(response).to have_http_status(:ok) + end + end + end + + describe '/integration/smime/private_key' do + + let(:endpoint) { '/api/v1/integration/smime/private_key' } + + context 'POST requests' do + + let(:private_path) do + Rails.root.join("spec/fixtures/smime/#{email_address}.key") + end + + let(:private_string) { File.read(private_path) } + + let(:secret) do + File.read(Rails.root.join("spec/fixtures/smime/#{email_address}.secret")).strip + end + + let!(:certificate) { create(:smime_certificate, fixture: email_address) } + + it 'adds by string' do + expect do + post endpoint, params: { data: private_string, secret: secret }, as: :json + end.to change { + certificate.reload + certificate.private_key + } + + expect(response).to have_http_status(:ok) + expect(json_response['result']).to eq('ok') + end + + it 'adds by file' do + expect do + post endpoint, params: { file: Rack::Test::UploadedFile.new(private_path, 'text/plain', true), secret: secret } + end.to change { + certificate.reload + certificate.private_key + } + + expect(response).to have_http_status(:ok) + expect(json_response['result']).to eq('ok') + end + end + + context 'DELETE requests' do + + let!(:certificate) { create(:smime_certificate, :with_private, fixture: email_address) } + + it 'deletes private key' do + expect do + delete endpoint, params: { id: certificate.id }, as: :json + end.to change { + certificate.reload + certificate.private_key + }.to(nil) + + expect(response).to have_http_status(:ok) + end + end + end + + describe '/integration/smime' do + + let(:endpoint) { '/api/v1/integration/smime' } + + context 'POST requests' do + + let(:system_email_address) { create(:email_address, email: email_address) } + let(:group) { create(:group, email_address: system_email_address) } + + let(:search_query) do + { + article: { + to: email_address, + }, + ticket: { + group_id: group.id, + }, + } + end + + context 'certificate not present' do + it 'does not find non existing certificates' do + post endpoint, params: search_query, as: :json + + expect(response).to have_http_status(:ok) + expect(json_response['encryption']['success']).to eq(false) + expect(json_response['encryption']['comment']).to include(email_address) + expect(json_response['sign']['success']).to eq(false) + expect(json_response['sign']['comment']).to include(email_address) + end + end + + context 'certificate present' do + + before do + create(:smime_certificate, :with_private, fixture: email_address) + end + + it 'finds existing certificate' do + post endpoint, params: search_query, as: :json + + expect(response).to have_http_status(:ok) + expect(json_response['encryption']['success']).to eq(true) + expect(json_response['encryption']['comment']).to include(email_address) + expect(json_response['sign']['success']).to eq(true) + expect(json_response['sign']['comment']).to include(email_address) + end + + context 'but expired' do + let(:email_address) { 'expiredsmime1@example.com' } + + it 'finds existing certificate with comment' do + post endpoint, params: search_query, as: :json + + expect(response).to have_http_status(:ok) + expect(json_response['encryption']['success']).to eq(false) + expect(json_response['encryption']['comment']).to include(email_address).and include('expired') + expect(json_response['sign']['success']).to eq(false) + expect(json_response['sign']['comment']).to include(email_address).and include('expired') + end + end + end + end + end +end diff --git a/spec/support/capybara/browser_test_helper.rb b/spec/support/capybara/browser_test_helper.rb index 94b71be5c..2592ab4c7 100644 --- a/spec/support/capybara/browser_test_helper.rb +++ b/spec/support/capybara/browser_test_helper.rb @@ -27,6 +27,20 @@ module BrowserTestHelper Waiter.new(wait_handle) end + # This checks the number of queued AJAX requests in the frontend JS app + # and assures that the number is constantly zero for 0.5 seconds. + # It comes in handy when waiting for AJAX requests to be completed + # before performing further actions. + # + # @example + # await_empty_ajax_queue + # + def await_empty_ajax_queue + wait(5, interval: 0.5).until_constant do + page.evaluate_script('App.Ajax.queue().length').zero? + end + end + # Moves the mouse from its current position by the given offset. # If the coordinates provided are outside the viewport (the mouse will end up outside the browser window) # then the viewport is scrolled to match. @@ -72,7 +86,6 @@ module BrowserTestHelper yield rescue Capybara::ElementNotFound - end rescue Selenium::WebDriver::Error::TimeOutError => e # cleanup backtrace diff --git a/spec/support/capybara/common_actions.rb b/spec/support/capybara/common_actions.rb index e4ae54aac..065d24983 100644 --- a/spec/support/capybara/common_actions.rb +++ b/spec/support/capybara/common_actions.rb @@ -179,6 +179,15 @@ module CommonActions click '.js-openDropdownMacro' end + def open_article_meta + wrapper = all(%(div.ticket-article-item)).last + + wrapper.find('.article-content .textBubble').click + wait(3).until do + wrapper.find('.article-content-meta .article-meta.top').in_fixed_postion + end + end + def use_template(template) wait(4).until do field = find('#form-template select[name="id"]') diff --git a/spec/system/system/integration/smime_spec.rb b/spec/system/system/integration/smime_spec.rb new file mode 100644 index 000000000..e8509c56c --- /dev/null +++ b/spec/system/system/integration/smime_spec.rb @@ -0,0 +1,43 @@ +require 'rails_helper' + +RSpec.describe 'Manage > Integration > S/MIME', type: :system do + + let(:fixture) { 'smime1@example.com' } + + let!(:certificate) do + File.read(Rails.root.join("spec/fixtures/smime/#{fixture}.crt")) + end + let!(:private_key) do + File.read(Rails.root.join("spec/fixtures/smime/#{fixture}.key")) + end + let!(:private_key_secret) do + File.read(Rails.root.join("spec/fixtures/smime/#{fixture}.secret")).strip + end + + it 'enabling and adding of public and private key' do + visit '#system/integration/smime' + + # enable S/MIME + click 'label[for=setting-switch]' + + # add cert + click '.js-addCertificate' + fill_in 'Paste Certificate', with: certificate + click '.js-submit' + + # add private key + click '.js-addPrivateKey' + fill_in 'Paste Private Key', with: private_key + fill_in 'Enter Private Key secret', with: private_key_secret + click '.js-submit' + + # wait for ajax + expect(page).to have_css('td', text: 'Including private key') + + # check result + expect( Setting.get('smime_integration') ).to be true + expect( SMIMECertificate.last.fingerprint ).to be_present + expect( SMIMECertificate.last.raw ).to be_present + expect( SMIMECertificate.last.private_key ).to be_present + end +end diff --git a/spec/system/ticket/create_spec.rb b/spec/system/ticket/create_spec.rb index 2acf01134..6a1b4bfda 100644 --- a/spec/system/ticket/create_spec.rb +++ b/spec/system/ticket/create_spec.rb @@ -21,4 +21,300 @@ RSpec.describe 'Ticket Create', type: :system do context 'when using text modules' do include_examples 'text modules', path: 'ticket/create' end + + context 'S/MIME' do + + prepend_before do + Setting.set('smime_integration', true) + end + + context 'no certificate present' do + let!(:template) { create(:template, :dummy_data) } + + it 'has no security selections' do + visit 'ticket/create' + + within(:active_content) do + use_template(template) + + expect(page).not_to have_css('div.js-securityEncrypt.btn--active', wait: 5) + expect(page).not_to have_css('div.js-securitySign.btn--active', wait: 5) + click '.js-submit' + + expect(page).to have_css('.ticket-article-item', count: 1) + + open_article_meta + + expect(page).not_to have_css('span', text: 'Signed') + expect(page).not_to have_css('span', text: 'Encrypted') + + security_result = Ticket::Article.last.preferences['security'] + expect(security_result['encryption']['success']).to be nil + expect(security_result['sign']['success']).to be nil + end + end + end + + context 'private key configured', authenticated: -> { agent } do + let!(:template) { create(:template, :dummy_data, group: group, owner: agent, customer: customer) } + + let(:system_email_address) { 'smime1@example.com' } + let(:email_address) { create(:email_address, email: system_email_address) } + let(:group) { create(:group, email_address: email_address) } + let(:agent_groups) { [group] } + let(:agent) { create(:agent_user, groups: agent_groups) } + + before do + create(:smime_certificate, :with_private, fixture: system_email_address) + end + + context 'recipient certificate present' do + + let(:recipient_email_address) { 'smime2@example.com' } + let(:customer) { create(:customer_user, email: recipient_email_address) } + + before do + create(:smime_certificate, fixture: recipient_email_address) + end + + it 'plain' do + visit 'ticket/create' + + within(:active_content) do + use_template(template) + + # wait till S/MIME check AJAX call is ready + expect(page).to have_css('div.js-securityEncrypt.btn--active', wait: 5) + expect(page).to have_css('div.js-securitySign.btn--active', wait: 5) + + # deactivate encryption and signing + click '.js-securityEncrypt' + click '.js-securitySign' + + click '.js-submit' + + expect(page).to have_css('.ticket-article-item', count: 1) + + open_article_meta + + expect(page).not_to have_css('span', text: 'Signed') + expect(page).not_to have_css('span', text: 'Encrypted') + + security_result = Ticket::Article.last.preferences['security'] + expect(security_result['encryption']['success']).to be nil + expect(security_result['sign']['success']).to be nil + end + end + + it 'signed' do + visit 'ticket/create' + + within(:active_content) do + use_template(template) + + # wait till S/MIME check AJAX call is ready + expect(page).to have_css('div.js-securityEncrypt.btn--active', wait: 5) + expect(page).to have_css('div.js-securitySign.btn--active', wait: 5) + + # deactivate encryption + click '.js-securityEncrypt' + + click '.js-submit' + + expect(page).to have_css('.ticket-article-item', count: 1) + + open_article_meta + + expect(page).to have_css('span', text: 'Signed') + expect(page).not_to have_css('span', text: 'Encrypted') + + security_result = Ticket::Article.last.preferences['security'] + expect(security_result['encryption']['success']).to be nil + expect(security_result['sign']['success']).to be true + end + end + + it 'encrypted' do + visit 'ticket/create' + + within(:active_content) do + use_template(template) + + # wait till S/MIME check AJAX call is ready + expect(page).to have_css('div.js-securityEncrypt.btn--active', wait: 5) + expect(page).to have_css('div.js-securitySign.btn--active', wait: 5) + + # deactivate signing + click '.js-securitySign' + + click '.js-submit' + + expect(page).to have_css('.ticket-article-item', count: 1) + + open_article_meta + + expect(page).not_to have_css('span', text: 'Signed') + expect(page).to have_css('span', text: 'Encrypted') + + security_result = Ticket::Article.last.preferences['security'] + expect(security_result['encryption']['success']).to be true + expect(security_result['sign']['success']).to be nil + end + end + + it 'signed and encrypted' do + visit 'ticket/create' + + within(:active_content) do + use_template(template) + + # wait till S/MIME check AJAX call is ready + expect(page).to have_css('div.js-securityEncrypt.btn--active', wait: 5) + expect(page).to have_css('div.js-securitySign.btn--active', wait: 5) + + click '.js-submit' + + expect(page).to have_css('.ticket-article-item', count: 1) + + open_article_meta + + expect(page).to have_css('span', text: 'Signed') + expect(page).to have_css('span', text: 'Encrypted') + + security_result = Ticket::Article.last.preferences['security'] + expect(security_result['encryption']['success']).to be true + expect(security_result['sign']['success']).to be true + end + end + + context 'Group default behavior' do + + let(:smime_config) { {} } + + before do + Setting.set('smime_config', smime_config) + end + + shared_examples 'security defaults example' do |sign:, encrypt:| + + it "security defaults sign: #{sign}, encrypt: #{encrypt}" do + within(:active_content) do + encrypt_button = find('.js-securityEncrypt', wait: 5) + sign_button = find('.js-securitySign', wait: 5) + + await_empty_ajax_queue + + active_button_class = '.btn--active' + expect(encrypt_button.matches_css?(active_button_class, wait: 2)).to be(encrypt) + expect(sign_button.matches_css?(active_button_class, wait: 2)).to be(sign) + end + end + end + + shared_examples 'security defaults' do |sign:, encrypt:| + + before do + visit 'ticket/create' + + within(:active_content) do + use_template(template) + end + end + + include_examples 'security defaults example', sign: sign, encrypt: encrypt + end + + shared_examples 'security defaults group change' do |sign:, encrypt:| + + before do + visit 'ticket/create' + + within(:active_content) do + use_template(template) + + await_empty_ajax_queue + + select new_group.name, from: 'group_id' + end + end + + include_examples 'security defaults example', sign: sign, encrypt: encrypt + end + + context 'not configured' do + it_behaves_like 'security defaults', sign: true, encrypt: true + end + + context 'configuration present' do + + let(:smime_config) do + { + 'group_id' => group_defaults + } + end + + let(:group_defaults) do + { + 'default_encryption' => { + group.id.to_s => default_encryption, + }, + 'default_sign' => { + group.id.to_s => default_sign, + } + } + end + + let(:default_sign) { true } + let(:default_encryption) { true } + + shared_examples 'sign and encrypt variations' do |check_examples_name| + + it_behaves_like check_examples_name, sign: true, encrypt: true + + context 'no value' do + let(:group_defaults) { {} } + + it_behaves_like check_examples_name, sign: true, encrypt: true + end + + context 'signing disabled' do + let(:default_sign) { false } + + it_behaves_like check_examples_name, sign: false, encrypt: true + end + + context 'encryption disabled' do + let(:default_encryption) { false } + + it_behaves_like check_examples_name, sign: true, encrypt: false + end + end + + context 'same Group' do + it_behaves_like 'sign and encrypt variations', 'security defaults' + end + + context 'Group change' do + let(:new_group) { create(:group, email_address: email_address) } + + let(:agent_groups) { [group, new_group] } + + let(:group_defaults) do + { + 'default_encryption' => { + new_group.id.to_s => default_encryption, + }, + 'default_sign' => { + new_group.id.to_s => default_sign, + } + } + end + + it_behaves_like 'sign and encrypt variations', 'security defaults group change' + end + end + end + end + end + end end diff --git a/spec/system/ticket/zoom_spec.rb b/spec/system/ticket/zoom_spec.rb index bf3116fb8..19fb9a390 100644 --- a/spec/system/ticket/zoom_spec.rb +++ b/spec/system/ticket/zoom_spec.rb @@ -394,4 +394,342 @@ RSpec.describe 'Ticket zoom', type: :system do end end end + + context 'S/MIME active', authenticated: -> { agent } do + + let(:system_email_address) { 'smime1@example.com' } + let(:email_address) { create(:email_address, email: system_email_address) } + let(:group) { create(:group, email_address: email_address) } + let(:agent_groups) { [group] } + let(:agent) { create(:agent_user, groups: agent_groups) } + + let(:sender_email_address) { 'smime2@example.com' } + let(:customer) { create(:customer_user, email: sender_email_address) } + + let!(:ticket) { create(:ticket, group: group, owner: agent, customer: customer) } + + before do + Setting.set('smime_integration', true) + end + + context 'received mail' do + + context 'article meta information' do + + context 'success' do + it 'shows encryption/sign information' do + create(:ticket_article, preferences: { + security: { + type: 'S/MIME', + encryption: { + success: true, + comment: 'COMMENT_ENCRYPT_SUCCESS', + }, + sign: { + success: true, + comment: 'COMMENT_SIGN_SUCCESS', + }, + } + }, ticket: ticket) + + visit "#ticket/zoom/#{ticket.id}" + + expect(page).to have_css('svg.icon-lock') + expect(page).to have_css('svg.icon-signed') + + open_article_meta + + expect(page).to have_css('span', text: 'Encrypted') + expect(page).to have_css('span', text: 'Signed') + expect(page).to have_css('span[title=COMMENT_ENCRYPT_SUCCESS]') + expect(page).to have_css('span[title=COMMENT_SIGN_SUCCESS]') + end + end + + context 'error' do + + it 'shows create information about encryption/sign failed' do + create(:ticket_article, preferences: { + security: { + type: 'S/MIME', + encryption: { + success: false, + comment: 'Encryption failed because XXX', + }, + sign: { + success: false, + comment: 'Sign failed because XXX', + }, + } + }, ticket: ticket) + visit "#ticket/zoom/#{ticket.id}" + + expect(page).to have_css('svg.icon-not-signed') + + open_article_meta + + expect(page).to have_css('div.alert.alert--warning', text: 'Encryption failed because XXX') + expect(page).to have_css('div.alert.alert--warning', text: 'Sign failed because XXX') + end + end + end + + context 'certificate not present at time of arrival' do + + it 'retry' do + smime1 = create(:smime_certificate, :with_private, fixture: system_email_address) + smime2 = create(:smime_certificate, :with_private, fixture: sender_email_address) + + mail = Channel::EmailBuild.build( + from: sender_email_address, + to: system_email_address, + body: 'somebody with some text', + content_type: 'text/plain', + security: { + type: 'S/MIME', + sign: { + success: true, + }, + encryption: { + success: true, + }, + }, + ) + + smime1.destroy + smime2.destroy + + parsed_mail = Channel::EmailParser.new.parse(mail.to_s) + ticket, article, _user, _mail = Channel::EmailParser.new.process({ group_id: group.id }, parsed_mail['raw']) + expect(Ticket::Article.find(article.id).body).to eq('no visible content') + + create(:smime_certificate, fixture: sender_email_address) + create(:smime_certificate, :with_private, fixture: system_email_address) + + visit "#ticket/zoom/#{ticket.id}" + expect(page).not_to have_css('.article-content', text: 'somebody with some text') + click '.js-securityRetryProcess' + expect(page).to have_css('.article-content', text: 'somebody with some text') + end + end + end + + context 'replying' do + + before do + create(:ticket_article, ticket: ticket, from: customer.email) + + create(:smime_certificate, :with_private, fixture: system_email_address) + create(:smime_certificate, fixture: sender_email_address) + end + + it 'plain' do + visit "#ticket/zoom/#{ticket.id}" + + all('a[data-type=emailReply]').last.click + find('.articleNewEdit-body').send_keys('Test') + + expect(page).to have_css('.js-securityEncrypt.btn--active', wait: 5) + expect(page).to have_css('.js-securitySign.btn--active', wait: 5) + + click '.js-securityEncrypt' + click '.js-securitySign' + + click '.js-submit' + expect(page).to have_css('.ticket-article-item', count: 2) + + expect(Ticket::Article.last.preferences['security']['encryption']['success']).to be nil + expect(Ticket::Article.last.preferences['security']['sign']['success']).to be nil + end + + it 'signed' do + visit "#ticket/zoom/#{ticket.id}" + + all('a[data-type=emailReply]').last.click + find('.articleNewEdit-body').send_keys('Test') + + expect(page).to have_css('.js-securityEncrypt.btn--active', wait: 5) + expect(page).to have_css('.js-securitySign.btn--active', wait: 5) + + click '.js-securityEncrypt' + + click '.js-submit' + expect(page).to have_css('.ticket-article-item', count: 2) + + expect(Ticket::Article.last.preferences['security']['encryption']['success']).to be nil + expect(Ticket::Article.last.preferences['security']['sign']['success']).to be true + end + + it 'encrypted' do + visit "#ticket/zoom/#{ticket.id}" + + all('a[data-type=emailReply]').last.click + find('.articleNewEdit-body').send_keys('Test') + + expect(page).to have_css('.js-securityEncrypt.btn--active', wait: 5) + expect(page).to have_css('.js-securitySign.btn--active', wait: 5) + + click '.js-securitySign' + + click '.js-submit' + expect(page).to have_css('.ticket-article-item', count: 2) + + expect(Ticket::Article.last.preferences['security']['encryption']['success']).to be true + expect(Ticket::Article.last.preferences['security']['sign']['success']).to be nil + end + + it 'signed and encrypted' do + visit "#ticket/zoom/#{ticket.id}" + + all('a[data-type=emailReply]').last.click + find('.articleNewEdit-body').send_keys('Test') + + expect(page).to have_css('.js-securityEncrypt.btn--active', wait: 5) + expect(page).to have_css('.js-securitySign.btn--active', wait: 5) + + click '.js-submit' + expect(page).to have_css('.ticket-article-item', count: 2) + + expect(Ticket::Article.last.preferences['security']['encryption']['success']).to be true + expect(Ticket::Article.last.preferences['security']['sign']['success']).to be true + end + end + + context 'Group default behavior' do + + let(:smime_config) { {} } + + before do + Setting.set('smime_config', smime_config) + + create(:ticket_article, ticket: ticket, from: customer.email) + + create(:smime_certificate, :with_private, fixture: system_email_address) + create(:smime_certificate, fixture: sender_email_address) + end + + shared_examples 'security defaults example' do |sign:, encrypt:| + + it "security defaults sign: #{sign}, encrypt: #{encrypt}" do + within(:active_content) do + encrypt_button = find('.js-securityEncrypt', wait: 5) + sign_button = find('.js-securitySign', wait: 5) + + await_empty_ajax_queue + + active_button_class = '.btn--active' + expect(encrypt_button.matches_css?(active_button_class, wait: 2)).to be(encrypt) + expect(sign_button.matches_css?(active_button_class, wait: 2)).to be(sign) + end + end + end + + shared_examples 'security defaults' do |sign:, encrypt:| + + before do + visit "#ticket/zoom/#{ticket.id}" + + within(:active_content) do + all('a[data-type=emailReply]').last.click + find('.articleNewEdit-body').send_keys('Test') + + await_empty_ajax_queue + end + end + + include_examples 'security defaults example', sign: sign, encrypt: encrypt + end + + shared_examples 'security defaults group change' do |sign:, encrypt:| + + before do + visit "#ticket/zoom/#{ticket.id}" + + within(:active_content) do + all('a[data-type=emailReply]').last.click + find('.articleNewEdit-body').send_keys('Test') + + await_empty_ajax_queue + + select new_group.name, from: 'group_id' + end + end + + include_examples 'security defaults example', sign: sign, encrypt: encrypt + end + + context 'not configured' do + it_behaves_like 'security defaults', sign: true, encrypt: true + end + + context 'configuration present' do + + let(:smime_config) do + { + 'group_id' => group_defaults + } + end + + let(:group_defaults) do + { + 'default_encryption' => { + group.id.to_s => default_encryption, + }, + 'default_sign' => { + group.id.to_s => default_sign, + } + } + end + + let(:default_sign) { true } + let(:default_encryption) { true } + + shared_examples 'sign and encrypt variations' do |check_examples_name| + + it_behaves_like check_examples_name, sign: true, encrypt: true + + context 'no value' do + let(:group_defaults) { {} } + + it_behaves_like check_examples_name, sign: true, encrypt: true + end + + context 'signing disabled' do + let(:default_sign) { false } + + it_behaves_like check_examples_name, sign: false, encrypt: true + end + + context 'encryption disabled' do + let(:default_encryption) { false } + + it_behaves_like check_examples_name, sign: true, encrypt: false + end + end + + context 'same Group' do + it_behaves_like 'sign and encrypt variations', 'security defaults' + end + + context 'Group change' do + let(:new_group) { create(:group, email_address: email_address) } + + let(:agent_groups) { [group, new_group] } + + let(:group_defaults) do + { + 'default_encryption' => { + new_group.id.to_s => default_encryption, + }, + 'default_sign' => { + new_group.id.to_s => default_sign, + } + } + end + + it_behaves_like 'sign and encrypt variations', 'security defaults group change' + end + end + end + end end

hF1zlTYL!+XV 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