ltec 0.1.2.1 → 0.1.3.1

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: '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