14f4b16fa4
# Conflicts: # config/secrets.yml
28 lines
701 B
Ruby
28 lines
701 B
Ruby
class SignatureService
|
|
class << self
|
|
def generate
|
|
RbNaCl::Util.bin2hex(RbNaCl::SigningKey.generate)
|
|
end
|
|
|
|
def verify(signature, message)
|
|
message = Base64.urlsafe_encode64(message)
|
|
begin
|
|
signing_key.verify_key
|
|
.verify(RbNaCl::Util.hex2bin(signature), message)
|
|
rescue RbNaCl::BadSignatureError, RbNaCl::LengthError
|
|
return false
|
|
end
|
|
end
|
|
|
|
def sign(message)
|
|
message = Base64.urlsafe_encode64(message)
|
|
RbNaCl::Util.bin2hex(signing_key.sign(message))
|
|
end
|
|
|
|
private
|
|
|
|
def signing_key
|
|
@@signing_key ||= RbNaCl::SigningKey.new(RbNaCl::Util.hex2bin(Rails.application.secrets.signing_key))
|
|
end
|
|
end
|
|
end
|