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