Sha256: 4b74be85bb8e6e9ccd64f260dec07dced8912e6193feaf13d122563882d3bd1e

Contents?: true

Size: 924 Bytes

Versions: 8

Compression:

Stored size: 924 Bytes

Contents

module Pingpp
  module Webhook
    def self.verify?(request, pub_key=Pingpp.pub_key)
      if !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(pub_key)
      return rsa_public_key.verify(OpenSSL::Digest::SHA256.new, Base64.decode64(signature), raw_data)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
pingpp-2.2.4 lib/pingpp/webhook.rb
pingpp-2.2.3 lib/pingpp/webhook.rb
pingpp-2.2.2 lib/pingpp/webhook.rb
pingpp-2.2.1 lib/pingpp/webhook.rb
pingpp-2.2.0 lib/pingpp/webhook.rb
pingpp-2.1.3 lib/pingpp/webhook.rb
pingpp-2.1.1 lib/pingpp/webhook.rb
pingpp-2.1.0 lib/pingpp/webhook.rb