首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Botan PK_Signer

Botan PK_Signer
EN

Stack Overflow用户
提问于 2012-09-07 07:04:57
回答 1查看 511关注 0票数 3

我正在尝试初始化一个PK_Signer对象,这似乎给我带来了比Botan1.8.10版更多的问题。我目前使用的是Botan的最新稳定版本(1.10),我遇到了麻烦……

在Botan 1.8.10中,我看到了程序员这样做的示例:

代码语言:javascript
复制
Botan::RSA_PrivateKey pkey(rng, p, q, 65537, 0, n);
Botan::PK_Signer signer(pkey, "EMSA3(SHA-1)");

在Botan 1.10.3中,没有用于PK_Signer类的构造器。有两个构造器:

代码语言:javascript
复制
Botan::PK_Signer(const PK_Signer &);
Botan::PK_Signer(const PK_Signing_Key &key, EMSA *emsa);

这并不是什么问题,直到我开始使用第二个构造函数时才真正遇到问题。

我尝试过改变很多东西,但最有意义的方法是: Botan::AutoSeeded_RNG rng;Botan::RSA_PrivateKey pkey(rng,p,q,0x10001,0,n);

代码语言:javascript
复制
Botan::EMSA3 emsa(Botan::SHA_160);
Botan::PK_Signer signer(pkey, &emsa);

这样做会抛出错误:

代码语言:javascript
复制
error: no matching function for call to 'Botan::PK_Signer::PK_Signer(Botan::RSA_PrivateKey&, Botan::EMSA3 (*)(Botan::SHA_160))'

我不知道为什么会发生这种情况,因为根据Botan文档,EMSA3继承自抽象类EMSA。谢谢你的帮助,Hetelek

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-07 09:12:02

Botan::SHA_160是一个类,所以您定义的emsa变量是一个函数,而不是一个EMSA3实例。

根据Botan 1.8中的示例,您可以使用:

代码语言:javascript
复制
 #include <botan/look_pk.h>
 ...
 Botan::PK_Signer signer(pkey, get_emsa("EMSA3(SHA-1)"));

这也应该可以在Botan 1.10中工作。

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

https://stackoverflow.com/questions/12309673

复制
相关文章

相似问题

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