Class: PagesCore::DigestVerifier

Inherits:
Object
  • Object
show all
Defined in:
lib/pages_core/digest_verifier.rb

Overview

Digest Verifier

Usage

verifier = PagesCore::DigestVerifier.new("super secret!")

digest = verifier.generate("foo")

digest.verify("foo", digest)
# => true
digest.verify("bar", digest)
# => raises PagesCore::Errors::InvalidSignature

Credit where credit is due: adapted and simplified from ActiveSupport::MessageVerifier, since we don’t need to handle arbitrary data structures and ship the serialized data to the client.

Defined Under Namespace

Classes: InvalidSignatureError

Instance Method Summary collapse

Constructor Details

#initialize(secret, options = {}) ⇒ DigestVerifier

Returns a new instance of DigestVerifier.



23
24
25
26
# File 'lib/pages_core/digest_verifier.rb', line 23

def initialize(secret, options = {})
  @secret = secret
  @digest = options[:digest] || "SHA1"
end

Instance Method Details

#generate(data) ⇒ Object

Generates a digest for a string.



29
30
31
# File 'lib/pages_core/digest_verifier.rb', line 29

def generate(data)
  generate_digest(data)
end

#verify(data, digest) ⇒ Object

Verifies that digest is valid for data. Raises a PagesCore::DigestVerifier::InvalidSignatureError error if not.



35
36
37
38
39
40
41
# File 'lib/pages_core/digest_verifier.rb', line 35

def verify(data, digest)
  unless valid_digest?(data, digest)
    raise PagesCore::DigestVerifier::InvalidSignatureError
  end

  true
end