ltec 0.1.2.1 → 0.1.3

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: 7ce0a8046af3c372c5d9747dfd683b81c3932c140bc6def663e8a2e906c40d06
4
+ data.tar.gz: 2c4ba23adb846477de6e15626b25f691f6ebcb2c024786fdb5668a028345d4db
5
5
  SHA512:
6
- metadata.gz: d0ad04905be46f2d67f01ca3a2b8024d57c9596b4de312805bc8169412b996d8b2609e841b7b89025e472b76920d76ec57f6321c98172a8954e9b8d5708f1251
7
- data.tar.gz: 88a4e880a62686cd0b51ee8c461913d21847400cf83259ef5c95cf3b5222bd71c81b16e45f1e5b7d845e5842bcd30857905026a49d2aa39358f8ed5338169dee
6
+ metadata.gz: 0c587741da4cf932e833ffa0f02ac0fa72b602bf53350f1fcad7ff87a798f97a5eab215cb9019ccb8c6b0fce532ee062e9e92e7d7e79eca2af377afdde4a8f85
7
+ data.tar.gz: f9a4ece61730d029d94f2bd8431c4de373360d908694cc12fa49ff77449cb7c634e46085e8b4595baacc8c7017cb8117e05c8f03be25f23c9cf54f27b1cbb767
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
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
6
  openssl (~> 2.2.0)
7
7
 
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"
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,14 +1,14 @@
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
5
5
  platform: ruby
6
6
  authors:
7
7
  - vitock
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-16 00:00:00.000000000 Z
11
+ date: 2022-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: openssl