class Silkey::Models::JwtPayload
Constants
- SCOPE_DIVIDER
Public Instance Methods
import(hash)
click to toggle source
# File lib/silkey/models/jwt_payload.rb, line 126 def import(hash) hash.each do |k, v| var = k.to_s.underscore if k == 'scope' set_scope(v) else self.instance_variable_set("@#{var}", v) end end self end
message_to_sign_by_silkey()
click to toggle source
# File lib/silkey/models/jwt_payload.rb, line 97 def message_to_sign_by_silkey return '' if Silkey::Utils.empty?(email) if Silkey::Utils.empty?(silkey_signature_timestamp) self.silkey_signature_timestamp = Silkey::Utils.current_timestamp end str_hex = [ 'email', email, 'silkeySignatureTimestamp' ].map { |str| str.to_s.unpack('H*') }.join('') "#{str_hex}#{Silkey::Utils.int_to_hex(silkey_signature_timestamp.to_s)}" end
message_to_sign_by_user()
click to toggle source
Creates message that's need to be sign by user
# File lib/silkey/models/jwt_payload.rb, line 76 def message_to_sign_by_user if !Silkey::Utils.empty?(address) && Silkey::Utils.empty?(user_signature_timestamp) self.user_signature_timestamp = Silkey::Utils.current_timestamp end str1_hex = 'address'.unpack('H*')[0] adr_hex = Silkey::Utils.remove0x(address).downcase str2_hex = [ 'refId', ref_id.to_s, 'scope', scope, 'userSignatureTimestamp' ].map { |str| str.to_s.unpack('H*') }.join('') str_hex = "#{str1_hex}#{adr_hex}#{str2_hex}" return str_hex if Silkey::Utils.empty?(user_signature_timestamp) "#{str_hex}#{Silkey::Utils.int_to_hex(user_signature_timestamp.to_s)}" end
scope()
click to toggle source
rubocop:enable Style/HashSyntax
# File lib/silkey/models/jwt_payload.rb, line 21 def scope _scope.keys.sort.join(SCOPE_DIVIDER) end
scope_divider()
click to toggle source
# File lib/silkey/models/jwt_payload.rb, line 25 def scope_divider SCOPE_DIVIDER end
set_address(addr)
click to toggle source
# File lib/silkey/models/jwt_payload.rb, line 37 def set_address(addr) raise "`#{addr}` is not ethereum address" unless Silkey::Utils.ethereum_address?(addr) self.address = addr self end
set_email(email)
click to toggle source
# File lib/silkey/models/jwt_payload.rb, line 44 def set_email(email) self.email = email self end
set_ref_id(ref_id)
click to toggle source
# File lib/silkey/models/jwt_payload.rb, line 49 def set_ref_id(ref_id) self.ref_id = ref_id self end
set_scope(scope)
click to toggle source
rubocop:disable Naming/AccessorMethodName
# File lib/silkey/models/jwt_payload.rb, line 30 def set_scope(scope) return self if Silkey::Utils.empty?(scope) _scope[scope] = true self end
set_silkey_signature(sig, timestamp)
click to toggle source
# File lib/silkey/models/jwt_payload.rb, line 63 def set_silkey_signature(sig, timestamp) raise "silkey signature invalid: `#{sig}`" unless Silkey::Utils.signature?(sig) raise 'empty silkey signature timestamp' if Silkey::Utils.empty?(timestamp) self.silkey_signature = sig self.silkey_signature_timestamp = timestamp self end
set_user_signature(sig, timestamp)
click to toggle source
# File lib/silkey/models/jwt_payload.rb, line 54 def set_user_signature(sig, timestamp) raise "user signature invalid: `#{sig}`" unless Silkey::Utils.signature?(sig) raise 'empty user signature timestamp' if Silkey::Utils.empty?(timestamp) self.user_signature = sig self.user_signature_timestamp = timestamp self end
validate()
click to toggle source
# File lib/silkey/models/jwt_payload.rb, line 112 def validate raise "address is invalid: #{address}" unless Silkey::Utils.ethereum_address?(address) unless Silkey::Utils.signature?(user_signature) raise "user_signature is invalid: #{user_signature}" end raise 'user_signature_timestamp is empty' if Silkey::Utils.empty?(user_signature_timestamp) return self if Silkey::Utils.empty?(scope) || scope == 'id' validate_scope_email end