Class: Amazon::Coral::V1SignatureHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/amazon/coral/v1signaturehelper.rb

Instance Method Summary collapse

Constructor Details

#initialize(aws_access_key_id, aws_secret_key) ⇒ V1SignatureHelper

Returns a new instance of V1SignatureHelper.



11
12
13
14
# File 'lib/amazon/coral/v1signaturehelper.rb', line 11

def initialize(aws_access_key_id, aws_secret_key)
  @aws_access_key_id = aws_access_key_id.to_s
  @aws_secret_key = aws_secret_key.to_s
end

Instance Method Details

#add_fields(query_string_map, time) ⇒ Object



46
47
48
49
50
51
# File 'lib/amazon/coral/v1signaturehelper.rb', line 46

def add_fields(query_string_map, time)
  query_string_map['AWSAccessKeyId'] = @aws_access_key_id
  query_string_map['SignatureVersion'] = '1'
  query_string_map['SignatureMethod'] = 'HmacSHA1'
  query_string_map['Timestamp'] = time.to_s
end

#canonicalize(args) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/amazon/coral/v1signaturehelper.rb', line 26

def canonicalize(args)
  query_string_map = args[:query_string_map]
  
  # exclude any existing Signature parameter from the canonical string
  sorted = sort(query_string_map.reject { |k, v| k == 'Signature' })
  
  canonical = ''
  sorted.each do |v|
    canonical << v[0]
    canonical << v[1] unless(v[1].nil?)
  end
  
  return canonical
end

#compute_signature(canonical) ⇒ Object



41
42
43
44
# File 'lib/amazon/coral/v1signaturehelper.rb', line 41

def compute_signature(canonical)
  digest = OpenSSL::Digest::Digest.new('sha1')
  return Base64.encode64(OpenSSL::HMAC.digest(digest, @aws_secret_key, canonical)).strip
end

#sign(args) ⇒ Object



16
17
18
# File 'lib/amazon/coral/v1signaturehelper.rb', line 16

def sign(args)
  signT(Time.now.iso8601, args)
end

#signT(time, args) ⇒ Object



20
21
22
23
24
# File 'lib/amazon/coral/v1signaturehelper.rb', line 20

def signT(time, args)
  query_string_map = args[:query_string_map]
  add_fields(query_string_map, time)
  query_string_map['Signature'] = compute_signature(canonicalize(args))
end

#sort(hash) ⇒ Object



53
54
55
# File 'lib/amazon/coral/v1signaturehelper.rb', line 53

def sort(hash)
  hash.sort { |a,b| a[0].downcase <=> b[0].downcase }
end