Sha256: 679897fcb781458e93b946f1990fbb2a74dd496d5822acd8ae7fef44906e11e1
Contents?: true
Size: 1.5 KB
Versions: 2
Compression:
Stored size: 1.5 KB
Contents
# typed: false # frozen_string_literal: true module Hephaestus module ValidatesFromYetto SHA256_DIGEST = OpenSSL::Digest.new("sha256") extend ActiveSupport::Concern include Hephaestus::Responses def from_yetto? return bad_request if request.headers.blank? yetto_signature = request.headers.fetch(Hephaestus::Headers::HEADER_SIGNATURE, "") return bad_request unless yetto_signature.start_with?("sha256=") hmac_header = yetto_signature.split("sha256=").last body = request.raw_post calculated_hmac = OpenSSL::HMAC.hexdigest(SHA256_DIGEST, Hephaestus::YETTO_SIGNING_SECRET, body) return true if ActiveSupport::SecurityUtils.secure_compare(calculated_hmac, hmac_header) bad_request end def from_yetto_inline? return bad_request if request.headers.blank? yetto_signature = request.headers.fetch(Hephaestus::Headers::HEADER_SIGNATURE, "") return bad_request unless yetto_signature.start_with?("sha256=") hmac_header = yetto_signature.split("sha256=").last body = params["encrypted_payload"] @payload = T.let(ActiveSupport::MessageEncryptor.new(Hephaestus::YETTO_SIGNING_SECRET, url_safe: true, serializer: :json).decrypt_and_verify(body), T.nilable(String)) calculated_hmac = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha256"), Hephaestus::YETTO_SIGNING_SECRET, @payload) return true if ActiveSupport::SecurityUtils.secure_compare(calculated_hmac, hmac_header) bad_request end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
hephaestus-0.8.16.1 | app/controllers/concerns/hephaestus/validates_from_yetto.rb |
hephaestus-0.8.16 | app/controllers/concerns/hephaestus/validates_from_yetto.rb |