Как создать CMS (синтаксис криптографических сообщений) с Mono Framework и BouncyCastle API? - PullRequest
1 голос
/ 05 марта 2011

У меня есть сертификат в формате PKCS # 12, и мне нужно сгенерировать подпись CMS (синтаксис криптографических сообщений). Из-за того, что «Mono Framework» не имеет полностью реализованной сборки «System.Security.Cryptography», я пытаюсь использовать «API Bouncy Castle для C #».

Итак, используя «Надувной замок», мне нужно написать код, альтернативный тому, который я написал в DOTNET.

Код на DOT NET следующий:

X509Certificate2 crt = new X509Certificate2();

byte[] crtBytes = [ certificate in the format PKCS12 (certificate + private key) obtained using FileStream class]

crt.Import(crtBytes, "123456", X509KeyStorageFlags.DefaultKeySet);

Encoding msgCodificado = Encoding.UTF8;

byte[] msgBytes = msgCodificado.GetBytes(xmlTRA.OuterXml); // xmlTRA.OuterXml is the data to sign

ContentInfo pkcsContentInfo = new ContentInfo(msgBytes);

SignedCms cms = new SignedCms(pkcsContentInfo);
CmsSigner firmante = new CmsSigner(crt);

firmante.IncludeOption = X509IncludeOption.EndCertOnly;
cms.ComputeSignature(firmante); // ---> throw an cryptografy exception with MONO

byte[] firma = cms.Encode();
firmaB64 = Convert.ToBase64String(firma);

Кто-нибудь знает, как написать альтернативный код, используя «Bouncy Castle API для C #»?

1 Ответ

0 голосов
/ 11 сентября 2011

Org.BouncyCastle.Pkcs имеет классы для работы с хранилищем PKCS # 12.Org.BouncyCastle.Cms имеет классы для работы с сообщениями CMS.

В исходном коде есть соответствующие тестовые классы, которые показывают основы использования, например, Pkcs12Store (Builder) и CmsSignedData (Generator).

...