diff options
author | Reverite <github@reverite.sh> | 2019-08-20 10:46:41 -0600 |
---|---|---|
committer | Reverite <github@reverite.sh> | 2019-08-20 10:46:41 -0600 |
commit | d2c357ba86b1a9d1b7b4c291e1c55811997027ed (patch) | |
tree | 229bd4223833900f11701fb232f6ea7b2e4160f1 /app/controllers/concerns/signature_verification.rb | |
parent | 2e221bd5b6472d1eecb654b3518af7886d3dadaf (diff) | |
parent | bce46f2057b06e78958a42821f3ce18c945de88d (diff) |
Merge branch 'glitch' into production
Diffstat (limited to 'app/controllers/concerns/signature_verification.rb')
-rw-r--r-- | app/controllers/concerns/signature_verification.rb | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb index 7b251cf80..ce353f1de 100644 --- a/app/controllers/concerns/signature_verification.rb +++ b/app/controllers/concerns/signature_verification.rb @@ -23,6 +23,19 @@ module SignatureVerification @signature_verification_failure_code || 401 end + def signature_key_id + raw_signature = request.headers['Signature'] + signature_params = {} + + raw_signature.split(',').each do |part| + parsed_parts = part.match(/([a-z]+)="([^"]+)"/i) + next if parsed_parts.nil? || parsed_parts.size != 3 + signature_params[parsed_parts[1]] = parsed_parts[2] + end + + signature_params['keyId'] + end + def signed_request_account return @signed_request_account if defined?(@signed_request_account) @@ -154,7 +167,7 @@ module SignatureVerification .with_fallback { nil } .with_threshold(1) .with_cool_off_time(5.minutes.seconds) - .with_error_handler { |error, handle| error.is_a?(HTTP::Error) ? handle.call(error) : raise(error) } + .with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) } .run end |