bcrypt_pbkdf 1.0.1.rc1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 94d1258a828fbd07a77a5e3d4163f0424660b203
4
- data.tar.gz: 37123cada0cc78feeea6429e2e3c7b1dcf39ce08
2
+ SHA256:
3
+ metadata.gz: 63ac8948f4ecd73d2450a88ffe9c4cba42c00046ac292841be016965eb5834e4
4
+ data.tar.gz: 34bf1a1d2025f60d29db8dacb052df7264262cd22f5d0b480d0fdafe01fe8f8c
5
5
  SHA512:
6
- metadata.gz: 7ed28b98430c90c2f358f46c5b9bdd7de427c5960bbce793f7ac75ab19a9a0b2ebc7ee68d5bdae567dbc82a83ebbded56883499b569d88e2b94df34f69f656fc
7
- data.tar.gz: eef606967079c0911a83a857512777f07df20b706cedfa6db272e3dfc15ae92a6f46989ab2eb813c03ffc613e0e28df158444a7df68568986c972369125d6966
6
+ metadata.gz: 37d7691812403f03b69d32fe8ad1539fa94368df4cf94b2dce9821b516727c3252f7e26f62f4f08fd3eb60f09e01b5ff734b6484aa86e85d4d80884498dd209a
7
+ data.tar.gz: 7f4e906f1f7a1b14008b789f23d2e0e3bab121c405051b41fd472193d1c38bd12e132e51177a0e3c84a45e47ecebc4021d3dc878fadfbc17e56a06883ea75e68
@@ -1,8 +1,11 @@
1
1
  language: ruby
2
+ arch:
3
+ - amd64
4
+ - ppc64le
2
5
  rvm:
3
- - 2.0.0
4
- - 2.1.0
5
- - 2.2.0
6
6
  - 2.3.0
7
- - rbx-2
7
+ - 2.4.0
8
+ - 2.5.0
9
+ - 2.6.0
10
+ - 2.7.0
8
11
  script: bundle exec rake
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # bcrypt_pdkfd-ruby
1
+ # bcrypt_pbkdf-ruby
2
2
 
3
- bcrypt_pdkfd is a ruby gem implementing bcrypt_pdkfd from OpenBSD. This is currently used by net-ssh to read password encrypted Ed25519 keys.
3
+ bcrypt_pbkdf is a ruby gem implementing bcrypt_pbkdf from OpenBSD. This is currently used by net-ssh to read password encrypted Ed25519 keys.
4
4
 
5
5
  [![Build Status](https://travis-ci.org/mfazekas/bcrypt_pbkdf-ruby.png?branch=master)](https://travis-ci.org/mfazekas/bcrypt_pbkdf-ruby)
6
6
 
@@ -13,3 +13,20 @@ bcrypt_pdkfd is a ruby gem implementing bcrypt_pdkfd from OpenBSD. This is curre
13
13
 
14
14
  http://www.tedunangst.com/flak/post/bcrypt-pbkdf
15
15
  http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libutil/bcrypt_pbkdf.c?rev=1.13&content-type=text/x-cvsweb-markup
16
+
17
+ # Building
18
+
19
+ For windows cross build make sure you checked out the gem source under the home directory
20
+
21
+ ```sh
22
+ gem install rake-compiler-dock
23
+ ```
24
+
25
+ ```sh
26
+ bundle exec rake compile
27
+ bundle exec rake test
28
+ bundle exec rake clean clobber
29
+ bundle exec rake gem:windows
30
+ bundle exec rake release
31
+ bundle exec rake gem:windows:release
32
+ ```
data/Rakefile CHANGED
@@ -1,14 +1,23 @@
1
1
  require 'rake/testtask'
2
2
  require 'rubygems/package_task'
3
+ require 'bundler/gem_tasks'
3
4
  require 'rake/extensiontask'
4
5
  require 'rake/clean'
5
6
  require 'rdoc/task'
6
7
  require 'benchmark'
7
8
 
9
+
8
10
  CLEAN.include(
9
11
  "tmp",
10
12
  "lib/2.0",
11
13
  "lib/2.1",
14
+ "lib/2.2",
15
+ "lib/2.3",
16
+ "lib/2.4",
17
+ "lib/2.5",
18
+ "lib/2.6",
19
+ "lib/2.7",
20
+ "lib/3.0",
12
21
  "lib/bcrypt_pbkdf_ext.so"
13
22
  )
14
23
  CLOBBER.include(
@@ -18,7 +27,14 @@ CLOBBER.include(
18
27
 
19
28
  task 'gem:windows' do
20
29
  require 'rake_compiler_dock'
21
- RakeCompilerDock.sh "bundle && rake cross native gem RUBY_CC_VERSION=2.3.0:2.2.2:2.1.6:2.0.0"
30
+ sh "bundle package" # Avoid repeated downloads of gems by using gem files from the host.
31
+ RakeCompilerDock.sh "bundle && rake cross native gem RUBY_CC_VERSION=3.0.0:2.7.0:2.6.0:2.5.0:2.4.0:2.3.0:2.2.2:2.1.6:2.0.0"
32
+ end
33
+
34
+ task 'gem:windows:release' do
35
+ version = Gem::Specification::load("bcrypt_pbkdf.gemspec").version
36
+ sh "gem push pkg/bcrypt_pbkdf-#{version}-x86-mingw32.gem"
37
+ sh "gem push pkg/bcrypt_pbkdf-#{version}-x64-mingw32.gem"
22
38
  end
23
39
 
24
40
  GEMSPEC = Gem::Specification.load("bcrypt_pbkdf.gemspec")
@@ -27,7 +43,7 @@ task :default => [:compile, :spec]
27
43
 
28
44
  desc "Run all tests"
29
45
  Rake::TestTask.new do |t|
30
- #t.pattern =
46
+ #t.pattern =
31
47
  t.test_files = FileList['test/**/*_test.rb']
32
48
  t.ruby_opts = ['-w']
33
49
  t.libs << "test"
@@ -1,21 +1,20 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'bcrypt_pbkdf'
3
- s.version = '1.0.1.rc1'
3
+ s.version = '1.1.0'
4
4
 
5
- s.summary = "OpenBSD's bcrypt_pdkfd (a variant of PBKDF2 with bcrypt-based PRF)"
5
+ s.summary = "OpenBSD's bcrypt_pbkdf (a variant of PBKDF2 with bcrypt-based PRF)"
6
6
  s.description = <<-EOF
7
- This gem implements bcrypt_pdkfd (a variant of PBKDF2 with bcrypt-based PRF)
7
+ This gem implements bcrypt_pbkdf (a variant of PBKDF2 with bcrypt-based PRF)
8
8
  EOF
9
9
 
10
10
  s.files = `git ls-files`.split("\n")
11
11
  s.require_path = 'lib'
12
12
 
13
- s.add_development_dependency 'rake-compiler', '~> 0.9.7'
13
+ s.add_development_dependency 'rake-compiler', '~> 1.1.0'
14
14
  s.add_development_dependency 'minitest', '>= 5'
15
- s.add_development_dependency 'rbnacl', '~> 3.3'
16
- s.add_development_dependency 'rbnacl-libsodium', '~> 1.0.8'
15
+ s.add_development_dependency 'openssl'
17
16
  s.add_development_dependency 'rdoc', '~> 3.12'
18
- s.add_development_dependency 'rake-compiler-dock', '~> 0.5.3'
17
+ s.add_development_dependency 'rake-compiler-dock', '~> 1.0.1'
19
18
 
20
19
  s.has_rdoc = true
21
20
  s.rdoc_options += ['--title', 'bcrypt_pbkdf', '--line-numbers', '--inline-source', '--main', 'README.md']
@@ -8,7 +8,7 @@ static VALUE cBCryptPbkdfEngine;
8
8
  */
9
9
  static VALUE bc_crypt_pbkdf(VALUE self, VALUE pass, VALUE salt, VALUE keylen, VALUE rounds) {
10
10
  size_t okeylen = NUM2ULONG(keylen);
11
- u_int8_t* okey = xmalloc(keylen);
11
+ u_int8_t* okey = xmalloc(okeylen);
12
12
  VALUE out;
13
13
 
14
14
  int ret = bcrypt_pbkdf(
@@ -7,7 +7,7 @@
7
7
  #endif
8
8
  #define SHA512_DIGEST_LENGTH crypto_hash_sha512_BYTES
9
9
 
10
- inline void SHA512Init(SHA2_CTX* ctx) { crypto_hash_sha512_init(ctx); }
11
- inline void SHA512Update(SHA2_CTX* ctx, const void *in, size_t inlen) { crypto_hash_sha512_update(ctx, in, inlen); }
12
- inline void SHA512Final(uint8_t* out, SHA2_CTX* ctx) { crypto_hash_sha512_final(ctx, out); }
10
+ inline static void SHA512Init(SHA2_CTX* ctx) { crypto_hash_sha512_init(ctx); }
11
+ inline static void SHA512Update(SHA2_CTX* ctx, const void *in, size_t inlen) { crypto_hash_sha512_update(ctx, in, inlen); }
12
+ inline static void SHA512Final(uint8_t* out, SHA2_CTX* ctx) { crypto_hash_sha512_final(ctx, out); }
13
13
 
@@ -1,10 +1,8 @@
1
1
  require 'minitest/autorun'
2
2
  require 'test_helper'
3
3
 
4
- # bcrypt_pbkdf in ruby using libsodium
5
- require 'rbnacl/libsodium'
6
- require 'rbnacl'
7
- require 'rbnacl/hash'
4
+ # bcrypt_pbkdf in ruby
5
+ require 'openssl'
8
6
 
9
7
  BCRYPT_BLOCKS = 8
10
8
  BCRYPT_HASHSIZE = BCRYPT_BLOCKS * 4
@@ -13,7 +11,7 @@ def bcrypt_pbkdf(password, salt, keylen, rounds)
13
11
  stride = (keylen + BCRYPT_HASHSIZE - 1) / BCRYPT_HASHSIZE
14
12
  amt = (keylen + stride - 1) / stride
15
13
 
16
- sha2pass = RbNaCl::Hash.sha512(password)
14
+ sha2pass = OpenSSL::Digest::SHA512.new(password).digest
17
15
  #puts "[RB] sha2pass:#{sha2pass.inspect} #{sha2pass.size}"
18
16
 
19
17
  remlen = keylen
@@ -32,13 +30,13 @@ def bcrypt_pbkdf(password, salt, keylen, rounds)
32
30
  countsalt[saltlen + 3] = (count & 0xff).chr
33
31
  #puts "[RC] countsalt: #{countsalt.inspect} len:#{countsalt.size}"
34
32
 
35
- sha2salt = RbNaCl::Hash.sha512(countsalt)
33
+ sha2salt = OpenSSL::Digest::SHA512.new(countsalt).digest
36
34
  tmpout = BCryptPbkdf::Engine::__bc_crypt_hash(sha2pass, sha2salt)
37
35
  out = tmpout.clone
38
36
 
39
37
  #puts "[RB] out: #{out.inspect} keylen:#{remlen} count:#{count}"
40
38
  (1...rounds).each do |i|
41
- sha2salt = RbNaCl::Hash.sha512(tmpout)
39
+ sha2salt = OpenSSL::Digest::SHA512.new(tmpout).digest
42
40
  tmpout = BCryptPbkdf::Engine::__bc_crypt_hash(sha2pass, sha2salt)
43
41
  out.bytes.each_with_index {|o,j| out.setbyte(j,o ^ tmpout[j].ord) }
44
42
  end
@@ -48,7 +46,7 @@ def bcrypt_pbkdf(password, salt, keylen, rounds)
48
46
  dest = i * stride + (count -1)
49
47
  key[dest] = out[i] if (dest < keylen)
50
48
  end
51
-
49
+
52
50
  remlen -= amt
53
51
  count += 1
54
52
  end
@@ -66,13 +64,13 @@ class TestExt < MiniTest::Unit::TestCase
66
64
  assert_equal bcrypt_pbkdf(p,s,l,r), BCryptPbkdf::key(p,s,l,r)
67
65
  end
68
66
  end
69
-
67
+
70
68
 
71
69
  def table
72
70
  [
73
- ["pass2", "salt2", 12, 2, [214, 14, 48, 162, 131, 206, 121, 176, 50, 104, 231, 252]],
71
+ ["pass2", "salt2", 12, 2, [214, 14, 48, 162, 131, 206, 121, 176, 50, 104, 231, 252]],
74
72
  ["\u0000\u0001foo", "\u0001\u0002fooo3", 14, 5, [46, 189, 32, 185, 94, 85, 232, 10, 84, 26, 44, 161, 49, 126]],
75
73
  ["doozoasd", "fooo$AS!", 14, 22, [57, 62, 50, 107, 70, 155, 65, 5, 129, 211, 189, 169, 188, 65]]
76
74
  ]
77
75
  end
78
- end
76
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bcrypt_pbkdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1.rc1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miklos Fazekas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-04 00:00:00.000000000 Z
11
+ date: 2020-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.9.7
19
+ version: 1.1.0
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.9.7
26
+ version: 1.1.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -39,33 +39,19 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '5'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rbnacl
42
+ name: openssl
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '3.3'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '3.3'
55
- - !ruby/object:Gem::Dependency
56
- name: rbnacl-libsodium
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
45
+ - - ">="
60
46
  - !ruby/object:Gem::Version
61
- version: 1.0.8
47
+ version: '0'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - "~>"
52
+ - - ">="
67
53
  - !ruby/object:Gem::Version
68
- version: 1.0.8
54
+ version: '0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: rdoc
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -86,15 +72,15 @@ dependencies:
86
72
  requirements:
87
73
  - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: 0.5.3
75
+ version: 1.0.1
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: 0.5.3
97
- description: " This gem implements bcrypt_pdkfd (a variant of PBKDF2 with bcrypt-based
82
+ version: 1.0.1
83
+ description: " This gem implements bcrypt_pbkdf (a variant of PBKDF2 with bcrypt-based
98
84
  PRF)\n"
99
85
  email: mfazekas@szemafor.com
100
86
  executables: []
@@ -110,7 +96,6 @@ files:
110
96
  - CHANGELOG.md
111
97
  - COPYING
112
98
  - Gemfile
113
- - Gemfile.lock
114
99
  - README.md
115
100
  - Rakefile
116
101
  - bcrypt_pbkdf.gemspec
@@ -151,13 +136,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
151
136
  version: '0'
152
137
  required_rubygems_version: !ruby/object:Gem::Requirement
153
138
  requirements:
154
- - - ">"
139
+ - - ">="
155
140
  - !ruby/object:Gem::Version
156
- version: 1.3.1
141
+ version: '0'
157
142
  requirements: []
158
- rubyforge_project:
159
- rubygems_version: 2.5.2.3
143
+ rubygems_version: 3.0.3
160
144
  signing_key:
161
145
  specification_version: 4
162
- summary: OpenBSD's bcrypt_pdkfd (a variant of PBKDF2 with bcrypt-based PRF)
146
+ summary: OpenBSD's bcrypt_pbkdf (a variant of PBKDF2 with bcrypt-based PRF)
163
147
  test_files: []
@@ -1,36 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- bcrypt_pbkdf (1.0.1.rc1)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- ffi (1.9.10)
10
- json (1.8.3)
11
- minitest (5.8.3)
12
- rake (11.1.1)
13
- rake-compiler (0.9.7)
14
- rake
15
- rake-compiler-dock (0.5.3)
16
- rbnacl (3.3.0)
17
- ffi
18
- rbnacl-libsodium (1.0.8)
19
- rbnacl (~> 3.0, >= 3.0.1)
20
- rdoc (3.12.2)
21
- json (~> 1.4)
22
-
23
- PLATFORMS
24
- ruby
25
-
26
- DEPENDENCIES
27
- bcrypt_pbkdf!
28
- minitest (>= 5)
29
- rake-compiler (~> 0.9.7)
30
- rake-compiler-dock (~> 0.5.3)
31
- rbnacl (~> 3.3)
32
- rbnacl-libsodium (~> 1.0.8)
33
- rdoc (~> 3.12)
34
-
35
- BUNDLED WITH
36
- 1.17.1