Não foi possível reproduzir a assinatura da AWS do exemplo usando o HMAC SHA256
Eu estou seguindo este exemplo
http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html
e tentando reproduzir a cadeia de 64 caracteres para a assinatura que eles afirmam como ...
aeeed9bbccd4d02ee5c0109b86d86835f995330da4c265957d157751f604d404
Consegui corresponder com êxito o digeset hexadecimal da solicitação canônica e positivo que a string StringToSign está correta.
A última parte é o cálculo da chave e da assinatura. É aqui que estou atingindo um bloqueio de estrada usando a função ruby fornecida 'getSignatureKey'
http://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html#signature-v4-examples-ruby
signing_key = getSignatureKey secret_access_key, current_date, region, aws_service
signature = OpenSSL::HMAC.digest('sha256', signing_key, string_to_sign)
def getSignatureKey key, dateStamp, regionName, serviceName
kDate = OpenSSL::HMAC.digest('sha256', "AWS4" + key, dateStamp)
kRegion = OpenSSL::HMAC.digest('sha256', kDate, regionName)
kService = OpenSSL::HMAC.digest('sha256', kRegion, serviceName)
kSigning = OpenSSL::HMAC.digest('sha256', kService, "aws4_request")
kSigning
end
A saída atual para 'signature' é essa estranha sequência de caracteres.
ٻ . h5 3 e } wQ
O que estou perdendo para obter a assinatura igual ...
aeeed9bbccd4d02ee5c0109b86d86835f995330da4c265957d157751f604d404