dkim 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b79c96d0478fbf8b0034adf4e151e57eb0a54713
4
+ data.tar.gz: 416192a1854051a5b7bb772746f6824e866daebc
5
+ SHA512:
6
+ metadata.gz: 7420d356c4fbf3281d942a67647ad778d6ab84704a681b32d6b422aa57e01884dfd8b86cc0326a96972d2fe116825efa5fddde26d149f9c090c7cf03d7933d11
7
+ data.tar.gz: 2d9edfbe6f3028af2aa4edfd92cb87b74aa4ae7dead5ae2b102cc53eff987f1a68b7f6175d2157ebb2b0f59b18164e10012a89d67c1aec2db2f1bd7e3baeeb80
data/.gitignore CHANGED
@@ -2,3 +2,4 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ gemfiles/*.lock
@@ -1,9 +1,10 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.8.7
4
- - 1.9.2
5
3
  - 1.9.3
6
- - jruby-18mode
4
+ - 2.0.0
5
+ - 2.1.0
6
+ - 2.2.0
7
7
  - jruby-19mode
8
- - rbx-18mode
9
- - rbx-19mode
8
+ gemfile:
9
+ - gemfiles/mail_2.6.gemfile
10
+ - gemfiles/mail_2.7.gemfile
@@ -0,0 +1,7 @@
1
+ appraise 'mail-2.6' do
2
+ gem 'mail', '2.6.6'
3
+ end
4
+
5
+ appraise 'mail-2.7' do
6
+ gem 'mail', '2.7.0'
7
+ end
@@ -1,6 +1,6 @@
1
1
  # dkim Changelog
2
2
 
3
- ## 1.0.0 (2012-01-15)
3
+ ## 1.0.0 (2013-01-15)
4
4
  * DKIM-Signature header is now prepended rather than appended
5
5
  * Headers are signed in the order they appear
6
6
  * Correct signing of repeated headers
data/Gemfile CHANGED
@@ -1,14 +1,8 @@
1
- source "http://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in dkim.gemspec
4
4
  gemspec
5
5
 
6
- gem "rake"
7
- gem 'minitest'
8
- gem 'guard-minitest'
9
- gem 'mail'
10
-
11
6
  platforms :jruby do
12
7
  gem 'jruby-openssl'
13
8
  end
14
-
data/README.md CHANGED
@@ -23,15 +23,19 @@ These can be specified globally
23
23
 
24
24
  Options can be overridden per message.
25
25
 
26
- Dkim.sign(mail, :selector => 'mail2', :private_key => open('private2.pem').read)
26
+ Dkim.sign(mail, :selector => 'mail2', :private_key => OpenSSL::PKey::RSA.new(open('private2.pem').read))
27
27
 
28
28
  For more details see {Dkim::Options}
29
29
 
30
30
  Usage With Rails
31
31
  ================
32
32
 
33
- Dkim contains `Dkim::Interceptor` which can be used to sign all mail delivered by rails 3 or [mail](https://github.com/mikel/mail).
34
- For rails, create an initializer (for example `config/initializers/dkim.rb`) with the following template.
33
+ Dkim contains `Dkim::Interceptor` which can be used to sign all mail delivered
34
+ by [mail](https://github.com/mikel/mail), which is used by actionmailer in
35
+ rails >= 3.
36
+
37
+ For rails, create an initializer (for example `config/initializers/dkim.rb`)
38
+ with the following template.
35
39
 
36
40
  # Configure dkim globally (see above)
37
41
  Dkim::domain = 'example.com'
data/Rakefile CHANGED
@@ -12,3 +12,15 @@ end
12
12
 
13
13
  Bundler::GemHelper.install_tasks
14
14
 
15
+ desc 'Open an pry (or irb) session preloaded with Dkim'
16
+ task :console do
17
+ begin
18
+ require 'pry'
19
+ sh 'pry -I lib -r dkim.rb'
20
+ rescue LoadError => _
21
+ sh 'irb -rubygems -I lib -r dkim.rb'
22
+ end
23
+
24
+ end
25
+
26
+ task c: :console
@@ -18,4 +18,9 @@ Gem::Specification.new do |s|
18
18
  s.test_files = `git ls-files -- test/*`.split("\n")
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
+
22
+ s.add_development_dependency 'rake'
23
+ s.add_development_dependency 'minitest', '~> 5.0'
24
+ s.add_development_dependency 'mail'
25
+ s.add_development_dependency 'appraisal'
21
26
  end
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "mail", "2.6.6"
6
+
7
+ platforms :jruby do
8
+ gem "jruby-openssl"
9
+ end
10
+
11
+ gemspec path: "../"
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "mail", "2.7.0"
6
+
7
+ platforms :jruby do
8
+ gem "jruby-openssl"
9
+ end
10
+
11
+ gemspec path: "../"
@@ -25,6 +25,7 @@ end
25
25
 
26
26
  Dkim::signable_headers = Dkim::DefaultHeaders.dup
27
27
  Dkim::domain = nil
28
+ Dkim::identity = nil
28
29
  Dkim::selector = nil
29
30
  Dkim::signing_algorithm = 'rsa-sha256'
30
31
  Dkim::private_key = nil
@@ -39,6 +39,12 @@ module Dkim
39
39
  # @return [String] domain
40
40
  define_option_method :domain
41
41
 
42
+ # @attribute [rw]
43
+ # The identity used for signing.
44
+ # This corresponds to the i= tag in the dkim header.
45
+ # @return [String] identity
46
+ define_option_method :identity
47
+
42
48
  # @attribute [rw]
43
49
  # Selector used for signing.
44
50
  # This corresponds to the s= tag in the dkim header.
@@ -59,6 +59,7 @@ module Dkim
59
59
  dkim_header['a'] = signing_algorithm
60
60
  dkim_header['c'] = "#{header_canonicalization}/#{body_canonicalization}"
61
61
  dkim_header['d'] = domain
62
+ dkim_header['i'] = identity if identity
62
63
  dkim_header['q'] = 'dns/txt'
63
64
  dkim_header['s'] = selector
64
65
  dkim_header['t'] = (time || Time.now).to_i
@@ -1,3 +1,3 @@
1
1
  module Dkim
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -9,7 +9,8 @@ module Mail
9
9
 
10
10
  def initialize(value = nil, charset = 'utf-8')
11
11
  self.charset = charset
12
- super(CAPITALIZED_FIELD, strip_field(FIELD_NAME, value), charset)
12
+ value = strip_field(FIELD_NAME, value) if respond_to?(:strip_field)
13
+ super(CAPITALIZED_FIELD, value, charset)
13
14
  self
14
15
  end
15
16
 
@@ -22,4 +23,3 @@ module Mail
22
23
  end
23
24
  end
24
25
  end
25
-
@@ -2,7 +2,7 @@
2
2
  require 'test_helper'
3
3
 
4
4
  module Dkim
5
- class CanonicalizationTest < MiniTest::Unit::TestCase
5
+ class CanonicalizationTest < Minitest::Test
6
6
  # from section 3.4.6 of RFC 6376
7
7
  def setup
8
8
  @input = <<-eos.rfc_format
@@ -2,7 +2,7 @@
2
2
  require 'test_helper'
3
3
 
4
4
  module Dkim
5
- class CanonicalizedHeadersTest < MiniTest::Unit::TestCase
5
+ class CanonicalizedHeadersTest < Minitest::Test
6
6
  def test_maintains_order
7
7
  headers = "ABCD".chars.map {|c| Header.new(c, c) }
8
8
  header_keys = headers.map &:relaxed_key
@@ -3,7 +3,7 @@ require 'test_helper'
3
3
  require 'base64'
4
4
 
5
5
  module Dkim
6
- class DkimHeaderTest < MiniTest::Unit::TestCase
6
+ class DkimHeaderTest < Minitest::Test
7
7
  def setup
8
8
  @header = DkimHeader.new
9
9
 
@@ -1,5 +1,5 @@
1
1
  module Dkim
2
- class EncodingsTest < MiniTest::Unit::TestCase
2
+ class EncodingsTest < Minitest::Test
3
3
  def test_plain_text
4
4
  @encoder = Encodings::PlainText.new
5
5
  assert_equal 'testing123', @encoder.encode('testing123')
@@ -36,7 +36,7 @@ We lost the game. Are you hungry yet?
36
36
  Joe.
37
37
  eos
38
38
 
39
- class InterceptorTest < MiniTest::Unit::TestCase
39
+ class InterceptorTest < Minitest::Test
40
40
  def setup
41
41
  @original_options = Dkim.options.dup
42
42
 
@@ -56,6 +56,7 @@ Joe.
56
56
  Dkim.header_canonicalization = 'relaxed'
57
57
  Dkim.body_canonicalization = 'relaxed'
58
58
  Dkim.signing_algorithm = 'rsa-sha256'
59
+ Dkim.identity = '@example.com'
59
60
  Interceptor.delivering_email(@mail)
60
61
  dkim_header = @mail['DKIM-Signature']
61
62
 
@@ -63,6 +64,7 @@ Joe.
63
64
  assert_includes dkim_header.to_s, 'rsa-sha256'
64
65
  assert_includes dkim_header.to_s, 's=brisbane'
65
66
  assert_includes dkim_header.to_s, 'd=example.com'
67
+ assert_includes dkim_header.to_s, 'i=@example.com'
66
68
  assert_includes dkim_header.to_s, 'c=relaxed/relaxed'
67
69
  assert_includes dkim_header.to_s, 'q=dns/txt'
68
70
  assert_includes dkim_header.to_s, 'bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8='
@@ -74,12 +76,14 @@ Joe.
74
76
  Dkim.header_canonicalization = 'simple'
75
77
  Dkim.body_canonicalization = 'simple'
76
78
  Dkim.signing_algorithm = 'rsa-sha256'
79
+ Dkim.identity = '@example.com'
77
80
  Interceptor.delivering_email(@mail)
78
81
  dkim_header = @mail['DKIM-Signature']
79
82
  assert dkim_header
80
83
  assert_includes dkim_header.to_s, 'rsa-sha256'
81
84
  assert_includes dkim_header.to_s, 's=brisbane'
82
85
  assert_includes dkim_header.to_s, 'd=example.com'
86
+ assert_includes dkim_header.to_s, 'i=@example.com'
83
87
  assert_includes dkim_header.to_s, 'c=simple/simple'
84
88
  assert_includes dkim_header.to_s, 'q=dns/txt'
85
89
  assert_includes dkim_header.to_s, 'bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8='
@@ -1,7 +1,7 @@
1
1
  require 'test_helper'
2
2
 
3
3
  module Dkim
4
- class OptionsTest < MiniTest::Unit::TestCase
4
+ class OptionsTest < Minitest::Test
5
5
  def setup
6
6
  klass = Class.new
7
7
  klass.send :include, Options
@@ -19,6 +19,7 @@ module Dkim
19
19
  :signing_algorithm => 'abc123',
20
20
  :signable_headers => [],
21
21
  :domain => 'example.net',
22
+ :identity => '@example.net',
22
23
  :selector => 'selector',
23
24
  :time => 'time',
24
25
  :header_canonicalization => 'simple',
@@ -2,7 +2,7 @@
2
2
  require 'test_helper'
3
3
 
4
4
  module Dkim
5
- class SignedMailTest < MiniTest::Unit::TestCase
5
+ class SignedMailTest < Minitest::Test
6
6
  def setup
7
7
  @mail = EXAMPLEEMAIL.dup
8
8
  end
@@ -46,6 +46,21 @@ module Dkim
46
46
  assert_equal 't+dk4yxTI2ByZxxRzkwhZhM4WzTZjGWHiWnS2t4pg7oT7fAIlMrfihJ/CIvGmYqYv4lbq4LStHqHx9TmEgxrkjLevHtuqhxkN55xJ2vA2QzTzFi2fMDZ4fFqWy4QtvlLjBAhevG+LXpmjPYec1cyeMlHlPAthq5+RNi6NHErJiM=', dkim_header['b']
47
47
  end
48
48
 
49
+ def test_identity
50
+ options = {
51
+ :domain => 'example.org',
52
+ :selector => 'sidney',
53
+ :identity => '@example.org',
54
+ :time => Time.at(1234567890)
55
+ }
56
+ signed_mail = SignedMail.new(@mail, options)
57
+ dkim_header = signed_mail.dkim_header.list
58
+
59
+ assert_equal '@example.org', dkim_header['i']
60
+ assert_equal '2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=', dkim_header['bh']
61
+ assert_equal 'dCiulbJTD+GCCItMij1IU/RO0+q73afdjmrCWV5Qu7BIT5Kbp5Oi3jqCzj/v8Juks2/L6GBSXZia3aZprNVZX0szt8RnwC9NJx9WhcjN2RPz4Zf5F1jJivCN+PtaIWA3i3Ki/DR1q+RuNPgs7T1KKMo3Ih5uHubZIsMwRzbQBc0=', dkim_header['b']
62
+ end
63
+
49
64
  def test_empty_body_hashes
50
65
  @mail = @mail.split("\n\n").first + "\n\n"
51
66
 
@@ -2,7 +2,7 @@
2
2
  require 'test_helper'
3
3
 
4
4
  module Dkim
5
- class TagValueListTest < MiniTest::Unit::TestCase
5
+ class TagValueListTest < Minitest::Test
6
6
  def test_replacement
7
7
  @list = TagValueList.new
8
8
 
metadata CHANGED
@@ -1,16 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dkim
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 1.0.0
4
+ version: 1.0.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - John Hawthorn
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-01-15 00:00:00.000000000 Z
13
- dependencies: []
11
+ date: 2017-11-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '5.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '5.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mail
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: appraisal
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
14
69
  description: gem for adding DKIM signatures to email messages
15
70
  email:
16
71
  - john.hawthorn@gmail.com
@@ -19,15 +74,17 @@ executables:
19
74
  extensions: []
20
75
  extra_rdoc_files: []
21
76
  files:
22
- - .gitignore
23
- - .travis.yml
77
+ - ".gitignore"
78
+ - ".travis.yml"
79
+ - Appraisals
24
80
  - CHANGELOG.md
25
81
  - Gemfile
26
- - Guardfile
27
82
  - README.md
28
83
  - Rakefile
29
84
  - bin/dkimsign.rb
30
85
  - dkim.gemspec
86
+ - gemfiles/mail_2.6.gemfile
87
+ - gemfiles/mail_2.7.gemfile
31
88
  - lib/dkim.rb
32
89
  - lib/dkim/body.rb
33
90
  - lib/dkim/canonicalizable.rb
@@ -55,27 +112,26 @@ files:
55
112
  - test/test_helper.rb
56
113
  homepage: https://github.com/jhawthorn/dkim
57
114
  licenses: []
115
+ metadata: {}
58
116
  post_install_message:
59
117
  rdoc_options: []
60
118
  require_paths:
61
119
  - lib
62
120
  required_ruby_version: !ruby/object:Gem::Requirement
63
- none: false
64
121
  requirements:
65
- - - ! '>='
122
+ - - ">="
66
123
  - !ruby/object:Gem::Version
67
124
  version: '0'
68
125
  required_rubygems_version: !ruby/object:Gem::Requirement
69
- none: false
70
126
  requirements:
71
- - - ! '>='
127
+ - - ">="
72
128
  - !ruby/object:Gem::Version
73
129
  version: '0'
74
130
  requirements: []
75
131
  rubyforge_project: dkim
76
- rubygems_version: 1.8.24
132
+ rubygems_version: 2.6.8
77
133
  signing_key:
78
- specification_version: 3
134
+ specification_version: 4
79
135
  summary: DKIM library in ruby
80
136
  test_files:
81
137
  - test/dkim/canonicalization_test.rb
data/Guardfile DELETED
@@ -1,5 +0,0 @@
1
-
2
- guard 'minitest' do
3
- watch(%r|^test/(.*)\.rb|) { "test" }
4
- watch(%r|^lib/(.*)\.rb|) { "test" }
5
- end