ltec 0.1.2.1 → 0.1.3.1

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: '03697e7fabf23a184b396daae01ad33bfb8a32c0bc18cab3e9e55ebc9965d7ba'
4
- data.tar.gz: 5ea079a36ffc2826825d5e83978f43c39cdb777c7f211c0a61b0f7c0ce9eb177
3
+ metadata.gz: 4462131c0f6935940280b27ea86048e4ce910b8de3dd5574a0d6753882175006
4
+ data.tar.gz: 03014401031ca4f908bdbce8d825552f171b560b5c6172dacbec0be0d1fec4d6
5
5
  SHA512:
6
- metadata.gz: d0ad04905be46f2d67f01ca3a2b8024d57c9596b4de312805bc8169412b996d8b2609e841b7b89025e472b76920d76ec57f6321c98172a8954e9b8d5708f1251
7
- data.tar.gz: 88a4e880a62686cd0b51ee8c461913d21847400cf83259ef5c95cf3b5222bd71c81b16e45f1e5b7d845e5842bcd30857905026a49d2aa39358f8ed5338169dee
6
+ metadata.gz: b4e19f949f43e833aacc80bb13cd2df6fe596a552a816fa3d63f87668844bf0056673b28f4fe37a45ba021fcbeec05b08479d1a2b3d4572c2ecc71d837cbcf41
7
+ data.tar.gz: d2a3fd3b41d11f830a14a978f4d163eff7ae1d40686b65760a9e50270598ea25881cbab29339afb24e0eba1466047120ba7a33e26c872ab824715f4ac9f05986
data/Gemfile CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source "https://rubygems.org"
3
+ # source "https://rubygems.org"
4
+ source "https://gems.ruby-china.com"
4
5
 
5
6
  # Specify your gem's dependencies in ltec.gemspec
6
7
  gemspec
data/Gemfile.lock CHANGED
@@ -1,25 +1,23 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ltec (0.1.2.1)
4
+ ltec (0.1.3)
5
5
  base64 (~> 0.1.0)
6
- openssl (~> 2.2.0)
6
+ openssl
7
7
 
8
8
  GEM
9
- remote: https://rubygems.org/
9
+ remote: https://gems.ruby-china.com/
10
10
  specs:
11
11
  base64 (0.1.1)
12
- ipaddr (1.2.4)
13
- openssl (2.2.1)
14
- ipaddr
12
+ openssl (3.1.0)
15
13
  rake (13.0.6)
16
14
 
17
15
  PLATFORMS
18
- x86_64-darwin-20
16
+ arm64-darwin-22
19
17
 
20
18
  DEPENDENCIES
21
19
  ltec!
22
20
  rake (~> 13.0)
23
21
 
24
22
  BUNDLED WITH
25
- 2.3.13
23
+ 2.4.1
data/exe/ltectool CHANGED
@@ -15,7 +15,7 @@ require "ltec"
15
15
  cmd = ARGV[0]
16
16
 
17
17
  if cmd == 'g'
18
- kp = Ltec::EC.generateKeyPair()
18
+ kp = Ltec::EC.generateKeyPair(ARGV[1])
19
19
  puts "publickey: #{kp['pubkey']}"
20
20
  puts "privatekey: #{kp['seckey']}"
21
21
  elsif cmd == 'e'
@@ -33,7 +33,7 @@ else
33
33
  puts <<EOF
34
34
  ltectool cmd [options]
35
35
  commands
36
- g generate key pair
36
+ g [privateKey] generate key pair
37
37
  e publickey message
38
38
  d privatekey message
39
39
 
data/lib/ltec/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ltec
4
- VERSION = "0.1.2.1"
4
+ VERSION = "0.1.3.1"
5
5
  end
data/lib/ltec.rb CHANGED
@@ -28,11 +28,43 @@ module Ltec
28
28
  return base64.unpack("m*")[0].unpack('H*')[0]
29
29
  end
30
30
 
31
- def EC.generateKeyPair()
32
- ec1 = OpenSSL::PKey::EC.generate(SECP256K1)
33
- seckey = EC.hexToBase64(ec1.private_key.to_s(16))
34
- pubkey = EC.hexToBase64(ec1.public_key.to_bn(:compressed).to_s(16))
35
- return {"seckey" => seckey.strip,"pubkey" => pubkey.strip}
31
+ def EC.generateKeyPair(inputSecKey)
32
+ if inputSecKey
33
+ puts "generate key pair from secret key"
34
+ if inputSecKey.length < 44 # 32 byte
35
+ throw "secret key length error ,it's 32 "
36
+
37
+ end
38
+
39
+ ec = OpenSSL::PKey::EC.new(SECP256K1)
40
+ pubNum = OpenSSL::BN.new("1",16)
41
+ tmpPt = OpenSSL::PKey::EC::Point.new(ec.group)
42
+
43
+ priKey = OpenSSL::BN.new(toHex(base64Decode(inputSecKey)),16)
44
+
45
+ maxStr = 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141'
46
+ OpenSSL
47
+ max = OpenSSL::BN.new(maxStr,16)
48
+ if priKey >= max
49
+ throw "Private Key must be smaller than #{maxStr}"
50
+ end
51
+
52
+
53
+
54
+
55
+ pubPt = tmpPt.mul(0,priKey)
56
+ hexpt = pubPt.to_bn(:compressed).to_s(16)
57
+ pub64 = hexToBase64(hexpt)
58
+
59
+ return {"seckey" => inputSecKey.strip,"pubkey" => pub64.strip}
60
+ else
61
+ puts 'create New key pair'
62
+ ec1 = OpenSSL::PKey::EC.generate(SECP256K1)
63
+ seckey = EC.hexToBase64(ec1.private_key.to_s(16))
64
+ pubkey = EC.hexToBase64(ec1.public_key.to_bn(:compressed).to_s(16))
65
+ return {"seckey" => seckey.strip,"pubkey" => pubkey.strip}
66
+ end
67
+
36
68
  end
37
69
 
38
70
  def EC.encrypt(pubKey,msg)
data/lib/test.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require_relative "ltec"
4
4
 
5
- kp = Ltec::EC.generateKeyPair()
5
+ kp = Ltec::EC.generateKeyPair(ARGV[0])
6
6
  puts kp
7
7
  msg = "hello"
8
8
  msg2 = "hello world3"
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ltec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2.1
4
+ version: 0.1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - vitock
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-16 00:00:00.000000000 Z
11
+ date: 2023-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: openssl
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 2.2.0
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 2.2.0
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: base64
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -54,7 +54,6 @@ files:
54
54
  - lib/ltec.rb
55
55
  - lib/ltec/version.rb
56
56
  - lib/test.rb
57
- - ltec.gemspec
58
57
  - sig/ltec.rbs
59
58
  homepage: https://github.com/vitock/ltec_rb.git
60
59
  licenses: []
@@ -62,7 +61,7 @@ metadata:
62
61
  homepage_uri: https://github.com/vitock/ltec_rb.git
63
62
  source_code_uri: https://github.com/vitock/ltec_rb.git
64
63
  changelog_uri: https://github.com/vitock/ltec_rb/blob/master/README.md
65
- post_install_message:
64
+ post_install_message:
66
65
  rdoc_options: []
67
66
  require_paths:
68
67
  - lib
@@ -77,8 +76,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
76
  - !ruby/object:Gem::Version
78
77
  version: '0'
79
78
  requirements: []
80
- rubygems_version: 3.2.15
81
- signing_key:
79
+ rubygems_version: 3.2.33
80
+ signing_key:
82
81
  specification_version: 4
83
82
  summary: using ECC to enrypt private message
84
83
  test_files: []
data/ltec.gemspec DELETED
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "lib/ltec/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "ltec"
7
- spec.version = Ltec::VERSION
8
- spec.authors = ["vitock"]
9
- spec.email = [""]
10
-
11
- spec.summary = "using ECC to enrypt private message"
12
- spec.description = "using ECC to enrypt private message with ruby ,the curve is SECP256k1 "
13
- spec.homepage = "https://github.com/vitock/ltec_rb.git"
14
- spec.required_ruby_version = ">= 2.6.0"
15
-
16
- # spec.metadata["allowed_push_host"] = "TODO: Set to your gem server 'https://example.com'"
17
-
18
- spec.metadata["homepage_uri"] = spec.homepage
19
- spec.metadata["source_code_uri"] = "https://github.com/vitock/ltec_rb.git"
20
- spec.metadata["changelog_uri"] = "https://github.com/vitock/ltec_rb/blob/master/README.md"
21
-
22
- # Specify which files should be added to the gem when it is released.
23
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
24
- spec.files = Dir.chdir(__dir__) do
25
- `git ls-files -z`.split("\x0").reject do |f|
26
- (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
27
- end
28
- end
29
- spec.bindir = "exe"
30
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
31
- spec.require_paths = ["lib"]
32
-
33
- # Uncomment to register a new dependency of your gem
34
- # spec.add_dependency "example-gem", "~> 1.0"
35
-
36
- spec.add_dependency "openssl", "~> 2.2.0"
37
- spec.add_dependency "base64", "~> 0.1.0"
38
-
39
-
40
- # For more information and examples about making a new gem, check out our
41
- # guide at: https://bundler.io/guides/creating_gem.html
42
- end