2016-08-03 3 views
0

나는 C#에서 봉투 암호화 CAdes를 사용하여 .p7m 파일에 서명해야하는 프로젝트를 가지고 있는데 BouncyCastle로 만들었습니다. 이제 서명 프로세스는 윈도우 7, 8, 10에서 완벽하게 작동,하지만 난 윈도우 XP에 그것을 테스트 할 때 오류가 발생했습니다는Bouncy Castle Windows XP와 서명 파일

이 파일

SHA256Managed hashSha256 = new SHA256Managed(); 
byte[] certHash = hashSha256.ComputeHash(cert.RawData); 
EssCertIDv2 essCert1 = new EssCertIDv2(new Org.BouncyCastle.Asn1.X509.AlgorithmIdentifier("2.16.840.1.101.3.4.2.1"), certHash); 
SigningCertificateV2 scv2 = new SigningCertificateV2(new EssCertIDv2[] { essCert1 }); 
Org.BouncyCastle.Asn1.Cms.Attribute CertHAttribute = new Org.BouncyCastle.Asn1.Cms.Attribute(Org.BouncyCastle.Asn1.Pkcs.PkcsObjectIdentifiers.IdAASigningCertificateV2, new DerSet(scv2)); 
Asn1EncodableVector v = new Asn1EncodableVector(); 
v.Add(CertHAttribute); 
Org.BouncyCastle.Asn1.Cms.AttributeTable AT = new Org.BouncyCastle.Asn1.Cms.AttributeTable(v); 
CmsSignedDataGenWithRsaCsp cms = new CmsSignedDataGenWithRsaCsp(); 
Org.BouncyCastle.Crypto.AsymmetricKeyParameter keyParameter = null; 
dynamic rsa = (RSACryptoServiceProvider)cert.PrivateKey; 
Org.BouncyCastle.X509.X509Certificate certCopy = DotNetUtilities.FromX509Certificate(cert); 
cms.MyAddSigner(rsa, certCopy, keyParameter, "1.2.840.113549.1.1.1", "2.16.840.1.101.3.4.2.1", AT, null); 
ArrayList certList = new ArrayList(); 
certList.Add(certCopy); 
Org.BouncyCastle.X509.Store.X509CollectionStoreParameters PP = new Org.BouncyCastle.X509.Store.X509CollectionStoreParameters(certList); 
Org.BouncyCastle.X509.Store.IX509Store st1 = Org.BouncyCastle.X509.Store.X509StoreFactory.Create("CERTIFICATE/COLLECTION", PP); 
cms.AddCertificates(st1); 
FileInfo File__1 = new FileInfo(NomeFile); 
CmsProcessableFile file__2 = new CmsProcessableFile(File__1); 
CmsSignedData Firmato = cms.Generate(file__2, true); 
byte[] Encoded = Firmato.GetEncoded(); 
RisFirma = ""; 
return Encoded; 

That is the windows xp error

에게 서명 기능입니다

도움을 많이 받으실 수 있습니다. 친절한 답변

+0

프로그래밍은 문제를 해결하기 위해 프로그래밍 * 구성 * 기술입니다. –

답변

0

나는이 문제를 해결했다. 최신 CSP가 Windows XP에서는 작동하지 않는 것 같다. 나는 다른 CSP로 tryed하고 다시 작동하기 시작했다.

bye

0

SHA-256 해시 또는 SHA-256의 OID처럼 보입니다. XP를 최신 서비스 팩으로 업데이트하고 업데이트하십시오. XP는 old이므로 모든 알고리즘을 지원하지 않을 수 있습니다. XP 시스템에서 서명을 만드는 아이디어는 피해야합니다. 지원이나 버그 수정없이 플랫폼에 보안을 생성해서는 안됩니다.

관련 문제