HMAC-SHA1 в C ++ с использованием OpenSSL

В коде, который мне нужно сохранить, есть бит, который привинчивает подпись Oauth. Я сузил проблему до вычисления дайджеста HMAC-SHA1. Вот этот код, который делает это:

  char key[256]="", base[1024]="";
char hmacsha1[1024]="", hmac_base64[1024]="";
unsigned int hmacsha1_len;

HMAC(EVP_sha1(), key, strlen(key), (unsigned char *)data, strlen(data), (unsigned char *)hmacsha1, &hmacsha1_len);

gBase64CRInclude = FALSE;
BPos = 0;
XPos = 0;
SPos = 0;
for (i=0;i<hmacsha1_len;i++) {
ch = hmacsha1[i];
BBuf[BPos++] = ch;
if (BPos == 3) {
encodebase64Mem(hmac_base64, &SPos);
BBuf[0]=BBuf[1]=BBuf[2]=BBuf[3] = 0;
}
}
encodebase64Mem(hmac_base64, &SPos);
hmac_base64[SPos] = 0;
printf("HMAC-SHA1: %s\n", hmac_base64);

Сейчас encodebase64Mem() кажется, все в порядке, так как другие строки кодируются правильно. Я видел подобные примеры вокруг, но все еще не могу понять, почему дайджест вычисляется неправильно. Ценю любую помощь, спасибо!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]