dcp.rb 0.1.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.
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: []