module Azure::Push::Sas

Public Class Methods

sas_token(url, key_name, access_key, lifetime: 10) click to toggle source
# File lib/azure/push/sas.rb, line 8
def self.sas_token(url, key_name, access_key, lifetime: 10)
  target_uri = CGI.escape(url.downcase).gsub('+', '%20').downcase
  expires = Time.now.to_i + lifetime
  to_sign = "#{target_uri}\n#{expires}"
  signature = CGI.escape(Base64.strict_encode64(OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha256'), access_key, to_sign))).gsub('+', '%20')
  token = "SharedAccessSignature sr=#{target_uri}&sig=#{signature}&se=#{expires}&skn=#{key_name}"
end