Firmar y crear un Message Firmado ASN1 - Bouncycastle
-
27-10-2019 - |
Pregunta
¿Hay algún buen tutorial sobre cómo firmar un archivo y envolverlo dentro de un paquete ASN1 PKCS7 usando Bouncycastle?
Solución
Después de algún tiempo, descubrí cómo se ha hecho, en los ejemplos dentro de la aplicación Bouncycastle.
En realidad, es bastante más simple y recto de lo que había encontrado en ITEXT (, sin sacar la genialidad del marco en sí).
El código es algo así como:
AsymmetricCipherKeyPair signaturePair;
X509Certificate signatureCert;
IList certList = new ArrayList();
IList crlList = new ArrayList();
CmsProcessable msg = new CmsProcessableByteArray(Encoding.ASCII.GetBytes("I hate hello world!"));
certList.Add(signatureCert);
certList.Add(OrigCert);
crlList.Add(SignCrl);
IX509Store x509Certs = X509StoreFactory.Create(
"Certificate/Collection",
new X509CollectionStoreParameters(certList));
IX509Store x509Crls = X509StoreFactory.Create(
"CRL/Collection",
new X509CollectionStoreParameters(crlList));
CmsSignedDataGenerator gen = new CmsSignedDataGenerator();
gen.AddSigner(signaturePair.Private, signatureCert, CmsSignedDataGenerator.DigestSha1);
gen.AddCertificates(x509Certs);
gen.AddCrls(x509Crls);
CmsSignedData signedData = gen.Generate(msg, true);
//saving in BER encoding
Stream stream = new MemoryStream(signedData.GetEncoded());
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow