3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/pingpp/webhook.rb', line 3
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
= nil
if request.respond_to?('headers')
= request.
elsif request.respond_to?('header')
= request.
else
return false
end
= Util.()
return false if !.has_key?(:x_pingplusplus_signature)
signature = [: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
|