我正在尝试从此处使用7.7节中的示例来获取CyaSSL的Keygen函数的工作:http://www.yassl.com/yaSSL/Docs-cyassl-manual-7-keys-and-certificates.html

我正在使用带有--enable-keygen选项的CyaSSL 3.2.0,但也无法使其与3.1.0一起使用。

这是代码:

#include <stdio.h>
#include <cyassl/ctaocrypt/asn.h>
#include <cyassl/ctaocrypt/rsa.h>

int main() {
        RsaKey genKey;
        RNG rng;
        int ret;

        printf("%d\n",InitRng(&rng));
        printf("%d\n",InitRsaKey(&genKey, 0));
        ret = MakeRsaKey(&genKey, 1024, 65537, &rng);

        printf("ret: %d\n",ret);

        return 0;
}


我在InitRsaKey的行中遇到了分段错误,大概是由于无效的写入或其他原因。

有人知道我的问题可能在哪里吗?任何帮助表示赞赏

最佳答案

早上好,请不要忘记包含options.h标头。这将确保您在项目中获得正确的配置设置,例如,如果使用--enable-keygen配置CyaSSL,然后查看cyassl / options.h,则会看到#undef CYASSL_KEY_GEN行,之后是#define CYASSL_KEY_GEN。同样在您的makefile中,不要忘记包含cyassl库。这可以在构建行中使用-lcyassl来完成。请参阅下面的代码以供参考:

#include <stdio.h>
#include <cyassl/options.h> //pull in the define for CYASSL_KEY_GEN
#include <cyassl/ctaocrypt/asn.h>
#include <cyassl/ctaocrypt/rsa.h>

int main() {
        RsaKey genKey;
        RNG rng;
        int ret;

        printf("%d\n",InitRng(&rng));
        printf("%d\n",InitRsaKey(&genKey, 0));
        ret = MakeRsaKey(&genKey, 1024, 65537, &rng);

        printf("ret: %d\n",ret);

        return 0;
}


生成文件:

 CC=gcc       #you can use clang or other instead of gcc
 CFLAGS=-Wall
 LIBS=-lpthread -lcyassl #must have -lcyassl in makefile

 all: run

 #NOTE: arrows denote a hard tab, replace them with hard tab in makefile
 run: test.o
 →→→→$(CC) -o $@ $(LIBS) $^ $(CFLAGS) #put $(LIBS) into build command

 .PHONY: clean all

 clean:
 →→→→rm -f *.o test.o run

关于c - 使用CyaSSL Keygen时出现段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29218442/

10-09 22:46