dcp.rb 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/dcp.rb +46 -0
  3. metadata +72 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 8db1d6e913455d984621c332b567f7b4e4c152b23f342c70f358b5e8fc0e45d1
4
+ data.tar.gz: b2626562d62993bb2e51fac27623905db29debdd57970bba59185e596b7e219c
5
+ SHA512:
6
+ metadata.gz: 42d0833dee66305140709706f63679bab3f1ee7d4474bbe739b0df5001c2043266b0af042924b1f336156cc143c33e53a8772eae6ec0e4eb842ddff2f700d022
7
+ data.tar.gz: 86a4ce2cf987ff6f9292dc2ff3336eab70b88a229fcbe8c0651e4a9ce1e16474e487c1d59c8b4c5cc51e948119091440f249fb0248aa5d8131e9738c81b0e8e7
data/lib/dcp.rb ADDED
@@ -0,0 +1,46 @@
1
+ require 'httparty'
2
+ require 'json'
3
+
4
+ class DCP
5
+ def self.send_message(key, token)
6
+ body = {
7
+ oAuthToken: token.token,
8
+ expiry: token.expires_at.to_i,
9
+ endpoint: ENV['PROXY_URL']
10
+ }
11
+
12
+ message_string = {
13
+ owner: key.address,
14
+ signature: sign(key, body),
15
+ body: body
16
+ }.to_json
17
+
18
+ message = {signedMessage: message_string}
19
+
20
+ response = HTTParty.post(ENV['PROXY_URL'], body: message)
21
+ reply_body = response.body
22
+ reply = JSON.parse reply_body
23
+
24
+ unless reply['success']
25
+ Rails.logger.error "Proxy service returned error #{reply['error']}"
26
+ end
27
+
28
+ return reply
29
+ end
30
+
31
+ def self.sign(key, body)
32
+ sig = key.personal_sign body.to_json
33
+ bin_sig = Eth::Utils.hex_to_bin(sig).bytes.rotate(-1).pack('c*')
34
+ {
35
+ r: {
36
+ type: "Buffer",
37
+ data: bin_sig[1..32].bytes
38
+ },
39
+ s: {
40
+ type: "Buffer",
41
+ data: bin_sig[33..65].bytes
42
+ },
43
+ v: bin_sig[0].bytes[0]
44
+ }
45
+ end
46
+ end
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dcp.rb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Alex Huctwith
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-07-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: eth
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: httparty
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.18'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.18'
41
+ description: A gem which provides message signing functionality for DCP messages in
42
+ Ruby. May be updated with more functionality in future.
43
+ email: alex@kingsds.network
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - lib/dcp.rb
49
+ homepage: https://rubygems.org/gems/dcp.rb
50
+ licenses:
51
+ - MIT
52
+ metadata: {}
53
+ post_install_message:
54
+ rdoc_options: []
55
+ require_paths:
56
+ - lib
57
+ required_ruby_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ requirements: []
68
+ rubygems_version: 3.1.2
69
+ signing_key:
70
+ specification_version: 4
71
+ summary: DCP utilities for Ruby
72
+ test_files: []