sr25519 0.4.0 → 0.5.0
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 +3 -1
- data/README.md +8 -8
- data/lib/ed25519_lib.rb +34 -0
- data/lib/sr25519/version.rb +1 -1
- data/lib/sr25519.rb +1 -0
- data/lib/sr25519_lib.rb +3 -3
- data/sr25519.gemspec +1 -1
- metadata +22 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44105512b5755bf3546a091610d99350213160f42b06d29a07953392fa5501a3
|
4
|
+
data.tar.gz: ac679e045e419dfb81ffd68350f6a26349b6da1ddc5b5e62a9a1314e27b4bf23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1cc0b885e8699c81d2b98636042e64b5288347df2ba58e9a10e2930ffeb55750f5364ec5e3c3985e33485d14c85742c0aefdc92ab1b58d4ed485de66e53761b
|
7
|
+
data.tar.gz: acb8ea5ad8a442d04b67a86ad9f06e44f316198f49caa2b76786e5b479cbf488c09c500bfc074d6adeaf7dee23e2587d8ed2a409a26875cd33bd9a00746178b9
|
data/Gemfile.lock
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
sr25519 (0.
|
4
|
+
sr25519 (0.5.0)
|
5
5
|
base58
|
6
6
|
blake2b
|
7
|
+
ed25519 (~> 1.2, >= 1.2.4)
|
7
8
|
|
8
9
|
GEM
|
9
10
|
remote: https://rubygems.org/
|
@@ -11,6 +12,7 @@ GEM
|
|
11
12
|
base58 (0.2.3)
|
12
13
|
blake2b (0.10.0)
|
13
14
|
diff-lcs (1.4.4)
|
15
|
+
ed25519 (1.2.4)
|
14
16
|
ffi (1.15.4)
|
15
17
|
rake (13.0.6)
|
16
18
|
rspec (3.10.0)
|
data/README.md
CHANGED
@@ -22,21 +22,21 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
1. Require ed25519.rb in your Ruby program:
|
25
|
+
#### 1. Require ed25519.rb in your Ruby program:
|
26
26
|
```ruby
|
27
27
|
require "sr25519"
|
28
28
|
```
|
29
29
|
|
30
|
-
2. Generate keypair
|
30
|
+
#### 2. Generate keypair
|
31
31
|
|
32
32
|
```ruby
|
33
33
|
# seed is priviate key, is a hex string.
|
34
34
|
# example: SR25519.sr25519_keypair_from_seed("0xfac7959dbfe72f052e5a0c3c8d6530f202b02fd8f9f5ca3580ec8deb7797479e")
|
35
|
-
|
35
|
+
keypair = SR25519.sr25519_keypair_from_seed(seed)
|
36
36
|
|
37
37
|
```
|
38
38
|
|
39
|
-
3. Generate public_key
|
39
|
+
#### 3. Generate public_key
|
40
40
|
|
41
41
|
```ruby
|
42
42
|
public_key = SR25519.get_public_key_from_seed(seed)
|
@@ -46,25 +46,25 @@ public_key_str = public_key.to_s
|
|
46
46
|
|
47
47
|
```
|
48
48
|
|
49
|
-
4. Encode address
|
49
|
+
#### 4. Encode address
|
50
50
|
```ruby
|
51
51
|
address = Address.encode(public_key.to_s)
|
52
52
|
```
|
53
53
|
|
54
|
-
5. Decode address
|
54
|
+
#### 5. Decode address
|
55
55
|
|
56
56
|
```ruby
|
57
57
|
address = Address.decode(address)
|
58
58
|
```
|
59
59
|
|
60
|
-
6. Sign message
|
60
|
+
#### 6. Sign message
|
61
61
|
|
62
62
|
```ruby
|
63
63
|
signature_result = SR25519.sign(message, keypair)
|
64
64
|
|
65
65
|
```
|
66
66
|
|
67
|
-
7. Verify message
|
67
|
+
#### 7. Verify message
|
68
68
|
|
69
69
|
```ruby
|
70
70
|
SR25519.verify(address, message, signature_result)
|
data/lib/ed25519_lib.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require "ed25519"
|
2
|
+
class ED25519
|
3
|
+
|
4
|
+
# Creates a signature for given data
|
5
|
+
def self.sign(message, key_pair)
|
6
|
+
"0x" + key_pair.sign(message).unpack1("H*")
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.verify(address, message, signature_result)
|
10
|
+
if signature_result.start_with?("0x")
|
11
|
+
signature_result = signature_result.sub(/0x/, "")
|
12
|
+
end
|
13
|
+
signature = [signature_result].pack("H*")
|
14
|
+
public_key = Address.decode(address)
|
15
|
+
verify_key_bytes = [public_key].pack("H*")
|
16
|
+
verify_key = Ed25519::VerifyKey.new(verify_key_bytes)
|
17
|
+
verify_key.verify(signature, message)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.keypair_from_seed(seed)
|
21
|
+
if seed.start_with?("0x")
|
22
|
+
seed = seed.sub(/0x/, "")
|
23
|
+
end
|
24
|
+
seed = "".tap { |binary| seed.scan(/../) { |hn| binary << hn.to_i(16).chr } }
|
25
|
+
signing_key = Ed25519::SigningKey.new(seed)
|
26
|
+
return signing_key
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.get_public_key_from_seed(seed)
|
30
|
+
signing_key = self.keypair_from_seed(seed)
|
31
|
+
return signing_key.verify_key.to_bytes.unpack1('H*')
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
data/lib/sr25519/version.rb
CHANGED
data/lib/sr25519.rb
CHANGED
data/lib/sr25519_lib.rb
CHANGED
@@ -65,7 +65,7 @@ class SR25519
|
|
65
65
|
def self.sr25519_sign(message, private_key)
|
66
66
|
sig = SigMessage.new
|
67
67
|
msg = FFI::MemoryPointer.from_string(message)
|
68
|
-
key_pair = self.
|
68
|
+
key_pair = self.keypair_from_seed(private_key)
|
69
69
|
public_key = key_pair.public_key
|
70
70
|
SR25519Lib.sr25519_sign(sig, public_key, key_pair, msg, message.length)
|
71
71
|
sig.to_s
|
@@ -97,7 +97,7 @@ class SR25519
|
|
97
97
|
verify = SR25519Lib.sr25519_verify(sig, msg, message.size, pk)
|
98
98
|
end
|
99
99
|
|
100
|
-
def self.
|
100
|
+
def self.keypair_from_seed(seed)
|
101
101
|
if seed.start_with?("0x")
|
102
102
|
seed = seed.sub(/0x/, "")
|
103
103
|
end
|
@@ -110,7 +110,7 @@ class SR25519
|
|
110
110
|
end
|
111
111
|
|
112
112
|
def self.get_public_key_from_seed(seed)
|
113
|
-
key_pair = self.
|
113
|
+
key_pair = self.keypair_from_seed(seed)
|
114
114
|
key_pair.public_key
|
115
115
|
end
|
116
116
|
|
data/sr25519.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sr25519
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- xuxh
|
@@ -80,6 +80,26 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 1.15.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: ed25519
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.2'
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 1.2.4
|
93
|
+
type: :runtime
|
94
|
+
prerelease: false
|
95
|
+
version_requirements: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - "~>"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '1.2'
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 1.2.4
|
83
103
|
description: Sign and verify message with sr25519
|
84
104
|
email:
|
85
105
|
- xxh2611@gmail.com
|
@@ -100,6 +120,7 @@ files:
|
|
100
120
|
- bin/console
|
101
121
|
- bin/setup
|
102
122
|
- lib/address.rb
|
123
|
+
- lib/ed25519_lib.rb
|
103
124
|
- lib/libsr25519crust.dylib
|
104
125
|
- lib/libsr25519crust.so
|
105
126
|
- lib/sr25519.rb
|