ltec 0.1.1 → 0.1.2
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
- data/Gemfile.lock +5 -3
- data/lib/ltec/version.rb +1 -1
- data/lib/ltec.rb +27 -13
- data/lib/test.rb +20 -0
- data/ltec.gemspec +0 -1
- metadata +3 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fb6af2beec7f8bbecdf9ab6f626f7241ab135a750cb0d9149a681f11b88c13cf
|
|
4
|
+
data.tar.gz: b13e8e025bffa6da9e2820b64758f85491da2b4c987ef76b81e7f200a9ee5e07
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 315ddf7858cb471ff3ef415e05c464519da4417bea2a74084cea74344cb3df9ee961359b262289e8f0f38ba3134a8ddc0e4ceaca79260ea9847e5ea6b02e9cd7
|
|
7
|
+
data.tar.gz: 2d7919deac25120018c9a75b6e3ec65350837f95bb86038702143f56851a0096db9047fe6f484e5271bb26eaf0df16f35f7733f720a378bd7fdc3065fe126516
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
ltec (0.1.
|
|
4
|
+
ltec (0.1.1)
|
|
5
5
|
base64 (~> 0.1.0)
|
|
6
6
|
openssl (~> 2.2.0)
|
|
7
7
|
salsa20 (~> 0.1.3)
|
|
@@ -9,8 +9,10 @@ PATH
|
|
|
9
9
|
GEM
|
|
10
10
|
remote: https://rubygems.org/
|
|
11
11
|
specs:
|
|
12
|
-
base64 (0.1.
|
|
13
|
-
|
|
12
|
+
base64 (0.1.1)
|
|
13
|
+
ipaddr (1.2.4)
|
|
14
|
+
openssl (2.2.1)
|
|
15
|
+
ipaddr
|
|
14
16
|
rake (13.0.3)
|
|
15
17
|
salsa20 (0.1.3)
|
|
16
18
|
|
data/lib/ltec/version.rb
CHANGED
data/lib/ltec.rb
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
require_relative "ltec/version"
|
|
4
4
|
require 'openssl'
|
|
5
5
|
require "base64"
|
|
6
|
-
require 'salsa20'
|
|
7
6
|
|
|
8
7
|
module Ltec
|
|
9
8
|
class Error < StandardError; end
|
|
@@ -65,24 +64,35 @@ module Ltec
|
|
|
65
64
|
|
|
66
65
|
dhHash = OpenSSL::Digest.digest("SHA512", ptX)
|
|
67
66
|
|
|
68
|
-
nonce = OpenSSL::Random.random_bytes(
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
nonce = OpenSSL::Random.random_bytes(16)
|
|
68
|
+
|
|
69
|
+
encryptor = OpenSSL::Cipher::AES256.new(:CBC)
|
|
70
|
+
encryptor.encrypt
|
|
71
|
+
encryptor.key = dhHash[0...32]
|
|
72
|
+
encryptor.iv = nonce
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
# encryptor = Salsa20.new(dhHash[0...32], nonce)
|
|
76
|
+
encrypted_text = encryptor.update(msg) + encryptor.final
|
|
77
|
+
puts 1123
|
|
72
78
|
dataforMac = nonce + empherPub + encrypted_text
|
|
73
79
|
mac = OpenSSL::HMAC.digest('sha256', dhHash[32,64], dataforMac)
|
|
74
80
|
|
|
75
81
|
#
|
|
76
|
-
return base64(fromHex('
|
|
82
|
+
return base64(fromHex('0100100020002100') + nonce + mac + empherPub + encrypted_text)
|
|
77
83
|
|
|
78
84
|
end
|
|
79
85
|
|
|
80
86
|
def EC.decrypt(secKey,base64Cipher)
|
|
81
87
|
encResult = base64Decode(base64Cipher)
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
88
|
+
start = 8
|
|
89
|
+
nonce = encResult[start...(start + 16)]
|
|
90
|
+
start = start + 16;
|
|
91
|
+
mac = encResult[start...(start + 32)]
|
|
92
|
+
start = start + 32;
|
|
93
|
+
tmpPub = encResult[start...(start + 33)]
|
|
94
|
+
start = start + 33;
|
|
95
|
+
dataEnc = encResult[start...(encResult.length)]
|
|
86
96
|
|
|
87
97
|
tmpPubHex = toHex(tmpPub)
|
|
88
98
|
ec = OpenSSL::PKey::EC.new(SECP256K1)
|
|
@@ -105,9 +115,13 @@ module Ltec
|
|
|
105
115
|
if mac2 != mac
|
|
106
116
|
raise 'Mac not Fit,the privateKey is not fit'
|
|
107
117
|
end
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
118
|
+
# encryptor = Salsa20.new(key, nonce)
|
|
119
|
+
# txt = encryptor.decrypt(dataEnc)
|
|
120
|
+
encryptor = OpenSSL::Cipher::AES256.new(:CBC)
|
|
121
|
+
encryptor.decrypt
|
|
122
|
+
encryptor.key = key
|
|
123
|
+
encryptor.iv = nonce
|
|
124
|
+
txt = encryptor.update(dataEnc) + encryptor.final
|
|
111
125
|
return txt
|
|
112
126
|
end
|
|
113
127
|
end
|
data/lib/test.rb
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "ltec"
|
|
4
|
+
|
|
5
|
+
kp = Ltec::EC.generateKeyPair()
|
|
6
|
+
puts kp
|
|
7
|
+
msg = "hello"
|
|
8
|
+
msg2 = "hello world3"
|
|
9
|
+
|
|
10
|
+
enc1 = Ltec::EC.encrypt(kp['pubkey'],msg)
|
|
11
|
+
dec1 = Ltec::EC.decrypt(kp['seckey'],enc1)
|
|
12
|
+
puts enc1
|
|
13
|
+
puts dec1
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
enc2 = Ltec::EC.encrypt(kp['pubkey'],msg2)
|
|
18
|
+
dec2 = Ltec::EC.decrypt(kp['seckey'],enc2)
|
|
19
|
+
puts enc2
|
|
20
|
+
puts dec2
|
data/ltec.gemspec
CHANGED
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.
|
|
4
|
+
version: 0.1.2
|
|
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-
|
|
11
|
+
date: 2022-05-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: openssl
|
|
@@ -38,20 +38,6 @@ dependencies:
|
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: 0.1.0
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: salsa20
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - "~>"
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: 0.1.3
|
|
48
|
-
type: :runtime
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - "~>"
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: 0.1.3
|
|
55
41
|
description: 'using ECC to enrypt private message with ruby ,the curve is SECP256k1 '
|
|
56
42
|
email:
|
|
57
43
|
- ''
|
|
@@ -67,6 +53,7 @@ files:
|
|
|
67
53
|
- exe/ltectool
|
|
68
54
|
- lib/ltec.rb
|
|
69
55
|
- lib/ltec/version.rb
|
|
56
|
+
- lib/test.rb
|
|
70
57
|
- ltec.gemspec
|
|
71
58
|
- sig/ltec.rbs
|
|
72
59
|
homepage: https://github.com/vitock/ltec_rb.git
|