Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public string GetSignatureForVersion(VERSION version)
- {
- var composition = version.Cast<ORIGINAL_VERSION>().data as COMPOSITION;
- // При создании Ehr в data приходит EHR_STATUS, а не COMPOSITION
- if (composition == null)
- return string.Empty;
- X509Certificate2 certificate = GetCertificate(composition.archetype_details.template_id.value);
- if (certificate == null)
- return string.Empty;
- var doc = new XmlDocument
- {
- PreserveWhitespace = false
- };
- doc.LoadXml(version.Serialize<VERSION>());
- var reference = new Reference { DigestMethod = CPSignedXml.XmlDsigGost3411Url, Uri = string.Empty };
- // Добавляем transform на подписываемые данные для удаления вложенной подписи.
- reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
- // Добавляем transform для канонизации.
- reference.AddTransform(new XmlDsigC14NTransform());
- var keyInfo = new KeyInfo();
- keyInfo.AddClause(new KeyInfoX509Data(certificate));
- var signedXml = new SignedXml(doc)
- {
- SigningKey = certificate.PrivateKey
- };
- signedXml.AddReference(reference);
- signedXml.KeyInfo = keyInfo;
- signedXml.ComputeSignature();
- XmlElement xmlElement = signedXml.GetXml();
- return Convert.ToBase64String(Encoding.UTF8.GetBytes(xmlElement.InnerXml));
- }
Add Comment
Please, Sign In to add comment