class ActiveSupport::MessageVerifier

def verify(message, **options)


verifier.verify(message, purpose: "greeting") # => raises InvalidSignature
verifier.verify(message) # => "bye"
message = verifier.generate("bye")

verifier.verify(message) # => raises InvalidSignature
verifier.verify(message, purpose: "chatting") # => raises InvalidSignature
verifier.verify(message, purpose: "greeting") # => "hello"
message = verifier.generate("hello", purpose: "greeting")

match, +verify+ will raise ActiveSupport::MessageVerifier::InvalidSignature.
The purpose that the message was generated with. If the purpose does not
[+:purpose+]

==== Options

other_verifier.verify(signed_message) # => ActiveSupport::MessageVerifier::InvalidSignature
other_verifier = ActiveSupport::MessageVerifier.new("different_secret")

secret or was not Base64-encoded.
Raises +InvalidSignature+ if the message was not signed with the same

verifier.verify(signed_message) # => "signed message"

signed_message = verifier.generate("signed message")
verifier = ActiveSupport::MessageVerifier.new("secret")

Decodes the signed message using the +MessageVerifier+'s secret.
def verify(message, **options)
  catch_and_raise :invalid_message_format, as: InvalidSignature do
    catch_and_raise :invalid_message_serialization do
      catch_and_raise :invalid_message_content, as: InvalidSignature do
        read_message(message, **options)
      end
    end
  end
end