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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.document +1 -0
- data/CHANGELOG.md +34 -0
- data/README.md +1 -0
- data/certs/io+sha3@jsg.io.pem +20 -20
- data/ext/sha3/cshake.c +2 -1
- data/ext/sha3/digest.c +15 -10
- data/ext/sha3/sp800_185.c +40 -32
- data/lib/constants.rb +1 -1
- data/sha3.gemspec +1 -1
- data.tar.gz.sig +0 -0
- metadata +23 -23
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 313cf6f3d1b2847839a7ced1c6c80a8f979d02bbb63be4d6aad29d8aa867e94f
|
|
4
|
+
data.tar.gz: 8082b5d96c084bd05e86d7213ed17b982200381dd7f187ffa1bfd122e44ceeac
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3c1fce17c84d6c28cd1d2695b0aee6c6ef122ad76e16558ba8788f1ea952f626448af264541e8161f3e4835da292b76da7f46dd4e21061ecce8cadf77ba93791
|
|
7
|
+
data.tar.gz: deb57b637c2e3c7ec65b189de11404005e72e3809e1b3cbc982a3ce66ba2918d597e7a5039e373200afb1ce0d23ccf704d7d2974f9799b229b74486eb009b7b0
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/.document
CHANGED
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
|
|
data/certs/io+sha3@jsg.io.pem
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
|
2
2
|
MIIEYDCCAsigAwIBAgIBATANBgkqhkiG9w0BAQsFADA7MRAwDgYDVQQDDAdpb19z
|
|
3
3
|
aGEzMRMwEQYKCZImiZPyLGQBGRYDanNnMRIwEAYKCZImiZPyLGQBGRYCaW8wHhcN
|
|
4
|
-
|
|
4
|
+
MjYwNTE3MjAwNTE1WhcNMjgwNTE2MjAwNTE1WjA7MRAwDgYDVQQDDAdpb19zaGEz
|
|
5
5
|
MRMwEQYKCZImiZPyLGQBGRYDanNnMRIwEAYKCZImiZPyLGQBGRYCaW8wggGiMA0G
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
+
|
|
24
|
-
|
|
25
|
-
|
|
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 = {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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[] = {{
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
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.
|
|
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
|
-
|
|
14
|
+
MjYwNTE3MjAwNTE1WhcNMjgwNTE2MjAwNTE1WjA7MRAwDgYDVQQDDAdpb19zaGEz
|
|
15
15
|
MRMwEQYKCZImiZPyLGQBGRYDanNnMRIwEAYKCZImiZPyLGQBGRYCaW8wggGiMA0G
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
+
|
|
34
|
-
|
|
35
|
-
|
|
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:
|
|
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
|