如何编写openssl引擎



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

我想写的算法,是一个切分算法(像rsa)和一个散列算法(像md5)。

是任何简单的引擎源代码,我可以改变和使用?

是任何简单的引擎源代码,我可以改变和使用?

英特尔RDRAND引擎非常容易理解。你可以通过

找到它的来源
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):
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%lxn", err);
    abort(); /* failed */
}
rc = ENGINE_init(eng);
err = ERR_get_error();
if(0 == rc) {
    fprintf(stderr, "ENGINE_init failed, err = 0x%lxn", 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%lxn", err);
    abort(); /* failed */
}
/* OK to proceed */
...
ENGINE_finish(eng);
ENGINE_free(eng);

我建议你这么做

apt-get source openssl

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

玩。

最新更新