Class: Silkey::SDK
- Inherits:
-
Object
- Object
- Silkey::SDK
- Defined in:
- lib/silkey/sdk.rb
Constant Summary collapse
- SSO_PARAMS_PREFIX =
'sso'
Class Method Summary collapse
-
.fetch_silkey_eth_address ⇒ Object
Fetches public ethereum Silkey address (directly from blockchain).
-
.generate_sso_request_params(private_key, data_to_sign) ⇒ Hash
Generates all needed parameters (including signature) for requesting Silkey SSO.
-
.message_to_sign(to_sign = {}) ⇒ string
Generates message to sign based on plain object data (keys => values).
-
.token_payload_verifier(token, callback_params, website_eth_address, silkey_eth_address = nil, expiration_time = 30) ⇒ JwtPayload|null
Verifies JWT token payload.
Class Method Details
.fetch_silkey_eth_address ⇒ Object
Fetches public ethereum Silkey address (directly from blockchain). This address can be used for token verification
123 124 125 126 127 128 129 |
# File 'lib/silkey/sdk.rb', line 123 def fetch_silkey_eth_address silkey_address = Silkey::RegistryContract.get_address(Silkey::Settings.SILKEY_REGISTERED_BY_NAME) raise "Invalid silkey address: #{silkey_address}" unless Silkey::Utils.ethereum_address?(silkey_address) silkey_address end |
.generate_sso_request_params(private_key, data_to_sign) ⇒ Hash
Generates all needed parameters (including signature) for requesting Silkey SSO
57 58 59 60 61 |
# File 'lib/silkey/sdk.rb', line 57 def generate_sso_request_params(private_key, data_to_sign) raise '`private_key` is empty' if Silkey::Utils.empty?(private_key) Silkey::Models::SSOParams.new(data_to_sign.clone).sign(private_key).validate.params end |
.message_to_sign(to_sign = {}) ⇒ string
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/silkey/sdk.rb', line 23 def (to_sign = {}) msg = [] to_sign.keys.sort.each do |k| if 'ssoSignature'.to_sym != k && k[0..SSO_PARAMS_PREFIX.length - 1] == SSO_PARAMS_PREFIX && !to_sign[k].nil? msg.push("#{k}=#{to_sign[k]}") end end msg.join(Silkey::Settings.MESSAGE_TO_SIGN_GLUE) end |
.token_payload_verifier(token, callback_params, website_eth_address, silkey_eth_address = nil, expiration_time = 30) ⇒ JwtPayload|null
Verifies JWT token payload
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/silkey/sdk.rb', line 92 def token_payload_verifier(token, callback_params, website_eth_address, silkey_eth_address = nil, expiration_time = 30) payload = token_payload(token) return nil unless Verifier.valid_age?(payload, expiration_time) return nil if Silkey::Verifier.user_signature_valid?(payload) == false return nil if Silkey::Verifier.silkey_signature_valid?(payload, silkey_eth_address) == false return nil if Silkey::Verifier.website_signature_valid?(callback_params, website_eth_address) == false jwt_payload = Silkey::Models::JwtPayload.new.import(payload) Silkey::Verifier.require_params_for_scope(jwt_payload.scope, jwt_payload.attributes) jwt_payload rescue StandardError => e logger.warn(e.) nil end |