В строках
unsigned int* hash_size;
EVP_DigestFinal(ctx, hash, hash_size);
вы используете hash_size
, пока он не инициализирован, и EVP_DigestFinal()
попытается записать результат hash_size
в неизвестное место, что вызовет ошибку сегмента.Вместо этого вы можете сделать
unsigned int hash_size;
EVP_DigestFinal(ctx, hash, &hash_size);
Ваш компилятор должен был дать вам указание на эту проблему, он обычно способен обнаруживать неинициализированные переменные, подобные этой.