argon2id 0.7.0-x86_64-darwin → 0.8.0.rc1-x86_64-darwin

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: ef9d6d75c5a77fb22a0f52e9215df870861a7bb49714813807a8b48e4c47bbad
4
- data.tar.gz: 75d5974645d2eaedaee75ebca7263131cbf764f9c7f8f999da1853945e4ecf98
3
+ metadata.gz: fdd98f6b16d85f231c39f64181187b27969135b7005a502c5b7f55ef2109f7c8
4
+ data.tar.gz: 5936e4e00441305b9916fbfd1994f9cae99334e7f4ff6190c9c46b5c41396cbe
5
5
  SHA512:
6
- metadata.gz: a0838733c8bfe503f97815a53d4da73e5ee85d0a9c628b4e7e663aa8a20eebb3b16f4d7124821d31932cf7e85a6c73671938c952358c9b016f1fb96892d4d81f
7
- data.tar.gz: 8457523cb571f492c84878f2fb7c8a8c79f56ec2103207a6c1e5337fdc8eeb14da7a441990994596ff8bc7040f64deec4ed7c326b2409c138e85a6e478378e54
6
+ metadata.gz: d1555ef49630f9844efe8e799addd07b9325042678efe597356ba3c534e1a57b05e95e342fb49c4f7df283ba24e8eea0fae697909b920ee4614477e8ebc74a3d
7
+ data.tar.gz: 6f0adfca1b817a3504e544023e3a0b37ca8e3087072778b896b6bc9761f01a64d9a46912d821f177f915ac4a4821efa7c5ce8e41787e6ec05f23405969265910
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: x86_64-darwin
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
@@ -83,12 +83,10 @@ files:
83
83
  - ext/argon2id/libargon2/thread.c
84
84
  - ext/argon2id/libargon2/thread.h
85
85
  - lib/argon2id.rb
86
- - lib/argon2id/2.6/argon2id.bundle
87
- - lib/argon2id/2.7/argon2id.bundle
88
- - lib/argon2id/3.0/argon2id.bundle
89
86
  - lib/argon2id/3.1/argon2id.bundle
90
87
  - lib/argon2id/3.2/argon2id.bundle
91
88
  - lib/argon2id/3.3/argon2id.bundle
89
+ - lib/argon2id/3.4/argon2id.bundle
92
90
  - lib/argon2id/extension.rb
93
91
  - lib/argon2id/password.rb
94
92
  - lib/argon2id/version.rb
@@ -114,15 +112,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
112
  requirements:
115
113
  - - ">="
116
114
  - !ruby/object:Gem::Version
117
- version: '2.6'
115
+ version: '3.1'
118
116
  - - "<"
119
117
  - !ruby/object:Gem::Version
120
- version: 3.4.dev
118
+ version: 3.5.dev
121
119
  required_rubygems_version: !ruby/object:Gem::Requirement
122
120
  requirements:
123
- - - ">="
121
+ - - ">"
124
122
  - !ruby/object:Gem::Version
125
- version: '0'
123
+ version: 1.3.1
126
124
  requirements: []
127
125
  rubygems_version: 3.3.26
128
126
  signing_key:
Binary file
Binary file
Binary file