Class: AWSRaw::S3::Signer
- Inherits:
-
Object
- Object
- AWSRaw::S3::Signer
- Defined in:
- lib/awsraw/s3/signer.rb
Overview
Generates the Authorization header for a REST request to S3.
See docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAuthentication.html
Direct Known Subclasses
Constant Summary collapse
- SUBRESOURCES =
%w(acl lifecycle location logging notification partNumber policy requestPayment torrent uploadId uploads versionId versioning versions website)
Instance Method Summary collapse
- #authorization_header_value(request) ⇒ Object (also: #signature)
- #encoded_signature(string_to_sign) ⇒ Object
-
#initialize(access_key_id, secret_access_key) ⇒ Signer
constructor
A new instance of Signer.
- #string_to_sign(request) ⇒ Object
Constructor Details
#initialize(access_key_id, secret_access_key) ⇒ Signer
Returns a new instance of Signer.
15 16 17 18 |
# File 'lib/awsraw/s3/signer.rb', line 15 def initialize(access_key_id, secret_access_key) @access_key_id = access_key_id @secret_access_key = secret_access_key end |
Instance Method Details
#authorization_header_value(request) ⇒ Object Also known as: signature
20 21 22 23 24 25 |
# File 'lib/awsraw/s3/signer.rb', line 20 def (request) string_to_sign = string_to_sign(request) signature = encoded_signature(string_to_sign) "AWS #{@access_key_id}:#{signature}" end |
#encoded_signature(string_to_sign) ⇒ Object
30 31 32 33 34 |
# File 'lib/awsraw/s3/signer.rb', line 30 def encoded_signature(string_to_sign) digest = OpenSSL::Digest::Digest.new("sha1") sha = OpenSSL::HMAC.digest(digest, @secret_access_key, string_to_sign) signature = Base64.encode64(sha).strip end |
#string_to_sign(request) ⇒ Object
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/awsraw/s3/signer.rb', line 36 def string_to_sign(request) [ request.method, request.headers["Content-MD5"] || "", request.headers["Content-Type"] || "", request.headers["Date"], canonicalized_amz_headers(request.headers), canonicalized_resource(request) ].flatten.join("\n") end |