Sha256: 9c2a56d511777ed1afe777b31a461597f2ed5e67088d733bfec484f99f11d4f9

Contents?: true

Size: 914 Bytes

Versions: 3

Compression:

Stored size: 914 Bytes

Contents

module Pingpp
  module Webhook
    def self.verify?(request)
      if !Pingpp.pub_key
        return false
      end

      raw_data = nil
      if request.respond_to?('raw_post')
        raw_data = request.raw_post
      elsif request.respond_to?('body')
        raw_data = request.body
      else
        return false
      end

      headers = nil
      if request.respond_to?('headers')
        headers = request.headers
      elsif request.respond_to?('header')
        headers = request.header
      else
        return false
      end

      formated_headers = Util.format_headers(headers)
      return false if !formated_headers.has_key?(:x_pingplusplus_signature)

      signature = formated_headers[:x_pingplusplus_signature]
      rsa_public_key = OpenSSL::PKey.read(Pingpp.pub_key)
      return rsa_public_key.verify(OpenSSL::Digest::SHA256.new, Base64.decode64(signature), raw_data)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pingpp-2.0.15 lib/pingpp/webhook.rb
pingpp-2.0.14 lib/pingpp/webhook.rb
pingpp-2.0.13 lib/pingpp/webhook.rb