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

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,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fe40a011ddccdbc2ebb6856704b5442180f2414b5ee3101a7953715f891ba0f3
4
- data.tar.gz: fe8532d266ac9245174d3de13513c70e957cb1c11f5ceab196a269e8338f4031
3
+ metadata.gz: b3c3987408bc7b92464ffe4b68948f3ee78489451701c1664027d53a708d9ad5
4
+ data.tar.gz: 936fed9d384572119c7f80001ac52178f27885235888931c50d9f1ff8ba35fa6
5
5
  SHA512:
6
- metadata.gz: 1554613d298bedebea3eb86a059be6bd3210cbd9c13fccdfc156d7d874ffeecaaf82f5f8c2e515001684557884c8bfa77d28feb43573de51132e0555bf52b705
7
- data.tar.gz: e0bf4231265949e306f9486e45e46975c86107655743cc1c1965b17daa6d146a36bc2701f57af6dbb07a1e6787de6920d2123cd19f3e1457c530d93765c32488
6
+ metadata.gz: 454335af39125b979189ad3c1bc50979af33d1912327154c5b6eaffe2cc9b912a795f7ff6ad114708777bcaeecda01f8d0519ed7bd6d99a33999badefd9daf9b
7
+ data.tar.gz: b2a0a5fb70cc90f0044f5d20f332907100ba8693fc8bbb2e6a32f15cf6c0c72a85c79aed4027972861e6e5a4b937a52cd4dbbe324ee28ccbbba292d49a4eff54
data/CHANGELOG.md CHANGED
@@ -5,6 +5,36 @@ 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] - 2024-12-29
9
+
10
+ ### Added
11
+
12
+ - Add Ruby 3.4 support to the precompiled, native gems
13
+ - Restored support for Ruby 2.6, 2.7, and 3.0 after dropping them in 0.8.0.rc1
14
+
15
+ ### Changed
16
+
17
+ - Provide separate precompiled, native gems for GNU and Musl
18
+ - Require glibc 2.29+ for x86-linux-gnu and x86_64-linux-gnu (and recommend
19
+ RubyGems 3.3.22+ and Bundler 2.3.21+)
20
+
21
+ ## [0.8.0.rc1] - 2024-12-16
22
+
23
+ ### Added
24
+
25
+ - Add Ruby 3.4.0-rc1 support to the precompiled, native gems
26
+
27
+ ### Changed
28
+
29
+ - Provide separate precompiled, native gems for GNU and Musl
30
+ - Require glibc 2.29+ for x86-linux-gnu and x86_64-linux-gnu (and recommend
31
+ RubyGems 3.3.22+ and Bundler 2.3.21+)
32
+
33
+ ### Removed
34
+
35
+ - Drop support for Ruby versions older than 3.1 as they do not ship with a
36
+ version of RubyGems new enough to handle the new Musl gems
37
+
8
38
  ## [0.7.0] - 2024-11-08
9
39
 
10
40
  ### Fixed
@@ -111,6 +141,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
111
141
  reference C implementation of Argon2, the password-hashing function that won
112
142
  the Password Hashing Competition.
113
143
 
144
+ [0.8.0]: https://github.com/mudge/argon2id/releases/tag/v0.8.0
145
+ [0.8.0.rc1]: https://github.com/mudge/argon2id/releases/tag/v0.8.0.rc1
114
146
  [0.7.0]: https://github.com/mudge/argon2id/releases/tag/v0.7.0
115
147
  [0.6.0]: https://github.com/mudge/argon2id/releases/tag/v0.6.0
116
148
  [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
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/) 2.6 to 3.4
204
261
  * [JRuby](https://www.jruby.org) 9.4
205
262
  * [TruffleRuby](https://www.graalvm.org/ruby/) 24.1
206
263
 
@@ -214,9 +271,8 @@ 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
277
  * Windows `x64-mingw32` and `x64-mingw-ucrt`
222
278
  * Java: any platform running JRuby 9.4 or higher
@@ -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 3.0.0 2.7.0 2.6.0].join(":")
20
24
 
21
25
  gemspec = Gem::Specification.load("argon2id.gemspec")
22
26
 
data/argon2id.gemspec CHANGED
@@ -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")
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"
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
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-29 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'
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'
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,7 +115,7 @@ 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
  - - ">="