我正在尝试初始化一个PK_Signer对象,这似乎给我带来了比Botan1.8.10版更多的问题。我目前使用的是Botan的最新稳定版本(1.10),我遇到了麻烦……
在Botan 1.8.10中,我看到了程序员这样做的示例:
Botan::RSA_PrivateKey pkey(rng, p, q, 65537, 0, n);
Botan::PK_Signer signer(pkey, "EMSA3(SHA-1)");在Botan 1.10.3中,没有用于PK_Signer类的构造器。有两个构造器:
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);
Botan::EMSA3 emsa(Botan::SHA_160);
Botan::PK_Signer signer(pkey, &emsa);这样做会抛出错误:
error: no matching function for call to 'Botan::PK_Signer::PK_Signer(Botan::RSA_PrivateKey&, Botan::EMSA3 (*)(Botan::SHA_160))'我不知道为什么会发生这种情况,因为根据Botan文档,EMSA3继承自抽象类EMSA。谢谢你的帮助,Hetelek
发布于 2012-09-07 09:12:02
Botan::SHA_160是一个类,所以您定义的emsa变量是一个函数,而不是一个EMSA3实例。
根据Botan 1.8中的示例,您可以使用:
#include <botan/look_pk.h>
...
Botan::PK_Signer signer(pkey, get_emsa("EMSA3(SHA-1)"));这也应该可以在Botan 1.10中工作。
https://stackoverflow.com/questions/12309673
复制相似问题