class Smaak::AuthMessage
Attributes
encrypt[R]
expires[R]
identifier[R]
nonce[R]
psk[R]
recipient[R]
route_info[R]
Public Class Methods
build(recipient_public_key, psk, expires, identifier, route_info, nonce, encrypt = false)
click to toggle source
# File lib/smaak/auth_message.rb, line 21 def self.build(recipient_public_key, psk, expires, identifier, route_info, nonce, encrypt = false) # No need to obfuscate PSK. Off the wire we should always expect an obfuscated PSK AuthMessage.new(identifier, route_info, nonce, expires, psk, recipient_public_key, encrypt) end
create(recipient_public_key, psk, token_life, identifier, route_info = "", encrypt = false)
click to toggle source
# File lib/smaak/auth_message.rb, line 13 def self.create(recipient_public_key, psk, token_life, identifier, route_info = "", encrypt = false) nonce = Smaak::Crypto.generate_nonce expires = Time.now.to_i + token_life # Must obfuscate PSK. AuthMessage must always have an obfuscated PSK psk = Smaak::Crypto.obfuscate_psk(psk) AuthMessage.build(recipient_public_key, psk, expires, identifier, route_info, nonce, encrypt) end
new(identifier, route_info, nonce, expires, psk, recipient_public_key, encrypt)
click to toggle source
# File lib/smaak/auth_message.rb, line 26 def initialize(identifier, route_info, nonce, expires, psk, recipient_public_key, encrypt) set_and_validate_identifier(identifier) set_and_validate_route_info(route_info) set_and_validate_nonce(nonce) set_and_validate_expires(expires) set_recipient(recipient_public_key) set_psk(psk) set_encrypt(encrypt) end
Public Instance Methods
expired?()
click to toggle source
# File lib/smaak/auth_message.rb, line 72 def expired? @expires.to_i < Time.now.to_i end
intended_for_recipient?(pubkey)
click to toggle source
# File lib/smaak/auth_message.rb, line 82 def intended_for_recipient?(pubkey) return false if pubkey.nil? return false if @recipient.nil? @recipient == pubkey end
psk_match?(psk)
click to toggle source
# File lib/smaak/auth_message.rb, line 76 def psk_match?(psk) return false if psk.nil? return false if @psk.nil? @psk == Smaak::Crypto.obfuscate_psk(psk) end
set_and_validate_expires(expires)
click to toggle source
# File lib/smaak/auth_message.rb, line 54 def set_and_validate_expires(expires) raise ArgumentError.new("Message must have a valid expiry set") unless validate_expiry(expires) @expires = expires end
set_and_validate_identifier(identifier)
click to toggle source
# File lib/smaak/auth_message.rb, line 36 def set_and_validate_identifier(identifier) raise ArgumentError.new("Message must have a valid identifier set") if identifier.nil? or identifier.empty? @identifier = identifier @identifier.freeze end
set_and_validate_nonce(nonce)
click to toggle source
# File lib/smaak/auth_message.rb, line 48 def set_and_validate_nonce(nonce) raise ArgumentError.new("Message must have a valid nonce set") unless validate_nonce(nonce) @nonce = nonce @nonce.freeze end
set_and_validate_route_info(route_info)
click to toggle source
# File lib/smaak/auth_message.rb, line 42 def set_and_validate_route_info(route_info) raise ArgumentError.new("Message must have a valid route information set") if route_info.nil? @route_info = route_info @route_info.freeze end
set_encrypt(encrypt)
click to toggle source
# File lib/smaak/auth_message.rb, line 67 def set_encrypt(encrypt) @encrypt = false @encrypt = true if encrypt == "true" or encrypt == true end
set_psk(psk)
click to toggle source
# File lib/smaak/auth_message.rb, line 63 def set_psk(psk) @psk = psk end
set_recipient(recipient_public_key)
click to toggle source
# File lib/smaak/auth_message.rb, line 59 def set_recipient(recipient_public_key) @recipient = recipient_public_key end
verify(psk)
click to toggle source
# File lib/smaak/auth_message.rb, line 88 def verify(psk) return false unless psk_match?(psk) true end
Private Instance Methods
validate_expiry(expires)
click to toggle source
# File lib/smaak/auth_message.rb, line 104 def validate_expiry(expires) return false if expires.nil? return false unless (expires.to_i > 0) true rescue false end
validate_nonce(nonce)
click to toggle source
# File lib/smaak/auth_message.rb, line 95 def validate_nonce(nonce) return false if nonce.nil? return false if nonce.to_i == 0 true rescue false end