В настоящее время я работаю над приложением, которое использует библиотеку openssl (libcrypto) для создания сертификатов. Теперь мне нужно получить хэш уже существующего сертификата.
Когда я использую свой терминал, я могу сгенерировать хеш-значение, используя
openssl x509 -hash -in cert.pem -noout
Выход: 01da0e2b
Это мой код, в котором я пытаюсь сгенерировать хеш-значение, используя библиотеку на C.
X509 *cert = NULL;
FILE *fp = fopen(currentCert.UTF8String, "r");
PEM_read_X509(fp, &cert, NULL, NULL);
long hash = X509_subject_name_hash(cert);
char *mdString = malloc(sizeof(long));
sprintf(mdString, "%lx",hash);
printf(mdString);
Выход: 1817886a
Но на самом деле мой результат другой. Кто-нибудь знает, что я делаю неправильно?
printf("0x%08lx",hash)
, не могу понять, в чем причина его сериализации в char *, что тоже неверно, потому что размер буфера должен зависеть от количества цифр - person cmidi   schedule 06.05.2015