ecies 0.3.0 → 0.4.0

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: e8ed7a562b019fdcd96fabaacd5a7617577b0b640812a4473997b82e0beb5bd2
4
- data.tar.gz: bc8b871ae2ea77b8d3288c01dc741b5268ca165a8b154c4cf2ce821ce3abdc5e
3
+ metadata.gz: ccdc4376e7e505685dafd7456609bee87adb7909ee863dea0a02a46bc10ea9ec
4
+ data.tar.gz: c2c8c601e446e361ea28d9605108ba52b5df6d3444b20093f410ac6cee73621a
5
5
  SHA512:
6
- metadata.gz: 7e2c2db8d8b2323d7854a265217ef03d0f82ae4e57b5c597a73e8e348ae9ac06cf981349c6b6cfc8e6bb7b6dd50ed31eb72e4701650e15ca6e42f2703d560022
7
- data.tar.gz: 3a34f70a7d4cabe2712681b3ef1bc446a6ee53d578f7051f3e12b4b529d9ca82188471f7787933f28301e8e3008dacba2ae42cabfbc6a236e796c7d0efee73f7
6
+ metadata.gz: 14dcb2ccec245e71d68eb63b520d320c6e39b330a2f01fd59848ce9ff0d6436d90e100eb5b5857bda40b780dedf365d2bfc4f14dbca9ca8b612560bb82a5c111
7
+ data.tar.gz: dd259230ce124924f5269b1fbb966ea17207ee41dcc206669d1eccc74e62ccd35803f9c96c869011333526cf5c8a03175d671abbf27356d117e5502d42e54d51
checksums.yaml.gz.sig CHANGED
@@ -1,2 +1,2 @@
1
- ����a*@hYԍ#F��-��3�?����%@+1��=-j�<X
2
- ���{�%H,��y[��Z2\9T���1[V����[<`Y�ړD\��L$)��G^ٛ� x��@��#:�Ҿ��Wwz������Ҳ:RU�iA��c��q�
1
+ �������=xu8
2
+ x��;���YE�D]B��'�Z�����r���c$�{1L���kWm�ѓ����2E��6zp���
data/.gitignore CHANGED
@@ -5,3 +5,4 @@ Gemfile.lock
5
5
  coverage/
6
6
  doc/
7
7
  .yardoc/
8
+ .bundle/
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
- [![Build Status](https://travis-ci.org/jamoes/ecies.svg?branch=master)](https://travis-ci.org/jamoes/ecies)
4
- [![Gem Version](https://badge.fury.io/rb/ecies.svg)](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.new('secp256k1').generate_key
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, 'you rock!')
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 = ECIES::Crypt.private_key_from_hex("<satoshi's private key>")
62
- ECIES::Crypt.new.decrypt(private_key, encrypted) # => "you rock!"
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
- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBBMRMwEQYDVQQDDApzam1j
2
+ MIIEeDCCAuCgAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMRMwEQYDVQQDDApzam1j
3
3
  Y2FydGh5MRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNj
4
- b20wHhcNMTgwNDExMDAxMzI4WhcNMTkwNDExMDAxMzI4WjBBMRMwEQYDVQQDDApz
4
+ b20wHhcNMjMwNjIwMjEwMTI2WhcNMjQwNjE5MjEwMTI2WjBBMRMwEQYDVQQDDApz
5
5
  am1jY2FydGh5MRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
6
- FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDOk2n/6xgIgrG7
7
- avtiI8I9DtcdA326qWYpdQSDLhpSsLNiqiIpo8KF1Zfy3lnAj6JBBIbjiaUsbA/i
8
- Wcip0307dHNXZjr+AgYcL7OEp8EBkfAeZaYWMcVBbjiSxkzYesDxm7nvTOaD317h
9
- cThBfB9KW1vGEzazomTxSI9sgqCDtWrogMLGag7uTDJ7fKRK6YXz2xncI0uCsmGb
10
- 7vekXpfn0xb6tr4ljSseCsPJHnXK7SKB4dzHsmQJ12A57aaV7C/bGqbQAC6odb6k
11
- V8dw0fnmHC9OSYjV1b2Xr0VmoiT3YA4XsR0/LbeZvGOyQj8S4eHxgFg7wTVhCkCZ
12
- D89+p8H5AgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
13
- BBQffCJK6PE+9XaH56VJoFoCl3ECeDAfBgNVHREEGDAWgRRzam1jY2FydGh5QGdt
14
- YWlsLmNvbTAfBgNVHRIEGDAWgRRzam1jY2FydGh5QGdtYWlsLmNvbTANBgkqhkiG
15
- 9w0BAQUFAAOCAQEApvFGCB9uyF1mh1UV77YICagARejAIOhzOcZXjlpulI9xXjQY
16
- 0QK6P1GdwwE/pgT7YjfJR7VNFobare4WdfCzoWCFc34t2vJwrqkkOB3U7v3TjB+p
17
- z/o2pZKLpNEL4bYJBEbd+vAad/nP1v5e2sCmLm86vSoOwiyQnifmP6PSORObbJF4
18
- 455zxYw1un6NfN0m+pnIKwvshKoOCgI05VJGtEolJoo42fnolmNxa2t6B30Mfmf+
19
- kts216EGG4oP6dVuZmf2Ii2F4lQTBDdZM/cisW8jCkO7KeEzJAPhIw1JJwHltHya
20
- 0TpOI3t2Mz/FJ+rudtz9PJ/d8QvhrF7M7+qH4w==
21
- -----END CERTIFICATE-----
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', '~> 1'
27
- s.add_development_dependency 'rake', '~> 12'
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
- group_copy = OpenSSL::PKey::EC::Group.new(key.group)
64
- group_copy.point_conversion_form = :compressed
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
- group_copy = OpenSSL::PKey::EC::Group.new(key.group)
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(group_copy, OpenSSL::BN.new(ephemeral_public_key_octet, 2))
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 [OpenSSL::PKey::EC::Point::Error] If the public key is invalid.
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
- # Converts a hex-encoded private key to an `OpenSSL::PKey::EC`.
174
- #
175
- # @param hex_string [String] The hex-encoded private key.
176
- # @param ec_group [OpenSSL::PKey::EC::Group,String] The elliptical curve
177
- # group for this private key.
178
- # @return [OpenSSL::PKey::EC] The private key.
179
- # @note The returned key only contains the private component. In order to
180
- # populate the public component of the key, you must compute it as
181
- # follows: `key.public_key = key.group.generator.mul(key.private_key)`.
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
@@ -1,4 +1,4 @@
1
1
  module ECIES
2
2
  # This gem's version.
3
- VERSION = '0.3.0'
3
+ VERSION = '0.4.0'
4
4
  end
data/lib/ecies.rb CHANGED
@@ -1,7 +1,8 @@
1
1
  require 'openssl'
2
+ require 'stringio'
2
3
 
3
- require 'ecies/crypt.rb'
4
- require 'ecies/version.rb'
4
+ require_relative 'ecies/crypt.rb'
5
+ require_relative 'ecies/version.rb'
5
6
 
6
7
  # The top-level module for the ecies gem.
7
8
  module ECIES
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.new('secp256k1').generate_key
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.new('secp256k1').generate_key
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(OpenSSL::PKey::EC::Point::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.new('secp224k1').generate_key
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.class_eval do
45
- # Overwrites `generate_key` for both the key generated below, and the
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
- def generate_key
48
- self.private_key = 2
49
- self.public_key = group.generator.mul(private_key)
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.new('secp256k1').generate_key
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.new('secp256k1').generate_key
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.3.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
- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBBMRMwEQYDVQQDDApzam1j
13
+ MIIEeDCCAuCgAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMRMwEQYDVQQDDApzam1j
14
14
  Y2FydGh5MRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNj
15
- b20wHhcNMTgwNDExMDAxMzI4WhcNMTkwNDExMDAxMzI4WjBBMRMwEQYDVQQDDApz
15
+ b20wHhcNMjMwNjIwMjEwMTI2WhcNMjQwNjE5MjEwMTI2WjBBMRMwEQYDVQQDDApz
16
16
  am1jY2FydGh5MRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
17
- FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDOk2n/6xgIgrG7
18
- avtiI8I9DtcdA326qWYpdQSDLhpSsLNiqiIpo8KF1Zfy3lnAj6JBBIbjiaUsbA/i
19
- Wcip0307dHNXZjr+AgYcL7OEp8EBkfAeZaYWMcVBbjiSxkzYesDxm7nvTOaD317h
20
- cThBfB9KW1vGEzazomTxSI9sgqCDtWrogMLGag7uTDJ7fKRK6YXz2xncI0uCsmGb
21
- 7vekXpfn0xb6tr4ljSseCsPJHnXK7SKB4dzHsmQJ12A57aaV7C/bGqbQAC6odb6k
22
- V8dw0fnmHC9OSYjV1b2Xr0VmoiT3YA4XsR0/LbeZvGOyQj8S4eHxgFg7wTVhCkCZ
23
- D89+p8H5AgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
24
- BBQffCJK6PE+9XaH56VJoFoCl3ECeDAfBgNVHREEGDAWgRRzam1jY2FydGh5QGdt
25
- YWlsLmNvbTAfBgNVHRIEGDAWgRRzam1jY2FydGh5QGdtYWlsLmNvbTANBgkqhkiG
26
- 9w0BAQUFAAOCAQEApvFGCB9uyF1mh1UV77YICagARejAIOhzOcZXjlpulI9xXjQY
27
- 0QK6P1GdwwE/pgT7YjfJR7VNFobare4WdfCzoWCFc34t2vJwrqkkOB3U7v3TjB+p
28
- z/o2pZKLpNEL4bYJBEbd+vAad/nP1v5e2sCmLm86vSoOwiyQnifmP6PSORObbJF4
29
- 455zxYw1un6NfN0m+pnIKwvshKoOCgI05VJGtEolJoo42fnolmNxa2t6B30Mfmf+
30
- kts216EGG4oP6dVuZmf2Ii2F4lQTBDdZM/cisW8jCkO7KeEzJAPhIw1JJwHltHya
31
- 0TpOI3t2Mz/FJ+rudtz9PJ/d8QvhrF7M7+qH4w==
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: 2018-04-22 00:00:00.000000000 Z
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: '1'
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: '1'
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: '12'
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: '12'
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
- rubyforge_project:
177
- rubygems_version: 2.7.6
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