Module: Imglab::Signature

Extended by:
Signature
Included in:
Signature
Defined in:
lib/imglab/signature.rb

Instance Method Summary collapse

Instance Method Details

#generate(source, path, encoded_params = nil) ⇒ String

Returns a generated signature for a source, path and encoded parameters.

Parameters:

  • source (Imglab::Source)

    the source used to generate the signature.

  • path (String)

    the path of the resource.

  • encoded_params (String) (defaults to: nil)

    encoded query params of the URL to generate the signature.

Returns:

  • (String)


13
14
15
16
17
18
19
20
21
22
23
# File 'lib/imglab/signature.rb', line 13

def generate(source, path, encoded_params = nil)
  decoded_secure_key = Base64.decode64(source.secure_key)
  decoded_secure_salt = Base64.decode64(source.secure_salt)

  data = "#{decoded_secure_salt}/#{path}"
  data = encoded_params ? "#{data}?#{encoded_params}" : data

  digest = OpenSSL::HMAC.digest(OpenSSL::Digest.new("sha256"), decoded_secure_key, data)

  Base64.urlsafe_encode64(digest).tr("=", "")
end