argon2id 0.7.0-x64-mingw-ucrt → 0.8.0.rc1-x64-mingw-ucrt

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
2
  SHA256:
3
- metadata.gz: fe40a011ddccdbc2ebb6856704b5442180f2414b5ee3101a7953715f891ba0f3
4
- data.tar.gz: fe8532d266ac9245174d3de13513c70e957cb1c11f5ceab196a269e8338f4031
3
+ metadata.gz: 1524dd7f7ae1c0eafafb08499ba1815967be413f0694ce0a28c61ab6cdc038ae
4
+ data.tar.gz: 58c2e6957ce1ff93a13d09e80b5abc4ee98bf4fbd11ebc6ce1300fc3550a4dab
5
5
  SHA512:
6
- metadata.gz: 1554613d298bedebea3eb86a059be6bd3210cbd9c13fccdfc156d7d874ffeecaaf82f5f8c2e515001684557884c8bfa77d28feb43573de51132e0555bf52b705
7
- data.tar.gz: e0bf4231265949e306f9486e45e46975c86107655743cc1c1965b17daa6d146a36bc2701f57af6dbb07a1e6787de6920d2123cd19f3e1457c530d93765c32488
6
+ metadata.gz: ec8958fe08e0210b20f6003d90824d47460ba0c95b6c38422a51267d537704654b608d664ab4202fe78e4ce0a2df1de6308f7432663c5f6ebcefaac7e08ce747
7
+ data.tar.gz: ef8789bfdff999c67fe4df64f8c60a52973624099f1be221a5111fb77fa1eb6c7e996bfc19eeccbb9e66e02866036d79b493719f35ad3d4eef894582a56d6d7a
data/CHANGELOG.md CHANGED
@@ -5,6 +5,23 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.8.0.rc1] - 2024-12-16
9
+
10
+ ### Added
11
+
12
+ - Add Ruby 3.4.0-rc1 support to the precompiled, native gems
13
+
14
+ ### Changed
15
+
16
+ - Provide separate precompiled, native gems for GNU and Musl
17
+ - Require glibc 2.29+ for x86-linux-gnu and x86_64-linux-gnu (and recommend
18
+ RubyGems 3.3.22+ and Bundler 2.3.21+)
19
+
20
+ ### Removed
21
+
22
+ - Drop support for Ruby versions older than 3.1 as they do not ship with a
23
+ version of RubyGems new enough to handle the new Musl gems
24
+
8
25
  ## [0.7.0] - 2024-11-08
9
26
 
10
27
  ### Fixed
@@ -111,6 +128,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
111
128
  reference C implementation of Argon2, the password-hashing function that won
112
129
  the Password Hashing Competition.
113
130
 
131
+ [0.8.0.rc1]: https://github.com/mudge/argon2id/releases/tag/v0.8.0.rc1
114
132
  [0.7.0]: https://github.com/mudge/argon2id/releases/tag/v0.7.0
115
133
  [0.6.0]: https://github.com/mudge/argon2id/releases/tag/v0.6.0
116
134
  [0.5.0]: https://github.com/mudge/argon2id/releases/tag/v0.5.0
data/README.md CHANGED
@@ -5,7 +5,7 @@ Ruby bindings to [Argon2][], the password-hashing function that won the 2015
5
5
 
6
6
  [![Build Status](https://github.com/mudge/argon2id/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/mudge/argon2id/actions)
7
7
 
8
- **Current version:** 0.7.0
8
+ **Current version:** 0.8.0.rc1
9
9
  **Bundled Argon2 version:** libargon2.1 (20190702)
10
10
 
11
11
  ```ruby
@@ -28,6 +28,7 @@ password.salt #=> "e-\xA7\x04U\x81\xA6{v\xF0x\xED\xCC\xD3\x96\xE3"
28
28
  * [Verifying passwords](#verifying-passwords)
29
29
  * [Validating encoded hashes](#validating-encoded-hashes)
30
30
  * [Errors](#errors)
31
+ * [Usage with Active Record](#usage-with-active-record)
31
32
  * [Requirements](#requirements)
32
33
  * [Native gems](#native-gems)
33
34
  * [Verifying the gems](#verifying-the-gems)
@@ -196,11 +197,67 @@ Argon2id::Password.create("password", salt_len: 0)
196
197
  # Salt is too short (Argon2id::Error)
197
198
  ```
198
199
 
200
+ ### Usage with Active Record
201
+
202
+ If you're planning to use this with Active Record instead of [Rails' own
203
+ bcrypt-based
204
+ `has_secure_password`](https://api.rubyonrails.org/v8.0/classes/ActiveModel/SecurePassword/ClassMethods.html),
205
+ you can use the following as a starting point:
206
+
207
+ #### The `User` model
208
+
209
+ ```ruby
210
+ require "argon2id"
211
+
212
+ # Schema: User(name: string, password_digest:string)
213
+ class User < ApplicationRecord
214
+ attr_reader :password
215
+
216
+ validates :password_digest, presence: true
217
+ validates :password, confirmation: true, allow_blank: true
218
+
219
+ def password=(unencrypted_password)
220
+ if unencrypted_password.nil?
221
+ @password = nil
222
+ self.password_digest = nil
223
+ elsif !unencrypted_password.empty?
224
+ @password = unencrypted_password
225
+ self.password_digest = Argon2id::Password.create(unencrypted_password)
226
+ end
227
+ end
228
+
229
+ def authenticate(unencrypted_password)
230
+ password_digest? && Argon2id::Password.new(password_digest).is_password?(unencrypted_password) && self
231
+ end
232
+
233
+ def password_salt
234
+ Argon2id::Password.new(password_digest).salt if password_digest?
235
+ end
236
+ end
237
+ ```
238
+
239
+ This can then be used like so:
240
+
241
+ ```ruby
242
+ user = User.new(name: "alice", password: "", password_confirmation: "diffpassword")
243
+ user.save #=> false, password required
244
+ user.password = "password"
245
+ user.save #=> false, confirmation doesn't match
246
+ user.password_confirmation = "password"
247
+ user.save #=> true
248
+
249
+ user.authenticate("notright") #=> false
250
+ user.authenticate("password") #=> user
251
+
252
+ User.find_by(name: "alice")&.authenticate("notright") #=> false
253
+ User.find_by(name: "alice")&.authenticate("password") #=> user
254
+ ```
255
+
199
256
  ## Requirements
200
257
 
201
258
  This gem requires any of the following to run:
202
259
 
203
- * [Ruby](https://www.ruby-lang.org/en/) 2.6 to 3.3
260
+ * [Ruby](https://www.ruby-lang.org/en/) 3.1 to 3.4.0-rc1
204
261
  * [JRuby](https://www.jruby.org) 9.4
205
262
  * [TruffleRuby](https://www.graalvm.org/ruby/) 24.1
206
263
 
@@ -214,11 +271,10 @@ This gem requires any of the following to run:
214
271
  Where possible, a pre-compiled native gem will be provided for the following platforms:
215
272
 
216
273
  * Linux
217
- * `aarch64-linux` and `arm-linux` (requires [glibc](https://www.gnu.org/software/libc/) 2.29+)
218
- * `x86-linux` and `x86_64-linux` (requires [glibc](https://www.gnu.org/software/libc/) 2.17+)
219
- * [musl](https://musl.libc.org/)-based systems such as [Alpine](https://alpinelinux.org) are supported as long as a [glibc-compatible library is installed](https://wiki.alpinelinux.org/wiki/Running_glibc_programs)
274
+ * `aarch64-linux`, `arm-linux`, `x86-linux`, `x86_64-linux` (requires [glibc](https://www.gnu.org/software/libc/) 2.29+, RubyGems 3.3.22+ and Bundler 2.3.21+)
275
+ * [musl](https://musl.libc.org/)-based systems such as [Alpine](https://alpinelinux.org) are supported with Bundler 2.5.6+
220
276
  * macOS `x86_64-darwin` and `arm64-darwin`
221
- * Windows `x64-mingw32` and `x64-mingw-ucrt`
277
+ * Windows `x64-mingw-ucrt`
222
278
  * Java: any platform running JRuby 9.4 or higher
223
279
 
224
280
  ### Verifying the gems
@@ -228,11 +284,11 @@ notes](https://github.com/mudge/argon2id/releases) for each version and can be
228
284
  checked with `sha256sum`, e.g.
229
285
 
230
286
  ```console
231
- $ gem fetch argon2id -v 0.6.0
232
- Fetching argon2id-0.6.0-arm64-darwin.gem
233
- Downloaded argon2id-0.6.0-arm64-darwin
234
- $ sha256sum argon2id-0.6.0-arm64-darwin.gem
235
- 18f1f04be4b5e7badb4d491762e57874febeeb46c64ce1b0a5e3a75b39b5baeb argon2id-0.6.0-arm64-darwin.gem
287
+ $ gem fetch argon2id -v 0.7.0
288
+ Fetching argon2id-0.7.0-arm64-darwin.gem
289
+ Downloaded argon2id-0.7.0-arm64-darwin
290
+ $ sha256sum argon2id-0.7.0-arm64-darwin.gem
291
+ 26bba5bcefa56827c728222e6df832aef5c8c4f4d3285875859a1d911477ec68 argon2id-0.7.0-arm64-darwin.gem
236
292
  ```
237
293
 
238
294
  [GPG](https://www.gnupg.org/) signatures are attached to each release (the
@@ -242,8 +298,8 @@ from a public keyserver, e.g. `gpg --keyserver keyserver.ubuntu.com --recv-key
242
298
  0x39AC3530070E0F75`):
243
299
 
244
300
  ```console
245
- $ gpg --verify argon2id-0.6.0-arm64-darwin.gem.sig argon2id-0.6.0-arm64-darwin.gem
246
- gpg: Signature made Tue 5 Nov 11:30:47 2024 GMT
301
+ $ gpg --verify argon2id-0.7.0-arm64-darwin.gem.sig argon2id-0.7.0-arm64-darwin.gem
302
+ gpg: Signature made Fri 8 Nov 13:45:18 2024 GMT
247
303
  gpg: using RSA key 702609D9C790F45B577D7BEC39AC3530070E0F75
248
304
  gpg: Good signature from "Paul Mucur <mudge@mudge.name>" [unknown]
249
305
  gpg: aka "Paul Mucur <paul@ghostcassette.com>" [unknown]
data/Rakefile CHANGED
@@ -5,18 +5,22 @@ require "minitest/test_task"
5
5
  CLEAN.add("lib/**/*.{o,so,bundle}", "pkg")
6
6
 
7
7
  cross_platforms = %w[
8
- aarch64-linux
9
- arm-linux
8
+ aarch64-linux-gnu
9
+ aarch64-linux-musl
10
+ arm-linux-gnu
11
+ arm-linux-musl
10
12
  arm64-darwin
11
13
  x64-mingw-ucrt
12
14
  x64-mingw32
13
- x86-linux
15
+ x86-linux-gnu
16
+ x86-linux-musl
14
17
  x86-mingw32
15
18
  x86_64-darwin
16
- x86_64-linux
19
+ x86_64-linux-gnu
20
+ x86_64-linux-musl
17
21
  ].freeze
18
22
 
19
- ENV["RUBY_CC_VERSION"] = %w[3.3.0 3.2.0 3.1.0 3.0.0 2.7.0 2.6.0].join(":")
23
+ ENV["RUBY_CC_VERSION"] = %w[3.4.0 3.3.5 3.2.0 3.1.0].join(":")
20
24
 
21
25
  gemspec = Gem::Specification.load("argon2id.gemspec")
22
26
 
data/argon2id.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  "source_code_uri" => "https://github.com/mudge/argon2id",
19
19
  "rubygems_mfa_required" => "true"
20
20
  }
21
- s.required_ruby_version = ">= 2.6.0"
21
+ s.required_ruby_version = ">= 3.1.0"
22
22
  s.extensions = ["ext/argon2id/extconf.rb"]
23
23
  s.files = [
24
24
  "CHANGELOG.md",
@@ -54,6 +54,6 @@ Gem::Specification.new do |s|
54
54
  s.rdoc_options = ["--main", "README.md"]
55
55
 
56
56
  s.add_development_dependency("rake-compiler", "~> 1.2")
57
- s.add_development_dependency("rake-compiler-dock", "~> 1.5")
57
+ s.add_development_dependency("rake-compiler-dock", "~> 1.7.0.rc1")
58
58
  s.add_development_dependency("minitest", "~> 5.25")
59
59
  end
Binary file
Binary file
Binary file
Binary file
@@ -15,10 +15,11 @@ if RUBY_PLATFORM == "java"
15
15
  output = Java::byte[hashlen].new
16
16
  params = Java::OrgBouncycastleCryptoParams::Argon2Parameters::Builder
17
17
  .new(Java::OrgBouncycastleCryptoParams::Argon2Parameters::ARGON2_id)
18
- .with_salt(salt_bytes)
19
- .with_parallelism(parallelism)
20
- .with_memory_as_kb(m_cost)
18
+ .with_version(Java::OrgBouncycastleCryptoParams::Argon2Parameters::ARGON2_VERSION_13)
21
19
  .with_iterations(t_cost)
20
+ .with_memory_as_kb(m_cost)
21
+ .with_parallelism(parallelism)
22
+ .with_salt(salt_bytes)
22
23
  .build
23
24
  generator = Java::OrgBouncycastleCryptoGenerators::Argon2BytesGenerator.new
24
25
 
@@ -43,11 +44,11 @@ if RUBY_PLATFORM == "java"
43
44
  other_output = Java::byte[output.bytesize].new
44
45
  params = Java::OrgBouncycastleCryptoParams::Argon2Parameters::Builder
45
46
  .new(Java::OrgBouncycastleCryptoParams::Argon2Parameters::ARGON2_id)
46
- .with_salt(salt.to_java_bytes)
47
- .with_parallelism(parallelism)
48
- .with_memory_as_kb(m_cost)
49
- .with_iterations(t_cost)
50
47
  .with_version(version)
48
+ .with_iterations(t_cost)
49
+ .with_memory_as_kb(m_cost)
50
+ .with_parallelism(parallelism)
51
+ .with_salt(salt.to_java_bytes)
51
52
  .build
52
53
  generator = Java::OrgBouncycastleCryptoGenerators::Argon2BytesGenerator.new
53
54
  generator.init(params)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Argon2id
4
- VERSION = "0.7.0"
4
+ VERSION = "0.8.0.rc1"
5
5
  end
@@ -386,6 +386,12 @@ class TestPassword < Minitest::Test
386
386
  assert_instance_of Argon2id::Password, password
387
387
  end
388
388
 
389
+ def test_create_password_uses_version_13
390
+ password = Argon2id::Password.create("password")
391
+
392
+ assert_equal 0x13, password.version
393
+ end
394
+
389
395
  def test_create_password_uses_default_t_cost
390
396
  password = Argon2id::Password.create("password")
391
397
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: argon2id
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0.rc1
5
5
  platform: x64-mingw-ucrt
6
6
  authors:
7
7
  - Paul Mucur
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-08 00:00:00.000000000 Z
11
+ date: 2024-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.5'
33
+ version: 1.7.0.rc1
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.5'
40
+ version: 1.7.0.rc1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -86,6 +86,7 @@ files:
86
86
  - lib/argon2id/3.1/argon2id.so
87
87
  - lib/argon2id/3.2/argon2id.so
88
88
  - lib/argon2id/3.3/argon2id.so
89
+ - lib/argon2id/3.4/argon2id.so
89
90
  - lib/argon2id/extension.rb
90
91
  - lib/argon2id/password.rb
91
92
  - lib/argon2id/version.rb
@@ -114,12 +115,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
115
  version: '3.1'
115
116
  - - "<"
116
117
  - !ruby/object:Gem::Version
117
- version: 3.4.dev
118
+ version: 3.5.dev
118
119
  required_rubygems_version: !ruby/object:Gem::Requirement
119
120
  requirements:
120
- - - ">="
121
+ - - ">"
121
122
  - !ruby/object:Gem::Version
122
- version: '0'
123
+ version: 1.3.1
123
124
  requirements: []
124
125
  rubygems_version: 3.3.26
125
126
  signing_key: