3

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);

2番目のコンストラクターで実際に問題が発生し始めるまで、これは問題ではありませんでした。

私は多くのことを変更しようとしましたが、最も理にかなっている方法は次のようにすることです。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。

4

1 に答える 1

1

Botan::SHA_160はクラスであるため、emsa定義した変数はEMSA3インスタンスではなく関数でした。

Botan 1.8の例によると、次のものを使用できます。

 #include <botan/look_pk.h>
 ...
 Botan::PK_Signer signer(pkey, get_emsa("EMSA3(SHA-1)"));

これはBotan1.10でも機能するはずです。

于 2012-09-07T01:12:01.833 に答える