Я выполнил поиск по архивным сообщениям по этой проблеме, но существующая проблема, похоже, не относится к моей, поскольку, насколько я могу судить, я использую правильные длины криптографических параметров.В любом случае, мой код очень прост, но, к сожалению, я получаю segfault во время шифрования сообщения, это происходит, когда во время шифрования сообщения вызывается первый метод xor_block_aligned.Я предполагаю, что я что-то неправильно определил, так как код не был изменен каким-либо образом.
Я использую жестко закодированные значения для ключа, IV и заголовка, как вы можете видеть ниже ...
unsigned char* pChrIV = (unsigned char*)malloc(24);
memset(pChrIV, 1, 24);
unsigned char* pChrHeader = (unsigned char*)malloc(16);
memset(pChrHeader, 1, 16);
char* pChrMessage = "jfdk vklsdfasdfjdsajhfljasdfjhsdakjfkjhdsfsdliuhfhdsuihfausdhflhalsdjkhflaskdjfadjf nvkjsdnf kj nfdlkjnv lkjsdnf vkjndsf lkvjlkdfsj";
unsigned char* pChrTAG = (unsigned char*)malloc(16);
memset(pChrTAG, 0, 16);
unsigned char* pChrKey = (unsigned char*)malloc(16);
memset(pChrKey, 1, 16);
if(aes_init() == RETURN_GOOD)
printf("AES Initialised!\r\n");
gcm_ctx ctx[1];
if(gcm_init_and_key(pChrKey, 16,
ctx) == RETURN_GOOD)
printf("GCM Initialised!\r\n");
//It crashes here
gcm_encrypt_message(pChrIV, 24,
pChrHeader, 16,
pChrMessage, strlen(pChrMessage),
pChrTAG, 16,
ctx);
if(gcm_end(ctx) == RETURN_GOOD)
printf("Ended!\r\n");
printf("Done!\r\n");
return(0);
Я пытался изменить длину ключа и IV, но проблема сохраняется.
Я компилирую его в Eclipse в Ubuntu 10.4, используя компилятор GCC C.
Есть идеи, что я могу делать не так?Заранее большое спасибо!
Ник.