Мне нужно использовать методы, описанные в RFC2617 и RFC1321 , но у меня возникают проблемы с преобразованием C в C ++. В основном у меня проблема с параметром, определенным как unsigned char
, но аргумент является переменной char*
.
Я могу исправить ошибки с помощью reinterpret_cast
, но подумал, что будет лучший способ, потому что нужно сделать много изменений.
Например, в следующей строке в md5c.c
переменная pszUserName
объявлена как char *, если переменная изменилась на unsigned char*
, то strlen
получила ошибки:
IN char * pszUserName,
...
MD5Update(&Md5Ctx, pszUserName, strlen(pszUserName));
Декларация MD5Update
void MD5Update (
MD5_CTX *context, /* context */
unsigned char *input, /* input block */
unsigned int inputLen /* length of input block */
)
{
...
}
Я получил эту ошибку в первую очередь:
../Dig/digcalc.cpp: In function ‘void DigestCalcHA1(char*, char*, char*, char*, char*, char*, char*)’:
../Dig/digcalc.cpp:44:58: error: invalid conversion from ‘char*’ to ‘unsigned char*’ [-fpermissive]
MD5Update(&Md5Ctx, pszUserName, strlen(pszUserName));
Есть также хорошая копия в Github