bcrypt-ruby 2.1.3 → 2.1.4

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.
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'bcrypt-ruby'
3
- s.version = '2.1.3'
3
+ s.version = '2.1.4'
4
4
 
5
5
  s.summary = "OpenBSD's bcrypt() password hashing algorithm."
6
6
  s.description = <<-EOF
@@ -63,7 +63,7 @@ import java.security.SecureRandom;
63
63
  */
64
64
  public class BCrypt {
65
65
  // BCrypt parameters
66
- private static int GENSALT_DEFAULT_LOG2_ROUNDS = 10;
66
+ private static final int GENSALT_DEFAULT_LOG2_ROUNDS = 10;
67
67
  private static final int BCRYPT_SALT_LEN = 16;
68
68
 
69
69
  // Blowfish parameters
@@ -655,13 +655,14 @@ public class BCrypt {
655
655
 
656
656
  if (salt.charAt(0) != '$' || salt.charAt(1) != '2')
657
657
  throw new IllegalArgumentException ("Invalid salt version");
658
- if (salt.charAt(1) != '$') {
658
+ if (salt.charAt(2) == '$')
659
+ off = 3;
660
+ else {
659
661
  minor = salt.charAt(2);
660
662
  if (minor != 'a' || salt.charAt(3) != '$')
661
663
  throw new IllegalArgumentException ("Invalid salt revision");
662
664
  off = 4;
663
- } else
664
- off = 3;
665
+ }
665
666
 
666
667
  // Extract number of rounds
667
668
  if (salt.charAt(off + 2) > '$')
@@ -670,10 +671,9 @@ public class BCrypt {
670
671
 
671
672
  real_salt = salt.substring(off + 3, off + 25);
672
673
  try {
673
- passwordb = (password + (minor >= 'a' ? "\000" : "")).getBytes("US-ASCII");
674
+ passwordb = (password + (minor >= 'a' ? "\000" : "")).getBytes("UTF-8");
674
675
  } catch (UnsupportedEncodingException uee) {
675
- // The JDK guarantees that US-ASCII is supported.
676
- throw new AssertionError("US-ASCII is not supported");
676
+ throw new AssertionError("UTF-8 is not supported");
677
677
  }
678
678
 
679
679
  saltb = decode_base64(real_salt, BCRYPT_SALT_LEN);
@@ -172,4 +172,23 @@ public class TestBCrypt extends TestCase {
172
172
  }
173
173
  System.out.println("");
174
174
  }
175
+
176
+ /**
177
+ * Test for correct hashing of non-US-ASCII passwords
178
+ */
179
+ public void testInternationalChars() {
180
+ System.out.print("BCrypt.hashpw w/ international chars: ");
181
+ String pw1 = "ππππππππ";
182
+ String pw2 = "????????";
183
+
184
+ String h1 = BCrypt.hashpw(pw1, BCrypt.gensalt());
185
+ assertFalse(BCrypt.checkpw(pw2, h1));
186
+ System.out.print(".");
187
+
188
+ String h2 = BCrypt.hashpw(pw2, BCrypt.gensalt());
189
+ assertFalse(BCrypt.checkpw(pw1, h2));
190
+ System.out.print(".");
191
+ System.out.println("");
192
+ }
193
+
175
194
  }
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bcrypt-ruby
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 3
5
+ prerelease:
5
6
  segments:
6
7
  - 2
7
8
  - 1
8
- - 3
9
- version: 2.1.3
9
+ - 4
10
+ version: 2.1.4
10
11
  platform: ruby
11
12
  authors:
12
13
  - Coda Hale
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-12-20 00:00:00 -08:00
18
+ date: 2011-01-08 00:00:00 -08:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: rake-compiler
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 3
27
30
  segments:
28
31
  - 0
29
32
  version: "0"
@@ -33,9 +36,11 @@ dependencies:
33
36
  name: rspec
34
37
  prerelease: false
35
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
36
40
  requirements:
37
41
  - - ">="
38
42
  - !ruby/object:Gem::Version
43
+ hash: 3
39
44
  segments:
40
45
  - 0
41
46
  version: "0"
@@ -88,23 +93,27 @@ rdoc_options:
88
93
  require_paths:
89
94
  - lib
90
95
  required_ruby_version: !ruby/object:Gem::Requirement
96
+ none: false
91
97
  requirements:
92
98
  - - ">="
93
99
  - !ruby/object:Gem::Version
100
+ hash: 3
94
101
  segments:
95
102
  - 0
96
103
  version: "0"
97
104
  required_rubygems_version: !ruby/object:Gem::Requirement
105
+ none: false
98
106
  requirements:
99
107
  - - ">="
100
108
  - !ruby/object:Gem::Version
109
+ hash: 3
101
110
  segments:
102
111
  - 0
103
112
  version: "0"
104
113
  requirements: []
105
114
 
106
115
  rubyforge_project: bcrypt-ruby
107
- rubygems_version: 1.3.6
116
+ rubygems_version: 1.4.0
108
117
  signing_key:
109
118
  specification_version: 3
110
119
  summary: OpenBSD's bcrypt() password hashing algorithm.