Got it. It's super stupid. The key they give to feed the HMAC-SHA256 is actually a base64 string that needs to be decoded. It's not mentionned in the docs and I missed the constructor of the Signer in Ruby:
# Public: Initialize the Signer. # # access_key - The access_key encoded in Base64. Defaults to the one # in the global configuration. def initialize(access_key=Azure.config.storage_access_key) @access_key = Base64.strict_decode64(access_key) end Tests are passing now :) Thanks for your patience Sven! On Thu, Jun 19, 2014 at 4:01 PM, Sven Van Caekenberghe <s...@stfx.eu> wrote: > > On 19 Jun 2014, at 15:52, François Stephany <tulipe.mouta...@gmail.com> > wrote: > > > > > > > > > You might want to have a look at the code in Zinc-AWS (group AWS in > ConfigurationOfZincHTTPComponents), in particular ZnAWSS3Client and > ZnAWSS3RequestSignatureTool - it is using similar request signing but does > HMAC-SHA1. > > > > > > Thanks! I wasn't aware of the existence of ZnAWS. > > > Actually, i'm currently using the HMAC-SHA256 implementation of the > CloudFork. > > > > Is that an all Smalltalk implementation ? > > Because it would be really good to have SHA256 in the image. > > > > Yes it is. The class comment says: > > > > " > > > http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf > This class represnets the implementation of CFSHA256 as describied above. > > Please direct questions or comments about this implementation to Ron > Teitelbaum: r...@usmedrec.com > > This code was extensively coppied from SHA1 by Luciano Notarfrancesco > lnotarfrance...@yahoo.com > > " > > > > It seems to work for AWS, I wonder what I'm doing wrong here... > > You have to be 100% sure that the SHA256, HMAC-SHA256 code works (as > opposed to the SHA1, HMAC-SHA1 code) then you absolutely need examples: a > known canonical string and keys with a Base64 signature output. Start by > making sure you can replicate this in your reference implementation (Ruby, > Java, C#) and then start to go to Pharo. > > Look *very* carefully at each element of the canonical string, one letter > difference, one header, punctuation, whitespace, case, date or time format > difference will break the whole thing - that is the point of being a > signature. > > >