istox 0.1.49 → 0.1.50

Sign up to get free protection for your applications and to get access to all the features.
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