Bonjour,

J'essaye de mettre en oeuvre les requêtes http pour accéder à un blob storage du cloud Azure.
Pour cela je dois signer la requête en utilisant HMAC SHA 256.
D'après le message d'erreur que je reçois, la signature que j'envoie n'est pas bonne et je pense que j'ai mal compris le fonctionnement de HMAC_Init_ex et HMAC_Update.

Je suis sur une machine Ubuntu et j'utilise Qt Creator.
Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
unsigned char* signature = (unsigned char*) ("GET\n\n\n\n\n\n\n\n\n\n\n\nx-ms-date:" + date + "\nx-ms-version:2009-09-19\n/monCompteStorage\ncomp:list").toStdString().c_str(); //date est un QString qui a la forme "Fri, 20 Apr 2012 11:16:11 GMT"
unsigned char* key = (unsigned char*) "***********************************"; //clé d'accès primaire de google qui fait 88 caractères
unsigned char* result;
unsigned int result_len = 44;
 
result = (unsigned char*)malloc(sizeof(char) * result_len);
ENGINE_load_builtin_engines();
ENGINE_register_all_complete();
 
HMAC_CTX ctx;
HMAC_CTX_init(&ctx);
HMAC_Init_ex(&ctx, key, 88, EVP_sha256(), NULL);
HMAC_Update(&ctx, signature, 56);
HMAC_Final(&ctx, result, &result_len);
HMAC_CTX_cleanup(&ctx);
 
QByteArray array = QByteArray::fromRawData((char*)result, result_len);
array = array.toBase64();
qDebug() << array;
Bonne journée à tous.