Class: S3::Signature
- Inherits:
-
Object
- Object
- S3::Signature
- Defined in:
- lib/s3/signature.rb
Class Method Summary collapse
-
.generate(options) ⇒ Object
Required options: host, request, access_key_id, secret_access_key.
Class Method Details
.generate(options) ⇒ Object
Required options: host, request, access_key_id, secret_access_key
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/s3/signature.rb', line 5 def self.generate() request = [:request] host = [:host] access_key_id = [:access_key_id] secret_access_key = [:secret_access_key] http_verb = request.method content_md5 = request["content-md5"] || "" content_type = request["content-type"] || "" date = request["x-amz-date"].nil? ? request["date"] : "" canonicalized_resource = canonicalized_resource(host, request) canonicalized_amz_headers = canonicalized_amz_headers(request) string_to_sign = "" string_to_sign << http_verb string_to_sign << "\n" string_to_sign << content_md5 string_to_sign << "\n" string_to_sign << content_type string_to_sign << "\n" string_to_sign << date string_to_sign << "\n" string_to_sign << canonicalized_amz_headers string_to_sign << canonicalized_resource digest = OpenSSL::Digest::Digest.new('sha1') hmac = OpenSSL::HMAC.digest(digest, secret_access_key, string_to_sign) base64 = Base64.encode64(hmac) signature = base64.chomp "AWS #{access_key_id}:#{signature}" end |