bcrypt 3.1.7 → 3.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
- ---
2
- SHA512:
3
- metadata.gz: e9a27bd4544153b3e73771ddc6ee262227c7c666df2001028f0860b335810b3f01862d30c86c24d893fda4690298016c60f76accd467e95c9c9048945802d7b6
4
- data.tar.gz: 1798cf7b86267393f52b54b31356aa6c54b9ad524d86b97354322b4ae9a032e472cd98fb4cd209ecf2372a7e55556b42173a0c2d16a7467d7cc4b2ef98343636
5
- SHA1:
6
- metadata.gz: d58ac651be05f4747ff8d8258d2fe0920e26f375
7
- data.tar.gz: 8f7b7aad5c4c3f572dd172fac39fcd0de31012c5
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YmUwZGI3ZWM4NDc1NWZlZmVmMjY3MDJkYjQ1NDQ3NmY0OTI5NDI2Yw==
5
+ data.tar.gz: !binary |-
6
+ ZDBlODEzOTk1N2I5MDhlMjcwZGQ0NzcxZGJjNDI4ODQxMWM4MWE3MQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ YzA0MmQyOTNkMjIzNjhjMzQxMTI3ODAxZGVmYzhmMzQ5YjY1N2Q0NmNhODJk
10
+ NTliYzI3NDk0YWRjZGMzYWY3ZmUxMzk5YzRkOGI4ZTdhZjQ5OWZmM2Y4MDlj
11
+ OGI1MDE2YmVhM2FhYThkM2M1MWI5MDBmYWVkOTJiMTE4ZjY1NWU=
12
+ data.tar.gz: !binary |-
13
+ MjY5Zjc5MjU2ZjkzYzhkYTk4ZWE1NTAyODZmMTljM2YxNzM3NGQxZmY1ZDcz
14
+ NWI4MjU2NzI4Y2MzYjI1YWZiY2EzMTcyYzk2NGMzYjNiNjA2M2JiMmJlMWYw
15
+ NDU3YjJlMTJmYTJlMDdjZDYzZTcwMmVhOWU2MDQ4MDZhYTg2NmI=
data/.gitignore CHANGED
@@ -1,10 +1,9 @@
1
+ doc
2
+ pkg
3
+ tmp
1
4
  *.o
2
5
  *.bundle
3
6
  *.so
4
7
  *.jar
5
- ext/mri/Makefile
6
- doc
7
- pkg
8
- *.class
9
- tmp/
10
8
  .DS_Store
9
+ .rbenv-gemsets
@@ -10,6 +10,5 @@ rvm:
10
10
  - jruby-19mode
11
11
  - jruby-head
12
12
  - rbx-2
13
- - rbx
14
13
  - ree
15
14
  script: bundle exec rake
data/CHANGELOG CHANGED
@@ -70,3 +70,6 @@
70
70
  3.1.7 Feb 24 2014
71
71
  - Rebuild corrupt Java binary version of gem [GH #90]
72
72
  - The 2.1 support for Windows binaries alleged in 3.1.3 was a lie -- documentation removed
73
+
74
+ 3.1.8 Oct 23 2014
75
+ - Add support for Ruby 2.1 in compiled Windows binaries [GH #102]
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bcrypt (3.1.7)
4
+ bcrypt (3.1.8)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -14,14 +14,18 @@ GEM
14
14
  rake
15
15
  rdoc (3.12.2)
16
16
  json (~> 1.4)
17
- rspec (2.14.1)
18
- rspec-core (~> 2.14.0)
19
- rspec-expectations (~> 2.14.0)
20
- rspec-mocks (~> 2.14.0)
21
- rspec-core (2.14.7)
22
- rspec-expectations (2.14.4)
23
- diff-lcs (>= 1.1.3, < 2.0)
24
- rspec-mocks (2.14.4)
17
+ rspec (3.0.0)
18
+ rspec-core (~> 3.0.0)
19
+ rspec-expectations (~> 3.0.0)
20
+ rspec-mocks (~> 3.0.0)
21
+ rspec-core (3.0.2)
22
+ rspec-support (~> 3.0.0)
23
+ rspec-expectations (3.0.2)
24
+ diff-lcs (>= 1.2.0, < 2.0)
25
+ rspec-support (~> 3.0.0)
26
+ rspec-mocks (3.0.2)
27
+ rspec-support (~> 3.0.0)
28
+ rspec-support (3.0.2)
25
29
 
26
30
  PLATFORMS
27
31
  java
@@ -33,4 +37,4 @@ DEPENDENCIES
33
37
  bcrypt!
34
38
  rake-compiler (~> 0.9.2)
35
39
  rdoc (~> 3.12)
36
- rspec
40
+ rspec (>= 3)
data/README.md CHANGED
@@ -30,7 +30,7 @@ re-hash those passwords. This vulnerability only affected the JRuby gem.
30
30
  The bcrypt gem is available on the following ruby platforms:
31
31
 
32
32
  * JRuby
33
- * RubyInstaller 1.8, 1.9, and 2.0 builds on win32
33
+ * RubyInstaller 1.8, 1.9, 2.0, and 2.1 builds on win32
34
34
  * Any 1.8, 1.9, 2.0, or 2.1 ruby on a BSD/OSX/Linux system with a compiler
35
35
 
36
36
  ## How to use `bcrypt()` in your Rails application
data/Rakefile CHANGED
@@ -7,16 +7,19 @@ require 'rdoc/task'
7
7
  require 'benchmark'
8
8
 
9
9
  CLEAN.include(
10
- "ext/mri/*.o",
11
- "ext/mri/*.bundle",
12
- "ext/mri/*.so",
13
- "ext/jruby/bcrypt_jruby/*.class"
10
+ "tmp",
11
+ "lib/1.8",
12
+ "lib/1.9",
13
+ "lib/2.0",
14
+ "lib/2.1",
15
+ "lib/bcrypt_ext.jar",
16
+ "lib/bcrypt_ext.so"
14
17
  )
15
18
  CLOBBER.include(
16
- "ext/mri/Makefile",
17
- "doc/coverage",
19
+ "doc",
18
20
  "pkg"
19
21
  )
22
+
20
23
  GEMSPEC = Gem::Specification.load("bcrypt.gemspec")
21
24
 
22
25
  task :default => [:compile, :spec]
@@ -58,6 +61,23 @@ else
58
61
  ext.cross_compile = true
59
62
  ext.cross_platform = ['x86-mingw32', 'x64-mingw32']
60
63
  end
64
+
65
+ ENV['RUBY_CC_VERSION'].to_s.split(':').each do |ruby_version|
66
+ platforms = {
67
+ "x86-mingw32" => "i686-w64-mingw32",
68
+ "x64-mingw32" => "x86_64-w64-mingw32"
69
+ }
70
+ platforms.each do |platform, prefix|
71
+ task "copy:bcrypt_ext:#{platform}:#{ruby_version}" do |t|
72
+ %w[lib tmp/#{platform}/stage/lib].each do |dir|
73
+ so_file = "#{dir}/#{ruby_version[/^\d+\.\d+/]}/bcrypt_ext.so"
74
+ if File.exists?(so_file)
75
+ sh "#{prefix}-strip -S #{so_file}"
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
61
81
  end
62
82
 
63
83
  desc "Run a set of benchmarks on the compiled extension."
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'bcrypt'
3
- s.version = '3.1.7'
3
+ s.version = '3.1.8'
4
4
 
5
5
  s.summary = "OpenBSD's bcrypt() password hashing algorithm."
6
6
  s.description = <<-EOF
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
13
13
  s.require_path = 'lib'
14
14
 
15
15
  s.add_development_dependency 'rake-compiler', '~> 0.9.2'
16
- s.add_development_dependency 'rspec'
16
+ s.add_development_dependency 'rspec', '>= 3'
17
17
  s.add_development_dependency 'rdoc', '~> 3.12'
18
18
 
19
19
  s.has_rdoc = true
@@ -11,7 +11,6 @@ if RUBY_PLATFORM == "java"
11
11
  exit 0
12
12
  else
13
13
  require "mkmf"
14
- have_header('ruby/util.h')
15
14
  dir_config("bcrypt_ext")
16
15
  create_makefile("bcrypt_ext")
17
16
  end
@@ -9,12 +9,7 @@ else
9
9
  require "openssl"
10
10
  end
11
11
 
12
- begin
13
- RUBY_VERSION =~ /(\d+.\d+)/
14
- require "#{$1}/bcrypt_ext"
15
- rescue LoadError
16
- require "bcrypt_ext"
17
- end
12
+ require 'bcrypt_ext'
18
13
 
19
14
  require 'bcrypt/error'
20
15
  require 'bcrypt/engine'
@@ -4,35 +4,35 @@ describe "The BCrypt engine" do
4
4
  specify "should calculate the optimal cost factor to fit in a specific time" do
5
5
  first = BCrypt::Engine.calibrate(100)
6
6
  second = BCrypt::Engine.calibrate(400)
7
- second.should > first
7
+ expect(second).to be > first
8
8
  end
9
9
  end
10
10
 
11
11
  describe "Generating BCrypt salts" do
12
12
 
13
13
  specify "should produce strings" do
14
- BCrypt::Engine.generate_salt.should be_an_instance_of(String)
14
+ expect(BCrypt::Engine.generate_salt).to be_an_instance_of(String)
15
15
  end
16
16
 
17
17
  specify "should produce random data" do
18
- BCrypt::Engine.generate_salt.should_not equal(BCrypt::Engine.generate_salt)
18
+ expect(BCrypt::Engine.generate_salt).to_not equal(BCrypt::Engine.generate_salt)
19
19
  end
20
20
 
21
21
  specify "should raise a InvalidCostError if the cost parameter isn't numeric" do
22
- lambda { BCrypt::Engine.generate_salt('woo') }.should raise_error(BCrypt::Errors::InvalidCost)
22
+ expect { BCrypt::Engine.generate_salt('woo') }.to raise_error(BCrypt::Errors::InvalidCost)
23
23
  end
24
24
 
25
25
  specify "should raise a InvalidCostError if the cost parameter isn't greater than 0" do
26
- lambda { BCrypt::Engine.generate_salt(-1) }.should raise_error(BCrypt::Errors::InvalidCost)
26
+ expect { BCrypt::Engine.generate_salt(-1) }.to raise_error(BCrypt::Errors::InvalidCost)
27
27
  end
28
28
  end
29
29
 
30
30
  describe "Autodetecting of salt cost" do
31
31
 
32
32
  specify "should work" do
33
- BCrypt::Engine.autodetect_cost("$2a$08$hRx2IVeHNsTSYYtUWn61Ou").should eq 8
34
- BCrypt::Engine.autodetect_cost("$2a$05$XKd1bMnLgUnc87qvbAaCUu").should eq 5
35
- BCrypt::Engine.autodetect_cost("$2a$13$Lni.CZ6z5A7344POTFBBV.").should eq 13
33
+ expect(BCrypt::Engine.autodetect_cost("$2a$08$hRx2IVeHNsTSYYtUWn61Ou")).to eq 8
34
+ expect(BCrypt::Engine.autodetect_cost("$2a$05$XKd1bMnLgUnc87qvbAaCUu")).to eq 5
35
+ expect(BCrypt::Engine.autodetect_cost("$2a$13$Lni.CZ6z5A7344POTFBBV.")).to eq 13
36
36
  end
37
37
 
38
38
  end
@@ -49,21 +49,21 @@ describe "Generating BCrypt hashes" do
49
49
  end
50
50
 
51
51
  specify "should produce a string" do
52
- BCrypt::Engine.hash_secret(@password, @salt).should be_an_instance_of(String)
52
+ expect(BCrypt::Engine.hash_secret(@password, @salt)).to be_an_instance_of(String)
53
53
  end
54
54
 
55
55
  specify "should raise an InvalidSalt error if the salt is invalid" do
56
- lambda { BCrypt::Engine.hash_secret(@password, 'nino') }.should raise_error(BCrypt::Errors::InvalidSalt)
56
+ expect { BCrypt::Engine.hash_secret(@password, 'nino') }.to raise_error(BCrypt::Errors::InvalidSalt)
57
57
  end
58
58
 
59
59
  specify "should raise an InvalidSecret error if the secret is invalid" do
60
- lambda { BCrypt::Engine.hash_secret(MyInvalidSecret.new, @salt) }.should raise_error(BCrypt::Errors::InvalidSecret)
61
- lambda { BCrypt::Engine.hash_secret(nil, @salt) }.should_not raise_error(BCrypt::Errors::InvalidSecret)
62
- lambda { BCrypt::Engine.hash_secret(false, @salt) }.should_not raise_error(BCrypt::Errors::InvalidSecret)
60
+ expect { BCrypt::Engine.hash_secret(MyInvalidSecret.new, @salt) }.to raise_error(BCrypt::Errors::InvalidSecret)
61
+ expect { BCrypt::Engine.hash_secret(nil, @salt) }.not_to raise_error
62
+ expect { BCrypt::Engine.hash_secret(false, @salt) }.not_to raise_error
63
63
  end
64
64
 
65
65
  specify "should call #to_s on the secret and use the return value as the actual secret data" do
66
- BCrypt::Engine.hash_secret(false, @salt).should == BCrypt::Engine.hash_secret("false", @salt)
66
+ expect(BCrypt::Engine.hash_secret(false, @salt)).to eq BCrypt::Engine.hash_secret("false", @salt)
67
67
  end
68
68
 
69
69
  specify "should be interoperable with other implementations" do
@@ -76,7 +76,7 @@ describe "Generating BCrypt hashes" do
76
76
  ["0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", "$2a$05$abcdefghijklmnopqrstuu", "$2a$05$abcdefghijklmnopqrstuu5s2v8.iXieOjg/.AySBTTZIIVFJeBui"]
77
77
  ]
78
78
  for secret, salt, test_vector in test_vectors
79
- BCrypt::Engine.hash_secret(secret, salt).should eql(test_vector)
79
+ expect(BCrypt::Engine.hash_secret(secret, salt)).to eql(test_vector)
80
80
  end
81
81
  end
82
82
  end
@@ -4,13 +4,13 @@ describe "Errors" do
4
4
 
5
5
  shared_examples "descends from StandardError" do
6
6
  it "can be rescued as a StandardError" do
7
- described_class.should < StandardError
7
+ expect(described_class).to be < StandardError
8
8
  end
9
9
  end
10
10
 
11
11
  shared_examples "descends from BCrypt::Error" do
12
12
  it "can be rescued as a BCrypt::Error" do
13
- described_class.should < BCrypt::Error
13
+ expect(described_class).to be < BCrypt::Error
14
14
  end
15
15
  end
16
16
 
@@ -8,23 +8,23 @@ describe "Creating a hashed password" do
8
8
  end
9
9
 
10
10
  specify "should return a BCrypt::Password" do
11
- @password.should be_an_instance_of(BCrypt::Password)
11
+ expect(@password).to be_an_instance_of(BCrypt::Password)
12
12
  end
13
13
 
14
14
  specify "should return a valid bcrypt password" do
15
- lambda { BCrypt::Password.new(@password) }.should_not raise_error
15
+ expect { BCrypt::Password.new(@password) }.not_to raise_error
16
16
  end
17
17
 
18
18
  specify "should behave normally if the secret is not a string" do
19
- lambda { BCrypt::Password.create(nil) }.should_not raise_error(BCrypt::Errors::InvalidSecret)
20
- lambda { BCrypt::Password.create({:woo => "yeah"}) }.should_not raise_error(BCrypt::Errors::InvalidSecret)
21
- lambda { BCrypt::Password.create(false) }.should_not raise_error(BCrypt::Errors::InvalidSecret)
19
+ expect { BCrypt::Password.create(nil) }.not_to raise_error
20
+ expect { BCrypt::Password.create({:woo => "yeah"}) }.not_to raise_error
21
+ expect { BCrypt::Password.create(false) }.not_to raise_error
22
22
  end
23
23
 
24
24
  specify "should tolerate empty string secrets" do
25
- lambda { BCrypt::Password.create( "\n".chop ) }.should_not raise_error
26
- lambda { BCrypt::Password.create( "" ) }.should_not raise_error
27
- lambda { BCrypt::Password.create( String.new ) }.should_not raise_error
25
+ expect { BCrypt::Password.create( "\n".chop ) }.not_to raise_error
26
+ expect { BCrypt::Password.create( "" ) }.not_to raise_error
27
+ expect { BCrypt::Password.create( String.new ) }.not_to raise_error
28
28
  end
29
29
  end
30
30
 
@@ -35,26 +35,26 @@ describe "Reading a hashed password" do
35
35
  end
36
36
 
37
37
  specify "the cost is too damn high" do
38
- lambda {
38
+ expect {
39
39
  BCrypt::Password.create("hello", :cost => 32)
40
- }.should raise_error(ArgumentError)
40
+ }.to raise_error(ArgumentError)
41
41
  end
42
42
 
43
43
  specify "the cost should be set to the default if nil" do
44
- BCrypt::Password.create("hello", :cost => nil).cost.should equal(BCrypt::Engine::DEFAULT_COST)
44
+ expect(BCrypt::Password.create("hello", :cost => nil).cost).to equal(BCrypt::Engine::DEFAULT_COST)
45
45
  end
46
46
 
47
47
  specify "the cost should be set to the default if empty hash" do
48
- BCrypt::Password.create("hello", {}).cost.should equal(BCrypt::Engine::DEFAULT_COST)
48
+ expect(BCrypt::Password.create("hello", {}).cost).to equal(BCrypt::Engine::DEFAULT_COST)
49
49
  end
50
50
 
51
51
  specify "the cost should be set to the passed value if provided" do
52
- BCrypt::Password.create("hello", :cost => 5).cost.should equal(5)
52
+ expect(BCrypt::Password.create("hello", :cost => 5).cost).to equal(5)
53
53
  end
54
54
 
55
55
  specify "the cost should be set to the global value if set" do
56
56
  BCrypt::Engine.cost = 5
57
- BCrypt::Password.create("hello").cost.should equal(5)
57
+ expect(BCrypt::Password.create("hello").cost).to equal(5)
58
58
  # unset the global value to not affect other tests
59
59
  BCrypt::Engine.cost = nil
60
60
  end
@@ -65,7 +65,7 @@ describe "Reading a hashed password" do
65
65
  old_default_cost = BCrypt::Engine::DEFAULT_COST
66
66
 
67
67
  BCrypt::Engine::DEFAULT_COST = 5
68
- BCrypt::Password.create("hello").cost.should equal(5)
68
+ expect(BCrypt::Password.create("hello").cost).to equal(5)
69
69
 
70
70
  # reset default to not affect other tests
71
71
  BCrypt::Engine::DEFAULT_COST = old_default_cost
@@ -74,17 +74,17 @@ describe "Reading a hashed password" do
74
74
 
75
75
  specify "should read the version, cost, salt, and hash" do
76
76
  password = BCrypt::Password.new(@hash)
77
- password.version.should eql("2a")
78
- password.cost.should equal(5)
79
- password.salt.should eql("$2a$05$CCCCCCCCCCCCCCCCCCCCC.")
80
- password.salt.class.should eq String
81
- password.checksum.should eq("E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW")
82
- password.checksum.class.should eq String
83
- password.to_s.should eql(@hash)
77
+ expect(password.version).to eql("2a")
78
+ expect(password.cost).to equal(5)
79
+ expect(password.salt).to eql("$2a$05$CCCCCCCCCCCCCCCCCCCCC.")
80
+ expect(password.salt.class).to eq String
81
+ expect(password.checksum).to eq("E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW")
82
+ expect(password.checksum.class).to eq String
83
+ expect(password.to_s).to eql(@hash)
84
84
  end
85
85
 
86
86
  specify "should raise an InvalidHashError when given an invalid hash" do
87
- lambda { BCrypt::Password.new('weedle') }.should raise_error(BCrypt::Errors::InvalidHash)
87
+ expect { BCrypt::Password.new('weedle') }.to raise_error(BCrypt::Errors::InvalidHash)
88
88
  end
89
89
  end
90
90
 
@@ -96,28 +96,28 @@ describe "Comparing a hashed password with a secret" do
96
96
  end
97
97
 
98
98
  specify "should compare successfully to the original secret" do
99
- (@password == @secret).should be(true)
99
+ expect((@password == @secret)).to be(true)
100
100
  end
101
101
 
102
102
  specify "should compare unsuccessfully to anything besides original secret" do
103
- (@password == "@secret").should be(false)
103
+ expect((@password == "@secret")).to be(false)
104
104
  end
105
105
  end
106
106
 
107
107
  describe "Validating a generated salt" do
108
108
  specify "should not accept an invalid salt" do
109
- BCrypt::Engine.valid_salt?("invalid").should eq(false)
109
+ expect(BCrypt::Engine.valid_salt?("invalid")).to eq(false)
110
110
  end
111
111
  specify "should accept a valid salt" do
112
- BCrypt::Engine.valid_salt?(BCrypt::Engine.generate_salt).should eq(true)
112
+ expect(BCrypt::Engine.valid_salt?(BCrypt::Engine.generate_salt)).to eq(true)
113
113
  end
114
114
  end
115
115
 
116
116
  describe "Validating a password hash" do
117
117
  specify "should not accept an invalid password" do
118
- BCrypt::Password.valid_hash?("i_am_so_not_valid").should be_false
118
+ expect(BCrypt::Password.valid_hash?("i_am_so_not_valid")).to be_falsey
119
119
  end
120
120
  specify "should accept a valid password" do
121
- BCrypt::Password.valid_hash?(BCrypt::Password.create "i_am_so_valid").should be_true
121
+ expect(BCrypt::Password.valid_hash?(BCrypt::Password.create "i_am_so_valid")).to be_truthy
122
122
  end
123
123
  end
metadata CHANGED
@@ -1,54 +1,65 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: bcrypt
3
- version: !ruby/object:Gem::Version
4
- version: 3.1.7
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.1.8
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Coda Hale
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
-
12
- date: 2014-02-25 00:00:00 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
11
+ date: 2014-10-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
15
14
  name: rake-compiler
16
- prerelease: false
17
- requirement: &id001 !ruby/object:Gem::Requirement
18
- requirements:
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
19
17
  - - ~>
20
- - !ruby/object:Gem::Version
18
+ - !ruby/object:Gem::Version
21
19
  version: 0.9.2
22
20
  type: :development
23
- version_requirements: *id001
24
- - !ruby/object:Gem::Dependency
25
- name: rspec
26
21
  prerelease: false
27
- requirement: &id002 !ruby/object:Gem::Requirement
28
- requirements:
29
- - &id004
30
- - ">="
31
- - !ruby/object:Gem::Version
32
- version: "0"
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 0.9.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '3'
33
34
  type: :development
34
- version_requirements: *id002
35
- - !ruby/object:Gem::Dependency
36
- name: rdoc
37
35
  prerelease: false
38
- requirement: &id003 !ruby/object:Gem::Requirement
39
- requirements:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rdoc
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
40
45
  - - ~>
41
- - !ruby/object:Gem::Version
42
- version: "3.12"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.12'
43
48
  type: :development
44
- version_requirements: *id003
45
- description: " bcrypt() is a sophisticated and secure hash algorithm designed by The OpenBSD project\n for hashing passwords. The bcrypt Ruby gem provides a simple wrapper for safely handling\n passwords.\n"
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '3.12'
55
+ description: ! " bcrypt() is a sophisticated and secure hash algorithm designed
56
+ by The OpenBSD project\n for hashing passwords. The bcrypt Ruby gem provides
57
+ a simple wrapper for safely handling\n passwords.\n"
46
58
  email: coda.hale@gmail.com
47
59
  executables: []
48
-
49
- extensions:
60
+ extensions:
50
61
  - ext/mri/extconf.rb
51
- extra_rdoc_files:
62
+ extra_rdoc_files:
52
63
  - README.md
53
64
  - COPYING
54
65
  - CHANGELOG
@@ -56,7 +67,7 @@ extra_rdoc_files:
56
67
  - lib/bcrypt/error.rb
57
68
  - lib/bcrypt/password.rb
58
69
  - lib/bcrypt.rb
59
- files:
70
+ files:
60
71
  - .gitignore
61
72
  - .rspec
62
73
  - .travis.yml
@@ -86,32 +97,33 @@ files:
86
97
  - spec/bcrypt/password_spec.rb
87
98
  - spec/spec_helper.rb
88
99
  homepage: https://github.com/codahale/bcrypt-ruby
89
- licenses:
100
+ licenses:
90
101
  - MIT
91
102
  metadata: {}
92
-
93
103
  post_install_message:
94
- rdoc_options:
104
+ rdoc_options:
95
105
  - --title
96
106
  - bcrypt-ruby
97
107
  - --line-numbers
98
108
  - --inline-source
99
109
  - --main
100
110
  - README.md
101
- require_paths:
111
+ require_paths:
102
112
  - lib
103
- required_ruby_version: !ruby/object:Gem::Requirement
104
- requirements:
105
- - *id004
106
- required_rubygems_version: !ruby/object:Gem::Requirement
107
- requirements:
108
- - *id004
113
+ required_ruby_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ required_rubygems_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ! '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
109
123
  requirements: []
110
-
111
124
  rubyforge_project:
112
- rubygems_version: 2.0.14
125
+ rubygems_version: 2.2.2
113
126
  signing_key:
114
127
  specification_version: 4
115
128
  summary: OpenBSD's bcrypt() password hashing algorithm.
116
129
  test_files: []
117
-