2016-01-12 3 views
1

Следующий код с сообщением о восстановлении, Как реализация с C# BouncyCastle?BouncyCastle RSA Вероятностная схема подписи с восстановлением

std::vector<unsigned char> data{ 1,2,3,4,5,6 }; 

CryptoPP::AutoSeededRandomPool rng; 
CryptoPP::InvertibleRSAFunction params; 
params.GenerateRandomWithKeySize(rng, 2048); 

CryptoPP::RSA::PrivateKey privateKey(params); 
CryptoPP::RSA::PublicKey publicKey(params); 
CryptoPP::RSASS<CryptoPP::PSSR, CryptoPP::SHA1>::Signer signer(privateKey); 

CryptoPP::SecByteBlock signature(signer.MaxSignatureLength(data.size())); 

unsigned long signatureLen = signer.SignMessageWithRecovery(rng, &data[0], 
    data.size(), NULL, 0, signature); 

std::vector<unsigned char> encrypted; 
encrypted.assign(signatureLen, 0); 
memcpy(&encrypted[0], signature.m_ptr, signatureLen); 

ответ

2

Я думаю, что Iso9796d2PssSigner класс в Org.BouncyCastle.Crypto.Signers пространстве имен, вероятно, следует делать то, что вы хотите. Вы можете найти примеры использования в источнике ISO9796Test.cs.