module Blobsterix::S3Auth::V2Helper
Public Instance Methods
canonicalized_amz_headers()
click to toggle source
# File lib/blobsterix/s3/s3_auth_v2_helper.rb, line 5 def canonicalized_amz_headers amz_headers = env.select{|key,value| /HTTP_X_AMZ/i.match(key) if key.is_a?(String) }.sort.map{|key,value| "#{key.gsub("HTTP_","").downcase.gsub("_","-")}:#{value}" } return amz_headers.join("\n")+"\n" if amz_headers.length > 0 "" end
canonicalized_resource(escape=false)
click to toggle source
# File lib/blobsterix/s3/s3_auth_v2_helper.rb, line 15 def canonicalized_resource(escape=false) return "/" if bucket == "root" escape ? "/#{bucket}/#{CGI.escape(file)}" : "/#{bucket}/#{file}" end
check(secret_key_store)
click to toggle source
# File lib/blobsterix/s3/s3_auth_v2_helper.rb, line 28 def check(secret_key_store) return false if is_expired? # logger.info string_to_sign own_key_0 = server_signature(secret_key_store.get_key(access_key), string_to_sign) own_key_1 = server_signature(secret_key_store.get_key(access_key), string_to_sign(true)) # logger.info "[#{@signature}] == [#{own_key_0}] OR [#{@signature}] == [#{own_key_1}]" @signature == own_key_0 || @signature == own_key_1 end
gen_signature(secret_key, str)
click to toggle source
# File lib/blobsterix/s3/s3_auth_v2_helper.rb, line 37 def gen_signature(secret_key, str) Base64.encode64( OpenSSL::HMAC.digest("sha1", secret_key, str)).chop end
string_to_sign(escape=false)
click to toggle source
# File lib/blobsterix/s3/s3_auth_v2_helper.rb, line 20 def string_to_sign(escape=false) "#{env["REQUEST_METHOD"]}\n"+ "#{env["HTTP_CONTENT_MD5"]||""}\n"+ "#{env["CONTENT_TYPE"]||""}\n"+ "#{time_of_request}\n"+ "#{canonicalized_amz_headers}#{canonicalized_resource(escape)}" end