Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public X509Certificate2 WybierzCertyfikat()
- {
- X509Store store = new X509Store(StoreLocation.CurrentUser);
- store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
- X509Certificate2Collection certificates = store.Certificates;
- X509Certificate2Collection foundCertificates = certificates;
- var selectedCertificates = X509Certificate2UI.SelectFromCollection(foundCertificates,
- "Wybรณr certyfikatu", "Wybierz certyfkat do podpisywania", X509SelectionFlag.SingleSelection);
- if (selectedCertificates.Count != 0)
- {
- X509Certificate2 certificate = selectedCertificates[0];
- return certificate;
- }
- return null;
- }
- public void Podpisz(X509Certificate2 cert, string xmlDek, string xmlDekPodpisany)
- {
- if (cert != null)
- {
- XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();
- Reference reference = new Reference();
- RSACryptoServiceProvider rsaKey = (RSACryptoServiceProvider)cert.PrivateKey;
- var doc = new XmlDocument();
- doc.PreserveWhitespace = false;
- doc.Load(xmlDek);
- var xadesSignedXml = new XadesSignedXml(doc);
- xadesSignedXml.Signature.Id = "";
- reference.Uri = "#SignedProperties-0";
- reference.Id = "SignedProperties-Reference0";
- reference.Type = @"http://uri.etsi.org/01903#SignedProperties";
- xadesSignedXml.SignedInfo.Id = "SignedInfo-0";
- xadesSignedXml.AddReference(reference);
- xadesSignedXml.SigningKey = rsaKey;
- KeyInfo keyInfo = new KeyInfo();
- keyInfo.Id = "KeyInfo-0";
- keyInfo.AddClause(new KeyInfoX509Data(cert));
- xadesSignedXml.KeyInfo = keyInfo;
- xadesSignedXml.Signature.Id = "Signature-0";
- xadesSignedXml.SignatureValueId = "SignatureValue-0";
- XadesObject xadesObject = new XadesObject();
- Cert certificate = new Cert();
- certificate.IssuerSerial.X509IssuerName = cert.IssuerName.Name;
- certificate.IssuerSerial.X509SerialNumber = cert.SerialNumber;
- SHA1 cryptoServiceProvider = new SHA1CryptoServiceProvider();
- certificate.CertDigest.DigestValue = cryptoServiceProvider.ComputeHash(cert.RawData);
- certificate.CertDigest.DigestMethod.Algorithm = SignedXml.XmlDsigSHA1Url;
- xadesObject.QualifyingProperties.Target = "#" + xadesSignedXml.Signature.Id;
- xadesObject.QualifyingProperties.SignedProperties.SignedSignatureProperties.SigningTime = DateTime.Now;
- xadesObject.QualifyingProperties.SignedProperties.Id = "SignedProperties-0";
- xadesObject.QualifyingProperties.SignedProperties.SignedSignatureProperties.SignaturePolicyIdentifier.SignaturePolicyImplied = false;
- xadesObject.QualifyingProperties.SignedProperties.SignedSignatureProperties.SigningCertificate.CertCollection.Add(certificate);
- xadesSignedXml.AddXadesObject(xadesObject);
- var data = new System.Security.Cryptography.Xml.DataObject("Dokument-0", "text/xml", "UTF-8", doc.DocumentElement);
- xadesSignedXml.AddObject(data);
- xadesSignedXml.ComputeSignature();
- XadesCheckSignatureMasks composedMask = default(XadesCheckSignatureMasks);
- bool sigOk = xadesSignedXml.XadesCheckSignature(composedMask);
- if (sigOk) File.WriteAllText(xmlDekPodpisany, xadesSignedXml.GetXml().OuterXml, Encoding.UTF8);
- }
- }
- GateServicePortTypeClient client = new GateServicePortTypeClient("GateServiceSOAP12port1");
- public sendDocumentResponse Wyslij(string xmlDekPodpisany)
- {
- sendDocument send = new sendDocument();
- send.document = File.ReadAllBytes(xmlDekPodpisany);
- var resDok = client.sendDocument(send);
- return resDok;
- }
- public requestUPOResponse PobierzUPO(string refId)
- {
- requestUPO reqUpo = new requestUPO();
- reqUpo.refId = refId;
- return client.requestUPO(reqUpo);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement