Module: Azure::Push::Sas

Included in:
Message
Defined in:
lib/azure/push/sas.rb

Class Method Summary collapse

Class Method Details

.sas_token(url, key_name, access_key, lifetime: 10) ⇒ Object



8
9
10
11
12
13
14
# 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