sha3 2.2.3 → 2.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9efe4158e87ea949852977b7791cf56838a9fefdbe226ebf7fdb4c5e962e927b
4
- data.tar.gz: 6f41a24a48b714a33f846e6458aad350be5168f33202c51a95bda7a364cffc5f
3
+ metadata.gz: 313cf6f3d1b2847839a7ced1c6c80a8f979d02bbb63be4d6aad29d8aa867e94f
4
+ data.tar.gz: 8082b5d96c084bd05e86d7213ed17b982200381dd7f187ffa1bfd122e44ceeac
5
5
  SHA512:
6
- metadata.gz: 21086756d157c20bd8f74fde996cabfc8c2a8975b913cab0da03a311d41eb3d44427e344419344e7d8729b21edf0c1d550732c583df8a1f2797b700b64468464
7
- data.tar.gz: fd6dacfcb827ecbdf8d3d60cd1b9dfacd6f50fc9c4440100890fbac7302d26f8119da33f95b67c270c73b6f75789a7b5e569e04c638a834dce9ff99a5b2050a7
6
+ metadata.gz: 3c1fce17c84d6c28cd1d2695b0aee6c6ef122ad76e16558ba8788f1ea952f626448af264541e8161f3e4835da292b76da7f46dd4e21061ecce8cadf77ba93791
7
+ data.tar.gz: deb57b637c2e3c7ec65b189de11404005e72e3809e1b3cbc982a3ce66ba2918d597e7a5039e373200afb1ce0d23ccf704d7d2974f9799b229b74486eb009b7b0
checksums.yaml.gz.sig CHANGED
Binary file
data/.document CHANGED
@@ -1,4 +1,5 @@
1
1
  README.md
2
2
  LICENSE.txt
3
+ CHANGELOG.md
3
4
  doc/**/*.rb
4
5
  ext/sha3/*.c
data/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # SHA3 Ruby Gem Changelog
2
2
 
3
+ ## v2.2.3 (2025-09-05)
4
+
5
+ ### Bug Fixes
6
+ - Fixed memory leak by freeing context memory on allocation failure in rb_sha3_digest_alloc
7
+ - Fixed heredoc delimiters for description and post-install message in gemspec
8
+ - Fixed example comment typo in cshake
9
+
10
+ ### Improvements
11
+ - Introduced common abstraction layer for SP800-185 algorithms (cSHAKE, KMAC)
12
+ - Improved memory management and error handling in digest.c
13
+ - Significantly reduced code duplication in cshake.c and kmac.c
14
+
15
+ ### Testing
16
+ - Improved test organization and coverage for SHA3 algorithms
17
+ - Added comprehensive tests for edge cases and error conditions
18
+
19
+ ### Maintenance
20
+ - Added RuboCop configuration for code style consistency
21
+
22
+ ## v2.2.2 (2025-09-05)
23
+
24
+ ### Improvements
25
+ - Streamlined SP800-185 algorithm initialization
26
+ - Enhanced error handling in cSHAKE and KMAC implementations
27
+ - Refactored internal API for better maintainability
28
+
29
+ ## v2.2.1 (2025-09-05)
30
+
31
+ ### Bug Fixes
32
+ - Fixed out-of-bounds array access when parsing optional key arguments in cSHAKE
33
+
34
+ ### Maintenance
35
+ - Removed obsolete macro definitions for Ruby methods in SP800-185 header
36
+
3
37
  ## v2.2.0 (2025-03-15)
4
38
 
5
39
  ### Features
data/README.md CHANGED
@@ -38,6 +38,7 @@ This gem provides support for the standard SHA-3 fixed-length functions (224, 25
38
38
  - [API Documentation](https://docs.jsg.io/sha3/html/index.html)
39
39
  - [GitHub Repository](https://github.com/johanns/sha3#readme)
40
40
  - [Issue Tracker](https://github.com/johanns/sha3/issues)
41
+ - [Changelog](CHANGELOG.md)
41
42
 
42
43
  ## Features
43
44
 
@@ -1,26 +1,26 @@
1
1
  -----BEGIN CERTIFICATE-----
2
2
  MIIEYDCCAsigAwIBAgIBATANBgkqhkiG9w0BAQsFADA7MRAwDgYDVQQDDAdpb19z
3
3
  aGEzMRMwEQYKCZImiZPyLGQBGRYDanNnMRIwEAYKCZImiZPyLGQBGRYCaW8wHhcN
4
- MjUwMzAxMDYxMTE1WhcNMjYwMzAxMDYxMTE1WjA7MRAwDgYDVQQDDAdpb19zaGEz
4
+ MjYwNTE3MjAwNTE1WhcNMjgwNTE2MjAwNTE1WjA7MRAwDgYDVQQDDAdpb19zaGEz
5
5
  MRMwEQYKCZImiZPyLGQBGRYDanNnMRIwEAYKCZImiZPyLGQBGRYCaW8wggGiMA0G
6
- CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDMdO1oUQ9FzXYtfFktOXDx6oIf9uSk
7
- mg+yfo7uvcyNSa4gsF4+CY/TOYNBtwlD25AlgDqpxVCHFwUaBD+MHKyd8p6Eto1Q
8
- Bwb7YrjPOXlmCKQYr5sFfbjeUfQRKBUTAhzM0W/5Zh9C4gkOyZ/7SaU6mI/M/LgQ
9
- dZsw2y6l2bAl4aZaXgbnO7B1rPTPr6yQRZTveacmeTGHav1WACdE36Txqyv2QA7+
10
- +VdYx04fOe2FEipan7d4TA4XKW+0Z+VWyoWFNyyxJtiT53PB10lztPiycBqZ+A3L
11
- aA2VjZekn3NFbsXMOa4fbSTMddb784IWEeySmTMu6W/yYpo1B1PbgRaD/z2Zg0Qj
12
- SZ2ldqqk68nvFVWqUlRbT8ZY6McKC1VEbNLLk7jNvdbgr/VPo4Zu5TP3FXjsPlpz
13
- 1duXTtAGtHjPnS+tdkSinKv4OmbTHid9gnoDcRjlNpWxoULs9iSNb6lOCUeBxvF6
14
- 4Eh7nyIPmaTDwPQtg5/RTvjZMqprS8D3tKsCAwEAAaNvMG0wCQYDVR0TBAIwADAL
15
- BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFLCWxOjmn5qTuhjFG7fwiPXzSIlFMBkGA1Ud
6
+ CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC16QqqWL49C7rqtj8HoYMippjH6T4A
7
+ MvK8w1nXPsGOhIP0BYcjNajdFxzOXZ9NcYPxosQAvY97THO7zEGsM2VrvPzsPL8J
8
+ 8DqRS6wHUezA2ZffGpUvsesNlIpzSkEXXXRTe/8dq2/TnIeKEyx4dhu1cKL6h/22
9
+ Mng14M25QJK0JI5xhQ/+i9UXeNCwFjwINbOzJD1XZ2VtOJkMm/yHZvB6ww8qu+gS
10
+ N4J2iiCbFRsbYRPuoVFVuSOD0lgX1tvwOtUucSdF1EzvEX5XW2avzOWsKab0V3ET
11
+ puZ9F36dmkfNan5n5GApyKkOZ/mfC8s9brjRXVlp4YPHBK3zFEU6VsCtIa08dPXI
12
+ axUZlmwQLhvtsnX3nkgvbGpvFZmhBs4JBssEur7Gf9bgLbXYngfmgIZv5WFRravJ
13
+ qvHCehkpVgqi+ebW15UzhPwQ5wNxdm/I+tAt/u08m0R4m6kQYbk2yAimjrVLx0f/
14
+ JPcoi+4QXrmYZujkhqhIw2lDPOCD2oKPUVECAwEAAaNvMG0wCQYDVR0TBAIwADAL
15
+ BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFKuRt91muWm/9XZBRDt8Nkm1IdjdMBkGA1Ud
16
16
  EQQSMBCBDmlvK3NoYTNAanNnLmlvMBkGA1UdEgQSMBCBDmlvK3NoYTNAanNnLmlv
17
- MA0GCSqGSIb3DQEBCwUAA4IBgQC4Y5pXxtopzHiSBsg6fuozv7zHXXuYXOL2Bq2x
18
- l8C8lYjC2pN/Fh+FlgrJkqAoJ0wBlh3+wkhYPhSehkUy/2HaUYYTd1Zv4Odw+C/Q
19
- rQnN5+nIv+gMrLwoBXH9sFjAp/iYKd4cDz5aUVNrPqibj8zivcSqFJ9lsyOvIZO6
20
- tajU2HVxXOkpTtLzMgPEGdwlFEd2tB7VCGFbrTskxrpv243b0HdpeEVh2e9dNkl4
21
- XobOvUPXHzFTDucYe8jpCn7e7Cj43PpTZFnxIRJnO8cVpX6n7UG8+JgBSqvwuv5C
22
- YwFBqP6G2+0e0EdIIMdbCDBTmJbFyBr6y4pzED/FvEFzhAmCKOcZ6RJ8H7hkX5rh
23
- +L4c9pHTemc2sQl7kH+mrntu7pt6D4EM4FD5eyWujQN1ME7xvLIFm5SczqCzFDfe
24
- UjZtrp/rHLfHln46RvB+a1NlMRWxtJ7mQc/CMEbT+cpHlzuYa9qGakA4TmMpK10h
25
- uYUv/V6CD4iTEMby0dopwHt5NqE=
17
+ MA0GCSqGSIb3DQEBCwUAA4IBgQBI38LgcqdqpfkaiEGfr3fLtsOBkE1Q7mEHjeIS
18
+ JcEiu16sP0iR/0QzN/DS0vPMQUhl4dvkUl7euVOo8rp0mwzUyaSvq+MSQlpxwgjb
19
+ AQ5A8VAkkIMbTbCqRU9q9KQObmO8/NaFFFGgmRegp8eBEGdixbiIsReEeWzEICe1
20
+ TOmXWl1X7EBUF7CdSIHxBAjF16YXJoDJp16DonZ/pzbgeO85OzFmfnA+B9nsHXS4
21
+ 3CeJ/lKznIM8XWSXA1ruSkZeB5ouNtauqSAaBJoMkAB0DbOrZ6yo/mP8x3WtSLKY
22
+ SdQdy412nPewWa08VXIjZqd1Q+rI9Wq2pY6TOqML1Iu5nB2VMAr9PoHcIPz1P9N8
23
+ sM8XX4fXOsMtSc4SzMOqlkg2qRdo4/1eIjVSxCM84VqppRnH8syAzny6COQ0Xo+z
24
+ /PqqO8TUsynEGVsjIkBIa8Y5zoXBfcQ6PQpSbeY0bXhhsxclL3fKWSQQC4MN/OFE
25
+ 5aeBE+xHYdmI3UoIAXt1xB0hU9w=
26
26
  -----END CERTIFICATE-----
data/ext/sha3/cshake.c CHANGED
@@ -49,7 +49,8 @@ static const rb_data_type_t sha3_cshake_data_type = {
49
49
  },
50
50
  NULL,
51
51
  NULL,
52
- RUBY_TYPED_FREE_IMMEDIATELY};
52
+ RUBY_TYPED_FREE_IMMEDIATELY,
53
+ };
53
54
 
54
55
  // Helper function to extract context from a Ruby object
55
56
  void get_cshake_context(VALUE obj, sp800_185_context_t **context) {
data/ext/sha3/digest.c CHANGED
@@ -79,16 +79,18 @@ static ID _shake_128_id;
79
79
  static ID _shake_256_id;
80
80
 
81
81
  /* TypedData structure for sha3_digest_context_t */
82
- const rb_data_type_t sha3_digest_data_type = {"SHA3::Digest",
83
- {
84
- NULL,
85
- sha3_digest_free_context,
86
- sha3_digest_context_size,
87
- NULL,
88
- },
89
- NULL,
90
- NULL,
91
- RUBY_TYPED_FREE_IMMEDIATELY};
82
+ const rb_data_type_t sha3_digest_data_type = {
83
+ "SHA3::Digest",
84
+ {
85
+ NULL,
86
+ sha3_digest_free_context,
87
+ sha3_digest_context_size,
88
+ NULL,
89
+ },
90
+ NULL,
91
+ NULL,
92
+ RUBY_TYPED_FREE_IMMEDIATELY,
93
+ };
92
94
 
93
95
  void Init_sha3_digest(void) {
94
96
  rb_require("digest");
@@ -623,6 +625,9 @@ static VALUE rb_sha3_digest_squeeze(VALUE self, VALUE length) {
623
625
  rb_raise(_sha3_digest_error_class, "failed to squeeze output");
624
626
  }
625
627
 
628
+ // Keep `copy` reachable so the GC can't free context_copy->state via rb_str_new above.
629
+ RB_GC_GUARD(copy);
630
+
626
631
  return str;
627
632
  }
628
633
 
data/ext/sha3/sp800_185.c CHANGED
@@ -22,38 +22,46 @@ static int kmac256_init_wrapper(void *state, void *params) {
22
22
  }
23
23
 
24
24
  /*** Function table for SP800-185 algorithms ***/
25
- sp800_185_function_table_t sp800_185_functions[] = {{.algorithm = SP800_185_CSHAKE_128,
26
- .name = "CSHAKE128",
27
- .state_size = sizeof(cSHAKE_Instance),
28
- .is_keyed = false,
29
- .init = cshake128_init_wrapper,
30
- .update = (sp800_185_update_fn)cSHAKE128_Update,
31
- .final = (sp800_185_final_fn)cSHAKE128_Final,
32
- .squeeze = (sp800_185_squeeze_fn)cSHAKE128_Squeeze},
33
- {.algorithm = SP800_185_CSHAKE_256,
34
- .name = "CSHAKE256",
35
- .state_size = sizeof(cSHAKE_Instance),
36
- .is_keyed = false,
37
- .init = cshake256_init_wrapper,
38
- .update = (sp800_185_update_fn)cSHAKE256_Update,
39
- .final = (sp800_185_final_fn)cSHAKE256_Final,
40
- .squeeze = (sp800_185_squeeze_fn)cSHAKE256_Squeeze},
41
- {.algorithm = SP800_185_KMAC_128,
42
- .name = "KMAC128",
43
- .state_size = sizeof(KMAC_Instance),
44
- .is_keyed = true,
45
- .init = kmac128_init_wrapper,
46
- .update = (sp800_185_update_fn)KMAC128_Update,
47
- .final = (sp800_185_final_fn)KMAC128_Final,
48
- .squeeze = (sp800_185_squeeze_fn)KMAC128_Squeeze},
49
- {.algorithm = SP800_185_KMAC_256,
50
- .name = "KMAC256",
51
- .state_size = sizeof(KMAC_Instance),
52
- .is_keyed = true,
53
- .init = kmac256_init_wrapper,
54
- .update = (sp800_185_update_fn)KMAC256_Update,
55
- .final = (sp800_185_final_fn)KMAC256_Final,
56
- .squeeze = (sp800_185_squeeze_fn)KMAC256_Squeeze}};
25
+ sp800_185_function_table_t sp800_185_functions[] = {{
26
+ .algorithm = SP800_185_CSHAKE_128,
27
+ .name = "CSHAKE128",
28
+ .state_size = sizeof(cSHAKE_Instance),
29
+ .is_keyed = false,
30
+ .init = cshake128_init_wrapper,
31
+ .update = (sp800_185_update_fn)cSHAKE128_Update,
32
+ .final = (sp800_185_final_fn)cSHAKE128_Final,
33
+ .squeeze = (sp800_185_squeeze_fn)cSHAKE128_Squeeze,
34
+ },
35
+ {
36
+ .algorithm = SP800_185_CSHAKE_256,
37
+ .name = "CSHAKE256",
38
+ .state_size = sizeof(cSHAKE_Instance),
39
+ .is_keyed = false,
40
+ .init = cshake256_init_wrapper,
41
+ .update = (sp800_185_update_fn)cSHAKE256_Update,
42
+ .final = (sp800_185_final_fn)cSHAKE256_Final,
43
+ .squeeze = (sp800_185_squeeze_fn)cSHAKE256_Squeeze,
44
+ },
45
+ {
46
+ .algorithm = SP800_185_KMAC_128,
47
+ .name = "KMAC128",
48
+ .state_size = sizeof(KMAC_Instance),
49
+ .is_keyed = true,
50
+ .init = kmac128_init_wrapper,
51
+ .update = (sp800_185_update_fn)KMAC128_Update,
52
+ .final = (sp800_185_final_fn)KMAC128_Final,
53
+ .squeeze = (sp800_185_squeeze_fn)KMAC128_Squeeze,
54
+ },
55
+ {
56
+ .algorithm = SP800_185_KMAC_256,
57
+ .name = "KMAC256",
58
+ .state_size = sizeof(KMAC_Instance),
59
+ .is_keyed = true,
60
+ .init = kmac256_init_wrapper,
61
+ .update = (sp800_185_update_fn)KMAC256_Update,
62
+ .final = (sp800_185_final_fn)KMAC256_Final,
63
+ .squeeze = (sp800_185_squeeze_fn)KMAC256_Squeeze,
64
+ }};
57
65
 
58
66
  /* Algorithm lookup functions */
59
67
  const sp800_185_function_table_t *sp800_185_get_algorithm(sp800_185_algorithm_t algorithm) {
data/lib/constants.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SHA3
4
- VERSION = '2.2.3'
4
+ VERSION = '2.2.4'
5
5
  end
data/sha3.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.license = 'MIT'
21
21
  spec.required_ruby_version = '>= 2.7.0'
22
22
 
23
- spec.metadata['changelog_uri'] = "#{spec.homepage}/CHANGELOG.md"
23
+ spec.metadata['changelog_uri'] = "#{spec.homepage}/blob/main/CHANGELOG.md"
24
24
  spec.metadata['homepage_uri'] = spec.homepage
25
25
  spec.metadata['documentation_uri'] = 'https://docs.jsg.io/sha3/index.html'
26
26
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sha3
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.3
4
+ version: 2.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Johanns Gregorian
@@ -11,28 +11,28 @@ cert_chain:
11
11
  -----BEGIN CERTIFICATE-----
12
12
  MIIEYDCCAsigAwIBAgIBATANBgkqhkiG9w0BAQsFADA7MRAwDgYDVQQDDAdpb19z
13
13
  aGEzMRMwEQYKCZImiZPyLGQBGRYDanNnMRIwEAYKCZImiZPyLGQBGRYCaW8wHhcN
14
- MjUwMzAxMDYxMTE1WhcNMjYwMzAxMDYxMTE1WjA7MRAwDgYDVQQDDAdpb19zaGEz
14
+ MjYwNTE3MjAwNTE1WhcNMjgwNTE2MjAwNTE1WjA7MRAwDgYDVQQDDAdpb19zaGEz
15
15
  MRMwEQYKCZImiZPyLGQBGRYDanNnMRIwEAYKCZImiZPyLGQBGRYCaW8wggGiMA0G
16
- CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDMdO1oUQ9FzXYtfFktOXDx6oIf9uSk
17
- mg+yfo7uvcyNSa4gsF4+CY/TOYNBtwlD25AlgDqpxVCHFwUaBD+MHKyd8p6Eto1Q
18
- Bwb7YrjPOXlmCKQYr5sFfbjeUfQRKBUTAhzM0W/5Zh9C4gkOyZ/7SaU6mI/M/LgQ
19
- dZsw2y6l2bAl4aZaXgbnO7B1rPTPr6yQRZTveacmeTGHav1WACdE36Txqyv2QA7+
20
- +VdYx04fOe2FEipan7d4TA4XKW+0Z+VWyoWFNyyxJtiT53PB10lztPiycBqZ+A3L
21
- aA2VjZekn3NFbsXMOa4fbSTMddb784IWEeySmTMu6W/yYpo1B1PbgRaD/z2Zg0Qj
22
- SZ2ldqqk68nvFVWqUlRbT8ZY6McKC1VEbNLLk7jNvdbgr/VPo4Zu5TP3FXjsPlpz
23
- 1duXTtAGtHjPnS+tdkSinKv4OmbTHid9gnoDcRjlNpWxoULs9iSNb6lOCUeBxvF6
24
- 4Eh7nyIPmaTDwPQtg5/RTvjZMqprS8D3tKsCAwEAAaNvMG0wCQYDVR0TBAIwADAL
25
- BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFLCWxOjmn5qTuhjFG7fwiPXzSIlFMBkGA1Ud
16
+ CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC16QqqWL49C7rqtj8HoYMippjH6T4A
17
+ MvK8w1nXPsGOhIP0BYcjNajdFxzOXZ9NcYPxosQAvY97THO7zEGsM2VrvPzsPL8J
18
+ 8DqRS6wHUezA2ZffGpUvsesNlIpzSkEXXXRTe/8dq2/TnIeKEyx4dhu1cKL6h/22
19
+ Mng14M25QJK0JI5xhQ/+i9UXeNCwFjwINbOzJD1XZ2VtOJkMm/yHZvB6ww8qu+gS
20
+ N4J2iiCbFRsbYRPuoVFVuSOD0lgX1tvwOtUucSdF1EzvEX5XW2avzOWsKab0V3ET
21
+ puZ9F36dmkfNan5n5GApyKkOZ/mfC8s9brjRXVlp4YPHBK3zFEU6VsCtIa08dPXI
22
+ axUZlmwQLhvtsnX3nkgvbGpvFZmhBs4JBssEur7Gf9bgLbXYngfmgIZv5WFRravJ
23
+ qvHCehkpVgqi+ebW15UzhPwQ5wNxdm/I+tAt/u08m0R4m6kQYbk2yAimjrVLx0f/
24
+ JPcoi+4QXrmYZujkhqhIw2lDPOCD2oKPUVECAwEAAaNvMG0wCQYDVR0TBAIwADAL
25
+ BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFKuRt91muWm/9XZBRDt8Nkm1IdjdMBkGA1Ud
26
26
  EQQSMBCBDmlvK3NoYTNAanNnLmlvMBkGA1UdEgQSMBCBDmlvK3NoYTNAanNnLmlv
27
- MA0GCSqGSIb3DQEBCwUAA4IBgQC4Y5pXxtopzHiSBsg6fuozv7zHXXuYXOL2Bq2x
28
- l8C8lYjC2pN/Fh+FlgrJkqAoJ0wBlh3+wkhYPhSehkUy/2HaUYYTd1Zv4Odw+C/Q
29
- rQnN5+nIv+gMrLwoBXH9sFjAp/iYKd4cDz5aUVNrPqibj8zivcSqFJ9lsyOvIZO6
30
- tajU2HVxXOkpTtLzMgPEGdwlFEd2tB7VCGFbrTskxrpv243b0HdpeEVh2e9dNkl4
31
- XobOvUPXHzFTDucYe8jpCn7e7Cj43PpTZFnxIRJnO8cVpX6n7UG8+JgBSqvwuv5C
32
- YwFBqP6G2+0e0EdIIMdbCDBTmJbFyBr6y4pzED/FvEFzhAmCKOcZ6RJ8H7hkX5rh
33
- +L4c9pHTemc2sQl7kH+mrntu7pt6D4EM4FD5eyWujQN1ME7xvLIFm5SczqCzFDfe
34
- UjZtrp/rHLfHln46RvB+a1NlMRWxtJ7mQc/CMEbT+cpHlzuYa9qGakA4TmMpK10h
35
- uYUv/V6CD4iTEMby0dopwHt5NqE=
27
+ MA0GCSqGSIb3DQEBCwUAA4IBgQBI38LgcqdqpfkaiEGfr3fLtsOBkE1Q7mEHjeIS
28
+ JcEiu16sP0iR/0QzN/DS0vPMQUhl4dvkUl7euVOo8rp0mwzUyaSvq+MSQlpxwgjb
29
+ AQ5A8VAkkIMbTbCqRU9q9KQObmO8/NaFFFGgmRegp8eBEGdixbiIsReEeWzEICe1
30
+ TOmXWl1X7EBUF7CdSIHxBAjF16YXJoDJp16DonZ/pzbgeO85OzFmfnA+B9nsHXS4
31
+ 3CeJ/lKznIM8XWSXA1ruSkZeB5ouNtauqSAaBJoMkAB0DbOrZ6yo/mP8x3WtSLKY
32
+ SdQdy412nPewWa08VXIjZqd1Q+rI9Wq2pY6TOqML1Iu5nB2VMAr9PoHcIPz1P9N8
33
+ sM8XX4fXOsMtSc4SzMOqlkg2qRdo4/1eIjVSxCM84VqppRnH8syAzny6COQ0Xo+z
34
+ /PqqO8TUsynEGVsjIkBIa8Y5zoXBfcQ6PQpSbeY0bXhhsxclL3fKWSQQC4MN/OFE
35
+ 5aeBE+xHYdmI3UoIAXt1xB0hU9w=
36
36
  -----END CERTIFICATE-----
37
37
  date: 1980-01-02 00:00:00.000000000 Z
38
38
  dependencies: []
@@ -109,7 +109,7 @@ homepage: https://github.com/johanns/sha3
109
109
  licenses:
110
110
  - MIT
111
111
  metadata:
112
- changelog_uri: https://github.com/johanns/sha3/CHANGELOG.md
112
+ changelog_uri: https://github.com/johanns/sha3/blob/main/CHANGELOG.md
113
113
  homepage_uri: https://github.com/johanns/sha3
114
114
  documentation_uri: https://docs.jsg.io/sha3/index.html
115
115
  rubygems_mfa_required: 'true'
@@ -131,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
131
  - !ruby/object:Gem::Version
132
132
  version: '0'
133
133
  requirements: []
134
- rubygems_version: 3.7.1
134
+ rubygems_version: 4.0.11
135
135
  specification_version: 4
136
136
  summary: SHA-3 (FIPS 202), SHAKE128/SHAKE256, cSHAKE128/cSHAKE256, and KMAC (NIST
137
137
  SP 800-185), powered by XKCP.
metadata.gz.sig CHANGED
Binary file