首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写openssl引擎

如何编写openssl引擎
EN

Stack Overflow用户
提问于 2011-08-16 14:40:59
回答 2查看 7.4K关注 0票数 8

我想写一个openssl动态引擎,但我找不到任何相关文档。

我想要写的算法是一个chipper算法(如rsa)和一个散列算法(如md5)。

有没有什么简单的引擎源代码可以让我修改和使用呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-07 12:42:56

是什么简单的引擎源代码,我可以改变它并从中使用它?

英特尔RDRAND引擎非常容易理解。你可以通过以下方式找到它的源代码:

代码语言:javascript
复制
openssl-1.0.1f$ grep -R -i ENGINE_rdrand *
crypto/engine/eng_rdrand.c:static ENGINE *ENGINE_rdrand(void)
crypto/engine/eng_rdrand.c:    ENGINE *toadd = ENGINE_rdrand();

下面是如何加载它并将其设置为默认的随机数生成器引擎(来自Random Numbers|Hardware):

代码语言:javascript
复制
unsigned long err = 0;
int rc = 0;

OPENSSL_cpuid_setup();
ENGINE_load_rdrand();

ENGINE* eng = ENGINE_by_id("rdrand");
err = ERR_get_error();

if(NULL == eng) {
    fprintf(stderr, "ENGINE_load_rdrand failed, err = 0x%lx\n", err);
    abort(); /* failed */
}

rc = ENGINE_init(eng);
err = ERR_get_error();

if(0 == rc) {
    fprintf(stderr, "ENGINE_init failed, err = 0x%lx\n", err);
    abort(); /* failed */
}

rc = ENGINE_set_default(eng, ENGINE_METHOD_RAND);
err = ERR_get_error();

if(0 == rc) {
    fprintf(stderr, "ENGINE_set_default failed, err = 0x%lx\n", err);
    abort(); /* failed */
}

/* OK to proceed */

...
ENGINE_finish(eng);
ENGINE_free(eng);
票数 2
EN

Stack Overflow用户

发布于 2011-08-16 15:02:53

我建议你这样做

代码语言:javascript
复制
apt-get source openssl

这将为您提供openssl源代码。在树中,您可以找到例如目录crypto/rsa和crypto/md5,我想这对您的项目来说是一个很好的开始。它还附带了一些README等形式的文档。

玩得开心。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7074448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档