Module: Mpp::BodyDigest

Extended by:
T::Sig
Defined in:
lib/mpp/body_digest.rb

Class Method Summary collapse

Class Method Details

.compute(body) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/mpp/body_digest.rb', line 17

def compute(body)
  case body
  when Hash
    body = Mpp::Json.compact_encode(body)
  when String
    # use as-is
  end
  body = body.encode(Encoding::UTF_8) if body.is_a?(String)
  digest = OpenSSL::Digest::SHA256.digest(body)
  encoded = Base64.strict_encode64(digest)
  "sha-256=#{encoded}"
end

.verify(digest, body) ⇒ Object



32
33
34
35
# File 'lib/mpp/body_digest.rb', line 32

def verify(digest, body)
  expected = compute(body)
  Mpp.secure_compare(expected, digest)
end