使用Brian Gladmans AES Code调用gcm_encrypt_message时的Segfault

时间:2012-02-15 10:46:41

标签: c encryption segmentation-fault aes

我在这个问题上搜索了存档的消息,但是现有的问题似乎与我没有关系,因为据我所知,我正在使用正确的加密参数长度。无论如何,我的代码非常简单但不幸的是我在加密消息时遇到了段错误,它发生在消息加密期间调用第一个xor_block_aligned方法时。我假设我错误地定义了一些东西,因为代码没有以任何方式被修改。

我正在使用Key,IV和Header的硬编码值,如下所示......

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);

我尝试更改Key和IV长度,但问题仍然存在。

我正在使用GCC C编译器在Ubuntu 10.4中用Eclipse编译它。

任何想法我可能做错了什么?非常感谢提前!

尼克。

0 个答案:

没有答案