istox 0.1.49 → 0.1.50

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 03e23c188c24e12bb7379c507bc748e2175c0a6c514be4a428da848beea2cfb0
4
- data.tar.gz: 3e97d011a7573807eb0ef06ba2219dc45ae1ceb29d2dc1796a6716fa21365341
3
+ metadata.gz: a8efa94470b6ef77ad498221a04fe70940441f4788785f1c9ff23eedc8d82986
4
+ data.tar.gz: f480a1a25dd92b8a14d1c764b253a2d076d639cd2eed513108316056b3a204dd
5
5
  SHA512:
6
- metadata.gz: 4d4b5646f2be32172e92e57c820382cd93443fbb512d609bbd63aafafe8184589568f53f6d46aae5f97ee641f4ef9b1701517ce99923c54c35d2f076e1e5bbb3
7
- data.tar.gz: 011cea9f9aa15d6d3a3771f38f5b249e46cd79b27d2546ca8a2c828147f8951265471ab0275379d0b55efca7fbae76fb042e31049cdbf0521985b3807bf52934
6
+ metadata.gz: 87e64ac79e3087424f0a975ff99382158fb0c664f3a888c8bf01b7682387ff5b106132515c5cd2dc9b589379baced2d49db98fb6a5ad5e8a057b332540ca5f89
7
+ data.tar.gz: 9a49bac856ee1081020a15d581b719946706d273021c4b3d745a7b88f31d6facf9d32c42a811b02f3b747b47f09f85e809859e6b471b31d0515ffc50642472d0
data/README.md CHANGED
@@ -5,3 +5,5 @@ to publish new version
5
5
  2. gem build istox
6
6
 
7
7
  3. gem push istox-<VERSION>.gem
8
+
9
+ 4. in local repo: bundle install istox@<VERSION> --full-index
data/istox.gemspec CHANGED
@@ -33,6 +33,7 @@ Gem::Specification.new do |spec|
33
33
 
34
34
  spec.add_dependency "bunny", ">= 2.12.0"
35
35
  spec.add_dependency "gruf"
36
+ spec.add_dependency 'vault', '~> 0.1'
36
37
  spec.add_dependency "paranoia", "~> 2.2"
37
38
  spec.add_dependency "graphlient"
38
39
  spec.add_development_dependency "bundler", "~> 1.16"
@@ -0,0 +1,87 @@
1
+ require 'vault'
2
+
3
+ module Istox
4
+ module Vault
5
+ module TOTP
6
+ class << self
7
+
8
+ def create(sid)
9
+ Rails.logger.debug { "Generate vault TOTP for key #{totp_key(sid).inspect}" }
10
+
11
+ write_data(totp_key(sid),
12
+ generate: true,
13
+ issuer: ENV.fetch('APP_NAME', 'ISTOX'),
14
+ account_name: sid,
15
+ qr_size: 300)
16
+ end
17
+
18
+ def generate_code(sid)
19
+ Rails.logger.debug { "Generate 6-digit OTP code: key #{totp_code_key(sid)}" }
20
+ code = read_data(totp_code_key(sid)).data[:code]
21
+ code
22
+ end
23
+
24
+ def validate?(sid, code)
25
+ return false unless exist?(sid)
26
+ Rails.logger.debug { "Validate TOTP code: key #{totp_code_key(sid)}, code: #{code}" }
27
+ result = write_data(totp_code_key(sid), code: code).data[:valid]
28
+
29
+ unless result
30
+ code = read_data(totp_code_key(sid)).data[:code]
31
+ Rails.logger.debug { "Code is not valid, it should be #{code}" }
32
+ end
33
+
34
+ result
35
+ end
36
+
37
+ private
38
+
39
+ def read_data(key)
40
+ vault.read(key)
41
+ end
42
+
43
+ def write_data(key, params)
44
+ Vault.logical.write(key, params)
45
+ end
46
+
47
+ def totp_key(sid)
48
+ "totp/keys/#{sid}"
49
+ end
50
+
51
+ def totp_code_key(sid)
52
+ "totp/code/#{sid}"
53
+ end
54
+ end
55
+ end
56
+
57
+ class << self
58
+ def initialize(secret_key, file_location)
59
+ Vault.configure do |config|
60
+ config.address = secret_key
61
+
62
+ if File.exist?(file_location)
63
+ token = File.read(file_location).strip
64
+ config.token = token
65
+ config.ssl_verify = false
66
+ config.timeout = 60
67
+ else
68
+ Rails.logger.info 'Vault token not found, OTP will not be able to use'
69
+ end
70
+ end
71
+ end
72
+ end
73
+
74
+ def get_otp(sid)
75
+ Vault::TOTP.create(sid)
76
+ otp = Vault::TOTP.generate_code(sid)
77
+
78
+ return otp
79
+ end
80
+
81
+ def validate_otp(sid, otp)
82
+ return Vault::TOTP.validate?(sid, otp)
83
+ rescue => e
84
+ return false
85
+ end
86
+ end
87
+ end
data/lib/istox/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Istox
2
- VERSION = "0.1.49"
2
+ VERSION = "0.1.50"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: istox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.49
4
+ version: 0.1.50
5
5
  platform: ruby
6
6
  authors:
7
7
  - Siong Leng
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-12 00:00:00.000000000 Z
11
+ date: 2019-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bunny
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: vault
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.1'
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'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: paranoia
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -232,6 +246,7 @@ files:
232
246
  - lib/istox/helpers/message_service.rb
233
247
  - lib/istox/helpers/order_book.rb
234
248
  - lib/istox/helpers/publisher.rb
249
+ - lib/istox/helpers/vault.rb
235
250
  - lib/istox/interfaces/chainhub/transaction.rb
236
251
  - lib/istox/migrations/create_blockchain_receipts.rb
237
252
  - lib/istox/models/blockchain_receipt.rb