Module: LoadRunner::ServerHelper

Included in:
Server
Defined in:
lib/load_runner/server_helper.rb

Instance Method Summary collapse

Instance Method Details

#generate_signature(payload_body) ⇒ Object



13
14
15
# File 'lib/load_runner/server_helper.rb', line 13

def generate_signature(payload_body)
  'sha1=' + OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha1'), secret_token, payload_body)
end

#halt_messagesObject



21
22
23
24
25
26
27
# File 'lib/load_runner/server_helper.rb', line 21

def halt_messages
  {
    no_client: "Client did not send a signature",
    no_server: "Server secret token is not configured",
    mismatch: "Signature mismatch"
  }
end

#secret_tokenObject



17
18
19
# File 'lib/load_runner/server_helper.rb', line 17

def secret_token
  ENV['GITHUB_SECRET_TOKEN']
end

#verify_signature(payload_body, signature) ⇒ Object



3
4
5
6
7
8
9
10
11
# File 'lib/load_runner/server_helper.rb', line 3

def verify_signature(payload_body, signature)
  return :no_client if secret_token and !signature
  return :no_server if !secret_token and signature
  return :ok        if !secret_token and !signature

  expected_signature = generate_signature payload_body
  signature_match = Rack::Utils.secure_compare(expected_signature, signature)
  return signature_match ? :ok : :mismatch
end