ecies 0.3.0 → 0.4.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 +4 -4
- checksums.yaml.gz.sig +2 -2
- data/.gitignore +1 -0
- data/CHANGELOG.md +10 -0
- data/README.md +5 -8
- data/certs/jamoes.pem +23 -18
- data/ecies.gemspec +2 -5
- data/lib/ecies/crypt.rb +14 -31
- data/lib/ecies/version.rb +1 -1
- data/lib/ecies.rb +3 -2
- data/spec/crypt_spec.rb +11 -17
- data.tar.gz.sig +0 -0
- metadata +32 -28
- 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: ccdc4376e7e505685dafd7456609bee87adb7909ee863dea0a02a46bc10ea9ec
|
4
|
+
data.tar.gz: c2c8c601e446e361ea28d9605108ba52b5df6d3444b20093f410ac6cee73621a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14dcb2ccec245e71d68eb63b520d320c6e39b330a2f01fd59848ce9ff0d6436d90e100eb5b5857bda40b780dedf365d2bfc4f14dbca9ca8b612560bb82a5c111
|
7
|
+
data.tar.gz: dd259230ce124924f5269b1fbb966ea17207ee41dcc206669d1eccc74e62ccd35803f9c96c869011333526cf5c8a03175d671abbf27356d117e5502d42e54d51
|
checksums.yaml.gz.sig
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
�������=xu8
|
2
|
+
x��;���Y�E�D]B��'�Z�����r���c$�{1�L���kWm�ѓ����2E��6z�p���
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,16 @@ Change log
|
|
4
4
|
This gem follows [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html).
|
5
5
|
All classes and public methods are part of the public API.
|
6
6
|
|
7
|
+
0.4.0
|
8
|
+
---
|
9
|
+
Released on 2023-06-20
|
10
|
+
|
11
|
+
- Add support for OpenSSL 3.0.
|
12
|
+
- Remove `Crypt.private_key_from_hex` method.
|
13
|
+
- Users can still utilize `OpenSSL::PKey::EC.new` to construct a PKey.
|
14
|
+
- `Crypt.public_key_from_hex` now raises `ArgumentError` on an invalid key, rather than an `OpenSSL::PKey::EC::Point::Error`.
|
15
|
+
- Explicitly require 'stringio' (thanks thekuwayama!).
|
16
|
+
|
7
17
|
0.3.0
|
8
18
|
---
|
9
19
|
Released on 2018-04-22
|
data/README.md
CHANGED
@@ -1,15 +1,12 @@
|
|
1
1
|
# ECIES - Elliptical Curve Integrated Encryption System
|
2
2
|
|
3
|
-
[](https://travis-ci.org/jamoes/ecies)
|
4
|
-
[](https://badge.fury.io/rb/ecies)
|
5
|
-
|
6
3
|
## Description
|
7
4
|
|
8
5
|
This library implements Elliptical Curve Integrated Encryption System (ECIES), as specified by [SEC 1: Elliptic Curve Cryptography, Version 2.0](http://www.secg.org/sec1-v2.pdf).
|
9
6
|
|
10
7
|
ECIES is a public-key encryption scheme based on ECC. It is designed to be semantically secure in the presence of an adversary capable of launching chosen-plaintext and chosen-ciphertext attacks.
|
11
8
|
|
12
|
-
ECIES can be used to encrypt messages to bitcoin addresses with keys published on the blockchain, and subsequently to decrypt messages by the holders of the address's private key.
|
9
|
+
ECIES can be used to encrypt messages to bitcoin addresses with public keys published on the blockchain, and subsequently to decrypt messages by the holders of the address's private key.
|
13
10
|
|
14
11
|
## Installation
|
15
12
|
|
@@ -28,7 +25,7 @@ require 'ecies'
|
|
28
25
|
Intitlialize a key and a `Crypt` object.
|
29
26
|
|
30
27
|
```ruby
|
31
|
-
key = OpenSSL::PKey::EC.
|
28
|
+
key = OpenSSL::PKey::EC.generate('secp256k1')
|
32
29
|
crypt = ECIES::Crypt.new
|
33
30
|
```
|
34
31
|
|
@@ -52,14 +49,14 @@ Bitcoin P2PKH addresses themselves contain only *hashes* of public keys (hence t
|
|
52
49
|
public_key = ECIES::Crypt.public_key_from_hex(
|
53
50
|
"04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb"\
|
54
51
|
"649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f")
|
55
|
-
encrypted = ECIES::Crypt.new.encrypt(public_key, '
|
52
|
+
encrypted = ECIES::Crypt.new.encrypt(public_key, 'secret message')
|
56
53
|
```
|
57
54
|
|
58
55
|
To decrypt this message, Satoshi would follow these steps:
|
59
56
|
|
60
57
|
```ruby
|
61
|
-
private_key =
|
62
|
-
ECIES::Crypt.new.decrypt(private_key, encrypted) # => "
|
58
|
+
private_key = OpenSSL::PKey::EC.new("<PEM/DER encoded private key for genesis block>")
|
59
|
+
ECIES::Crypt.new.decrypt(private_key, encrypted) # => "secret message"
|
63
60
|
```
|
64
61
|
|
65
62
|
### Default parameters
|
data/certs/jamoes.pem
CHANGED
@@ -1,21 +1,26 @@
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
2
|
-
|
2
|
+
MIIEeDCCAuCgAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMRMwEQYDVQQDDApzam1j
|
3
3
|
Y2FydGh5MRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNj
|
4
|
-
|
4
|
+
b20wHhcNMjMwNjIwMjEwMTI2WhcNMjQwNjE5MjEwMTI2WjBBMRMwEQYDVQQDDApz
|
5
5
|
am1jY2FydGh5MRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
6
|
+
FgNjb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDOGmdomo9zQxUD
|
7
|
+
PMEtDYtzY7Fnb/T/TVXAhKMO06Fw84eEMdU4yOUOMapsv6DinBMm0kDjseFkuqm+
|
8
|
+
BFYcU7AaGfKOuoPJQ23LuQOBXg5STw+pDKGdoq1th26M1v05Q9hCH4HVlGIiNPzx
|
9
|
+
J+0jFoH9qmiNhHxCD03702etb/ppJsCbBGzpMzofbgKQEHIKZNAkVi2RU2QLqXDt
|
10
|
+
A44wknz8NkiWahgN24cpLn/euz5G+J4nFgJ32YUBgA/mVXdeEOhxgMCPIbHIxiez
|
11
|
+
3c/yymARogxf6e9b3Pcwo1k63zTZYf9YHIM+Q5lKiOWOGQ1lUG3nanB9NhFdUkAk
|
12
|
+
PcuEzQUp5/pQmnoM/j+VpeXyvwiNLTzsxNRGfePSZU+oDpkEvlN1qaJXmHRpedWp
|
13
|
+
zOcUlVUpwFSWM1WWDGm4FCxoYH8GdYdHVXmUWWm/iPcfLCkXwNUXL+i38OXbVSp2
|
14
|
+
aqaXrRtkwZsfmE4PCHVUJyHFeVXLqvgK3DLVPfCGk6ty4X7wuXcCAwEAAaN7MHkw
|
15
|
+
CQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFELj2NEPT2elfT1kefaM
|
16
|
+
tcBz+k6QMB8GA1UdEQQYMBaBFHNqbWNjYXJ0aHlAZ21haWwuY29tMB8GA1UdEgQY
|
17
|
+
MBaBFHNqbWNjYXJ0aHlAZ21haWwuY29tMA0GCSqGSIb3DQEBCwUAA4IBgQBvbFzT
|
18
|
+
zHTVmJ2J3VvWf1J4HFTkLDtRi9lFLtPqvsNczd+FeO3s/pI9/gr56mBgpZ/vLypN
|
19
|
+
9CBkk4wR4GLifl8+xuDtVkYYh3Ru9S3ru8iu225aOIfg6MpKH7x+IsShxm7jdEva
|
20
|
+
AnqMQ47KEOdRetbBMIHeWtCSxyKhXSJsfoIh+fkQZlIM6+3l0ljTiRxo5Eb1JyEn
|
21
|
+
Wb+jyVwJugHuGPb2tB9dx+khKgrv0YQ0lxsIaqSYRT5pb3xZuJNoxj00IsZGOx0J
|
22
|
+
s5SzopHnmHWPS0h9CVcTa9QgEz5MbCk1X2rWhmUkGR0pzHdeq6vvWr0pxhpiWJdA
|
23
|
+
eaD1Uldg06Zi31RbAARghTuRKzg+SA9/DmglkO479GuEhZvGA0P2fBvKTaVAZR+4
|
24
|
+
Lb3ESftZmM+MReXZS5FfAeYJBG5+R/LDyMiuQIz6WLYcPpfHpSX873IXAcNYTCd4
|
25
|
+
RVHpiTyCFYjchqoOvSC7rHgf1HpEQbuXsl9RKWhSQOyTGlUGbCCGFDx10Dg=
|
26
|
+
-----END CERTIFICATE-----
|
data/ecies.gemspec
CHANGED
@@ -14,17 +14,14 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.homepage = 'https://github.com/jamoes/ecies'
|
15
15
|
s.license = 'MIT'
|
16
16
|
|
17
|
-
s.cert_chain = ['certs/jamoes.pem']
|
18
|
-
s.signing_key = File.expand_path("~/.ssh/gem-private_key.pem") if $0 =~ /gem\z/
|
19
|
-
|
20
17
|
s.files = `git ls-files`.split("\n")
|
21
18
|
s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
22
19
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
23
20
|
|
24
21
|
s.required_ruby_version = '>= 2.0'
|
25
22
|
|
26
|
-
s.add_development_dependency 'bundler', '~>
|
27
|
-
s.add_development_dependency 'rake', '~>
|
23
|
+
s.add_development_dependency 'bundler', '~> 2'
|
24
|
+
s.add_development_dependency 'rake', '~> 13'
|
28
25
|
s.add_development_dependency 'rspec', '~> 3.7'
|
29
26
|
s.add_development_dependency 'simplecov', '~> 0'
|
30
27
|
s.add_development_dependency 'yard', '~> 0.9.12'
|
data/lib/ecies/crypt.rb
CHANGED
@@ -60,10 +60,8 @@ module ECIES
|
|
60
60
|
key.public_key? or raise "Must have public key to encrypt"
|
61
61
|
@cipher.reset
|
62
62
|
|
63
|
-
|
64
|
-
|
65
|
-
ephemeral_key = OpenSSL::PKey::EC.new(group_copy).generate_key
|
66
|
-
ephemeral_public_key_octet = ephemeral_key.public_key.to_bn.to_s(2)
|
63
|
+
ephemeral_key = OpenSSL::PKey::EC.generate(key.group)
|
64
|
+
ephemeral_public_key_octet = ephemeral_key.public_key.to_octet_string(:compressed)
|
67
65
|
|
68
66
|
shared_secret = ephemeral_key.dh_compute_key(key.public_key)
|
69
67
|
|
@@ -90,10 +88,7 @@ module ECIES
|
|
90
88
|
key.private_key? or raise "Must have private key to decrypt"
|
91
89
|
@cipher.reset
|
92
90
|
|
93
|
-
|
94
|
-
group_copy.point_conversion_form = :compressed
|
95
|
-
|
96
|
-
ephemeral_public_key_length = group_copy.generator.to_bn.to_s(2).bytesize
|
91
|
+
ephemeral_public_key_length = key.group.generator.to_octet_string(:compressed).bytesize
|
97
92
|
ciphertext_length = encrypted_message.bytesize - ephemeral_public_key_length - @mac_length
|
98
93
|
ciphertext_length > 0 or raise OpenSSL::PKey::ECError, "Encrypted message too short"
|
99
94
|
|
@@ -101,7 +96,7 @@ module ECIES
|
|
101
96
|
ciphertext = encrypted_message.byteslice(ephemeral_public_key_length, ciphertext_length)
|
102
97
|
mac = encrypted_message.byteslice(-@mac_length, @mac_length)
|
103
98
|
|
104
|
-
ephemeral_public_key = OpenSSL::PKey::EC::Point.new(
|
99
|
+
ephemeral_public_key = OpenSSL::PKey::EC::Point.new(key.group, OpenSSL::BN.new(ephemeral_public_key_octet, 2))
|
105
100
|
|
106
101
|
shared_secret = key.dh_compute_key(ephemeral_public_key)
|
107
102
|
|
@@ -162,31 +157,19 @@ module ECIES
|
|
162
157
|
# @param ec_group [OpenSSL::PKey::EC::Group,String] The elliptical curve
|
163
158
|
# group for this public key.
|
164
159
|
# @return [OpenSSL::PKey::EC] The public key.
|
165
|
-
# @raise [
|
160
|
+
# @raise [ArgumentError] If the public key is invalid.
|
166
161
|
def self.public_key_from_hex(hex_string, ec_group = 'secp256k1')
|
167
162
|
ec_group = OpenSSL::PKey::EC::Group.new(ec_group) if ec_group.is_a?(String)
|
168
|
-
key = OpenSSL::PKey::EC.new(ec_group)
|
169
|
-
key.public_key = OpenSSL::PKey::EC::Point.new(ec_group, OpenSSL::BN.new(hex_string, 16))
|
170
|
-
key
|
171
|
-
end
|
172
163
|
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
# @raise [OpenSSL::PKey::ECError] If the private key is invalid.
|
183
|
-
def self.private_key_from_hex(hex_string, ec_group = 'secp256k1')
|
184
|
-
ec_group = OpenSSL::PKey::EC::Group.new(ec_group) if ec_group.is_a?(String)
|
185
|
-
key = OpenSSL::PKey::EC.new(ec_group)
|
186
|
-
key.private_key = OpenSSL::BN.new(hex_string, 16)
|
187
|
-
key.private_key < ec_group.order or raise OpenSSL::PKey::ECError, "Private key greater than group's order"
|
188
|
-
key.private_key > 1 or raise OpenSSL::PKey::ECError, "Private key too small"
|
189
|
-
key
|
164
|
+
sequence = OpenSSL::ASN1.Sequence([
|
165
|
+
OpenSSL::ASN1.Sequence([
|
166
|
+
OpenSSL::ASN1.ObjectId("id-ecPublicKey"),
|
167
|
+
OpenSSL::ASN1::ObjectId(ec_group.curve_name),
|
168
|
+
]),
|
169
|
+
OpenSSL::ASN1.BitString([hex_string].pack('H*')),
|
170
|
+
])
|
171
|
+
|
172
|
+
OpenSSL::PKey::EC.new(sequence.to_der)
|
190
173
|
end
|
191
174
|
end
|
192
175
|
end
|
data/lib/ecies/version.rb
CHANGED
data/lib/ecies.rb
CHANGED
data/spec/crypt_spec.rb
CHANGED
@@ -5,7 +5,7 @@ describe ECIES::Crypt do
|
|
5
5
|
describe 'Encryption and decryption' do
|
6
6
|
|
7
7
|
it 'Encrypts and decrypts' do
|
8
|
-
key = OpenSSL::PKey::EC.
|
8
|
+
key = OpenSSL::PKey::EC.generate('secp256k1')
|
9
9
|
crypt = ECIES::Crypt.new
|
10
10
|
|
11
11
|
encrypted = crypt.encrypt(key, 'secret')
|
@@ -16,23 +16,18 @@ describe ECIES::Crypt do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'Supports hex-encoded keys' do
|
19
|
-
key = OpenSSL::PKey::EC.
|
19
|
+
key = OpenSSL::PKey::EC.generate('secp256k1')
|
20
20
|
public_key_hex = key.public_key.to_bn.to_s(16)
|
21
|
-
private_key_hex = key.private_key.to_s(16)
|
22
21
|
|
23
22
|
public_key = ECIES::Crypt.public_key_from_hex(public_key_hex)
|
24
|
-
private_key = ECIES::Crypt.private_key_from_hex(private_key_hex)
|
25
23
|
|
26
24
|
expect(public_key.public_key).to eq key.public_key
|
27
|
-
expect(private_key.private_key).to eq key.private_key
|
28
25
|
|
29
|
-
expect{ ECIES::Crypt.public_key_from_hex(public_key_hex, 'secp224k1') }.to raise_error(
|
30
|
-
expect{ ECIES::Crypt.private_key_from_hex(private_key_hex, 'secp224k1') }.to raise_error(OpenSSL::PKey::ECError)
|
31
|
-
expect{ ECIES::Crypt.private_key_from_hex("00") }.to raise_error(OpenSSL::PKey::ECError)
|
26
|
+
expect{ ECIES::Crypt.public_key_from_hex(public_key_hex, 'secp224k1') }.to raise_error(ArgumentError)
|
32
27
|
end
|
33
28
|
|
34
29
|
it 'Supports other EC curves' do
|
35
|
-
key = OpenSSL::PKey::EC.
|
30
|
+
key = OpenSSL::PKey::EC.generate('secp224k1')
|
36
31
|
crypt = ECIES::Crypt.new
|
37
32
|
|
38
33
|
encrypted = crypt.encrypt(key, 'secret')
|
@@ -41,17 +36,16 @@ describe ECIES::Crypt do
|
|
41
36
|
|
42
37
|
context 'known value' do
|
43
38
|
before(:all) do
|
44
|
-
OpenSSL::PKey::EC.
|
45
|
-
# Overwrites `
|
39
|
+
OpenSSL::PKey::EC.instance_eval do
|
40
|
+
# Overwrites `generate` for both the key generated below, and the
|
46
41
|
# ephemeral_key generated in the `encrypt` method.
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
self
|
42
|
+
# The private_key is equal to '2', and the group is 'secp256k1'.
|
43
|
+
def generate(group)
|
44
|
+
OpenSSL::PKey::EC.new("0t\x02\x01\x01\x04 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xA0\a\x06\x05+\x81\x04\x00\n\xA1D\x03B\x00\x04\xC6\x04\x7F\x94A\xED}m0E@n\x95\xC0|\xD8\\w\x8EK\x8C\xEF<\xA7\xAB\xAC\t\xB9\\p\x9E\xE5\x1A\xE1h\xFE\xA6=\xC39\xA3\xC5\x84\x19Fl\xEA\xEE\xF7\xF62e2f\xD0\xE1#d1\xA9P\xCF\xE5*")
|
51
45
|
end
|
52
46
|
end
|
53
47
|
|
54
|
-
@key = OpenSSL::PKey::EC.
|
48
|
+
@key = OpenSSL::PKey::EC.generate('secp256k1')
|
55
49
|
end
|
56
50
|
|
57
51
|
[
|
@@ -83,7 +77,7 @@ describe ECIES::Crypt do
|
|
83
77
|
end
|
84
78
|
|
85
79
|
it 'Raises on unknown cipher or digest' do
|
86
|
-
key = OpenSSL::PKey::EC.
|
80
|
+
key = OpenSSL::PKey::EC.generate('secp256k1')
|
87
81
|
|
88
82
|
expect{ ECIES::Crypt.new(digest: 'foo') }.to raise_error(RuntimeError)
|
89
83
|
expect{ ECIES::Crypt.new(digest: 'md5') }.to raise_error(RuntimeError)
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,36 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ecies
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen McCarthy
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
13
|
+
MIIEeDCCAuCgAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMRMwEQYDVQQDDApzam1j
|
14
14
|
Y2FydGh5MRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNj
|
15
|
-
|
15
|
+
b20wHhcNMjMwNjIwMjEwMTI2WhcNMjQwNjE5MjEwMTI2WjBBMRMwEQYDVQQDDApz
|
16
16
|
am1jY2FydGh5MRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
17
|
+
FgNjb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDOGmdomo9zQxUD
|
18
|
+
PMEtDYtzY7Fnb/T/TVXAhKMO06Fw84eEMdU4yOUOMapsv6DinBMm0kDjseFkuqm+
|
19
|
+
BFYcU7AaGfKOuoPJQ23LuQOBXg5STw+pDKGdoq1th26M1v05Q9hCH4HVlGIiNPzx
|
20
|
+
J+0jFoH9qmiNhHxCD03702etb/ppJsCbBGzpMzofbgKQEHIKZNAkVi2RU2QLqXDt
|
21
|
+
A44wknz8NkiWahgN24cpLn/euz5G+J4nFgJ32YUBgA/mVXdeEOhxgMCPIbHIxiez
|
22
|
+
3c/yymARogxf6e9b3Pcwo1k63zTZYf9YHIM+Q5lKiOWOGQ1lUG3nanB9NhFdUkAk
|
23
|
+
PcuEzQUp5/pQmnoM/j+VpeXyvwiNLTzsxNRGfePSZU+oDpkEvlN1qaJXmHRpedWp
|
24
|
+
zOcUlVUpwFSWM1WWDGm4FCxoYH8GdYdHVXmUWWm/iPcfLCkXwNUXL+i38OXbVSp2
|
25
|
+
aqaXrRtkwZsfmE4PCHVUJyHFeVXLqvgK3DLVPfCGk6ty4X7wuXcCAwEAAaN7MHkw
|
26
|
+
CQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFELj2NEPT2elfT1kefaM
|
27
|
+
tcBz+k6QMB8GA1UdEQQYMBaBFHNqbWNjYXJ0aHlAZ21haWwuY29tMB8GA1UdEgQY
|
28
|
+
MBaBFHNqbWNjYXJ0aHlAZ21haWwuY29tMA0GCSqGSIb3DQEBCwUAA4IBgQBvbFzT
|
29
|
+
zHTVmJ2J3VvWf1J4HFTkLDtRi9lFLtPqvsNczd+FeO3s/pI9/gr56mBgpZ/vLypN
|
30
|
+
9CBkk4wR4GLifl8+xuDtVkYYh3Ru9S3ru8iu225aOIfg6MpKH7x+IsShxm7jdEva
|
31
|
+
AnqMQ47KEOdRetbBMIHeWtCSxyKhXSJsfoIh+fkQZlIM6+3l0ljTiRxo5Eb1JyEn
|
32
|
+
Wb+jyVwJugHuGPb2tB9dx+khKgrv0YQ0lxsIaqSYRT5pb3xZuJNoxj00IsZGOx0J
|
33
|
+
s5SzopHnmHWPS0h9CVcTa9QgEz5MbCk1X2rWhmUkGR0pzHdeq6vvWr0pxhpiWJdA
|
34
|
+
eaD1Uldg06Zi31RbAARghTuRKzg+SA9/DmglkO479GuEhZvGA0P2fBvKTaVAZR+4
|
35
|
+
Lb3ESftZmM+MReXZS5FfAeYJBG5+R/LDyMiuQIz6WLYcPpfHpSX873IXAcNYTCd4
|
36
|
+
RVHpiTyCFYjchqoOvSC7rHgf1HpEQbuXsl9RKWhSQOyTGlUGbCCGFDx10Dg=
|
32
37
|
-----END CERTIFICATE-----
|
33
|
-
date:
|
38
|
+
date: 2023-06-20 00:00:00.000000000 Z
|
34
39
|
dependencies:
|
35
40
|
- !ruby/object:Gem::Dependency
|
36
41
|
name: bundler
|
@@ -38,28 +43,28 @@ dependencies:
|
|
38
43
|
requirements:
|
39
44
|
- - "~>"
|
40
45
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
46
|
+
version: '2'
|
42
47
|
type: :development
|
43
48
|
prerelease: false
|
44
49
|
version_requirements: !ruby/object:Gem::Requirement
|
45
50
|
requirements:
|
46
51
|
- - "~>"
|
47
52
|
- !ruby/object:Gem::Version
|
48
|
-
version: '
|
53
|
+
version: '2'
|
49
54
|
- !ruby/object:Gem::Dependency
|
50
55
|
name: rake
|
51
56
|
requirement: !ruby/object:Gem::Requirement
|
52
57
|
requirements:
|
53
58
|
- - "~>"
|
54
59
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
60
|
+
version: '13'
|
56
61
|
type: :development
|
57
62
|
prerelease: false
|
58
63
|
version_requirements: !ruby/object:Gem::Requirement
|
59
64
|
requirements:
|
60
65
|
- - "~>"
|
61
66
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
67
|
+
version: '13'
|
63
68
|
- !ruby/object:Gem::Dependency
|
64
69
|
name: rspec
|
65
70
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,7 +163,7 @@ homepage: https://github.com/jamoes/ecies
|
|
158
163
|
licenses:
|
159
164
|
- MIT
|
160
165
|
metadata: {}
|
161
|
-
post_install_message:
|
166
|
+
post_install_message:
|
162
167
|
rdoc_options: []
|
163
168
|
require_paths:
|
164
169
|
- lib
|
@@ -173,9 +178,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
178
|
- !ruby/object:Gem::Version
|
174
179
|
version: '0'
|
175
180
|
requirements: []
|
176
|
-
|
177
|
-
|
178
|
-
signing_key:
|
181
|
+
rubygems_version: 3.3.25
|
182
|
+
signing_key:
|
179
183
|
specification_version: 4
|
180
184
|
summary: Elliptical Curve Integrated Encryption System (ECIES), as specified by SEC
|
181
185
|
1 - Ver. 2.0
|
metadata.gz.sig
CHANGED
Binary file
|