2012-09-06 36 views
3

我想剛剛初始化一個PK_Signer對象,這似乎給我更多的問題,然後Botan版本1.8.10。我目前使用牡丹的最新的穩定版(1.10),和我有麻煩......Botan PK_Signer

在牡丹1.8.10,我看到的例子,其中的程序員是這樣的:

Botan::RSA_PrivateKey pkey(rng, p, q, 65537, 0, n); 
Botan::PK_Signer signer(pkey, "EMSA3(SHA-1)"); 

在牡丹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))' 

我不知道爲什麼會這樣,因爲根據牡丹文檔從抽象類EMSA EMSA3繼承。感謝您的幫助,Hetelek。

回答

1

Botan::SHA_160是一類,所以您定義的emsa變量是一個函數而不是EMSA3實例。

據牡丹1.8的例子中,你可以使用:

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

也應在1.10牡丹工作。

相關問題