hpke 1.0.0.pre.rc1 → 1.0.0

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: af90c4d6df46848b41461a37d6026d06984109712489219d17d27fddf4abf1f5
4
- data.tar.gz: eaac6a6353c644133d964131d4f2ed3d09e901e9b7c12863522252c9c80ad190
3
+ metadata.gz: a130a7a28eea6c07ac10bb247500c89da6f0e70170d7bf1b259ea94769c47cea
4
+ data.tar.gz: de1674a41042a2f0a222e95596a79903ac50ee5247d374014ad0ba0a9e4d3f56
5
5
  SHA512:
6
- metadata.gz: 2a16070a91990a059c8bdcde394b7cd8b2644a3dcc6675833dfda59a7298380d37a24838026f65f25a3ac7cbb25012ec2d33986da58f8e564fd2b2c242113a0d
7
- data.tar.gz: 279298ae5d3dd40645f9bc5254b9c88d961493fdf5c2f64280b69858a7202d21e52a3e63c0e68cf7611edea3f625bd1e2be9453f1cbb7a015df50104d8001b06
6
+ metadata.gz: 2948cf919833076f3e7b4f8ab1bb4df03aa892d5167013491871727fd97edeec9f9e68b1d58d1d178c85ae77cc8bbe4f771a9e1c97adb2897f87fb5865b5bed8
7
+ data.tar.gz: c280df1cacb7bfebb1a4d4a042c391361276065919ea66d38968e7e4e4e2d379bbd1392be7b26d51672db49b8e40b31b45385409f7d647b90f6be5d92d27b5b7
data/Gemfile CHANGED
@@ -6,5 +6,5 @@ source "https://rubygems.org"
6
6
  gemspec
7
7
 
8
8
  gem "rake", "~> 13.0"
9
-
9
+ gem "ostruct", "~> 0.6.3"
10
10
  gem "rspec", "~> 3.0"
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hpke (1.0.0.pre.rc1)
4
+ hpke (1.0.0)
5
5
  openssl (~> 3.3.0, >= 3.0)
6
6
 
7
7
  GEM
@@ -9,6 +9,7 @@ GEM
9
9
  specs:
10
10
  diff-lcs (1.5.0)
11
11
  openssl (3.3.0)
12
+ ostruct (0.6.3)
12
13
  rake (13.0.6)
13
14
  rspec (3.12.0)
14
15
  rspec-core (~> 3.12.0)
@@ -30,8 +31,9 @@ PLATFORMS
30
31
 
31
32
  DEPENDENCIES
32
33
  hpke!
34
+ ostruct (~> 0.6.3)
33
35
  rake (~> 13.0)
34
36
  rspec (~> 3.0)
35
37
 
36
38
  BUNDLED WITH
37
- 2.4.10
39
+ 4.0.3
data/README.md CHANGED
@@ -75,9 +75,9 @@ If bundler is not being used to manage dependencies, install the gem by executin
75
75
 
76
76
  ```ruby
77
77
  # instantiate HPKE suite
78
- # first 2 parameters specify the curve and hash to be used in the KEM,
79
- # third parameter specifies the hash to be used in the KDF (of HPKE suite),
80
- # fourth parameter specifies the AEAD function
78
+ # first parameter takes the KEM ID specified in RFC 9180 Section 7.1 Table 2,
79
+ # second parameter takes the KDF ID specified in RFC 9180 Section 7.2 Table 3,
80
+ # third parameter takes the AEAD ID specified in RFC 9180 Section 7.3 Table 5.
81
81
 
82
82
  # we will generate a different instance just for demonstration to show that nothing secret is stored in the HPKE suite instance
83
83
  hpke_s = HPKE.new(HPKE::DHKEM_X25519_HKDF_SHA256, HPKE::HKDF_SHA256, HPKE::AES_128_GCM)
data/lib/hpke/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class HPKE
4
- VERSION = "1.0.0-rc1"
4
+ VERSION = "1.0.0"
5
5
  end
data/lib/hpke.rb CHANGED
@@ -100,7 +100,8 @@ class HPKE
100
100
  encap_result = @kem.encap(pk_r)
101
101
  {
102
102
  enc: encap_result[:enc],
103
- context_s: key_schedule_s(MODES[:base], encap_result[:shared_secret], info, DEFAULT_PSK, DEFAULT_PSK_ID)
103
+ context_s: key_schedule_s(MODES[:base], encap_result[:shared_secret], info, DEFAULT_PSK, DEFAULT_PSK_ID),
104
+ shared_secret: encap_result[:shared_secret]
104
105
  }
105
106
  end
106
107
 
@@ -113,7 +114,8 @@ class HPKE
113
114
  encap_result = @kem.encap(pk_r)
114
115
  {
115
116
  enc: encap_result[:enc],
116
- context_s: key_schedule_s(MODES[:psk], encap_result[:shared_secret], info, psk, psk_id)
117
+ context_s: key_schedule_s(MODES[:psk], encap_result[:shared_secret], info, psk, psk_id),
118
+ shared_secret: encap_result[:shared_secret]
117
119
  }
118
120
  end
119
121
 
@@ -126,7 +128,8 @@ class HPKE
126
128
  encap_result = @kem.auth_encap(pk_r, sk_s)
127
129
  {
128
130
  enc: encap_result[:enc],
129
- context_s: key_schedule_s(MODES[:auth], encap_result[:shared_secret], info, DEFAULT_PSK, DEFAULT_PSK_ID)
131
+ context_s: key_schedule_s(MODES[:auth], encap_result[:shared_secret], info, DEFAULT_PSK, DEFAULT_PSK_ID),
132
+ shared_secret: encap_result[:shared_secret]
130
133
  }
131
134
  end
132
135
 
@@ -139,7 +142,8 @@ class HPKE
139
142
  encap_result = @kem.auth_encap(pk_r, sk_s)
140
143
  {
141
144
  enc: encap_result[:enc],
142
- context_s: key_schedule_s(MODES[:auth_psk], encap_result[:shared_secret], info, psk, psk_id)
145
+ context_s: key_schedule_s(MODES[:auth_psk], encap_result[:shared_secret], info, psk, psk_id),
146
+ shared_secret: encap_result[:shared_secret]
143
147
  }
144
148
  end
145
149
 
@@ -153,7 +157,8 @@ class HPKE
153
157
  encap_result = @kem.encap_fixed(pk_r, ikm_e)
154
158
  {
155
159
  enc: encap_result[:enc],
156
- context_s: key_schedule_s(MODES[:base], encap_result[:shared_secret], info, DEFAULT_PSK, DEFAULT_PSK_ID)
160
+ context_s: key_schedule_s(MODES[:base], encap_result[:shared_secret], info, DEFAULT_PSK, DEFAULT_PSK_ID),
161
+ shared_secret: encap_result[:shared_secret]
157
162
  }
158
163
  end
159
164
 
@@ -161,7 +166,8 @@ class HPKE
161
166
  encap_result = @kem.encap_fixed(pk_r, ikm_e)
162
167
  {
163
168
  enc: encap_result[:enc],
164
- context_s: key_schedule_s(MODES[:psk], encap_result[:shared_secret], info, psk, psk_id)
169
+ context_s: key_schedule_s(MODES[:psk], encap_result[:shared_secret], info, psk, psk_id),
170
+ shared_secret: encap_result[:shared_secret]
165
171
  }
166
172
  end
167
173
 
@@ -169,7 +175,8 @@ class HPKE
169
175
  encap_result = @kem.auth_encap_fixed(pk_r, sk_s, ikm_e)
170
176
  {
171
177
  enc: encap_result[:enc],
172
- context_s: key_schedule_s(MODES[:auth], encap_result[:shared_secret], info, DEFAULT_PSK, DEFAULT_PSK_ID)
178
+ context_s: key_schedule_s(MODES[:auth], encap_result[:shared_secret], info, DEFAULT_PSK, DEFAULT_PSK_ID),
179
+ shared_secret: encap_result[:shared_secret]
173
180
  }
174
181
  end
175
182
 
@@ -177,7 +184,8 @@ class HPKE
177
184
  encap_result = @kem.auth_encap_fixed(pk_r, sk_s, ikm_e)
178
185
  {
179
186
  enc: encap_result[:enc],
180
- context_s: key_schedule_s(MODES[:auth_psk], encap_result[:shared_secret], info, psk, psk_id)
187
+ context_s: key_schedule_s(MODES[:auth_psk], encap_result[:shared_secret], info, psk, psk_id),
188
+ shared_secret: encap_result[:shared_secret]
181
189
  }
182
190
  end
183
191
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hpke
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre.rc1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Kajiwara
@@ -69,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
69
  - !ruby/object:Gem::Version
70
70
  version: '0'
71
71
  requirements: []
72
- rubygems_version: 3.6.7
72
+ rubygems_version: 4.0.3
73
73
  specification_version: 4
74
74
  summary: Hybrid Public Key Encryption (HPKE; RFC 9180) on Ruby
75
75
  test_files: []