我正在尝试初始化一个 PK_Signer 对象,这似乎给我带来了比 Botan 1.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 类没有类似的构造函数。有2个构造函数:
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。