No se puede reproducir la firma de AWS del ejemplo con HMAC SHA256
Estoy siguiendo este ejemplo
http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html
e intentando reproducir la cadena de 64 caracteres para la firma que dicen como ...
aeeed9bbccd4d02ee5c0109b86d86835f995330da4c265957d157751f604d404
He acertado el digeset hexadecimal para la solicitud canónica y he afirmado que la cadena StringToSign es correcta.
La última pieza está calculando el signo_clave y la firma. Aquí es donde estoy golpeando un obstáculo usando la función de rubí proporcionada '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
La salida actual de 'firma' es esta extraña secuencia de caracteres.
ٻ . h5 3 e } wQ
¿Qué me falta para que la firma sea igual ...
aeeed9bbccd4d02ee5c0109b86d86835f995330da4c265957d157751f604d404