private static XadesInfo GetXadesInfo(string rawPk) { var xadesInfo = new XadesInfo { RawPk = rawPk, SigningDateTimeUtc = DateTime.UtcNow }; var delta = TimeZoneInfo.Local.GetUtcOffset(DateTime.Now); xadesInfo.TimeZoneOffsetMinutes = Convert.ToInt32(delta.TotalMinutes); return(xadesInfo); }
private static XadesObject GetXadesObject(XadesInfo xadesInfo, string signatureid) { var xadesObject = new XadesObject { QualifyingProperties = { Target = $"#{signatureid}", SignedProperties = { Id = $"{signatureid}-signedprops" } } }; var signedSignatureProperties = xadesObject.QualifyingProperties.SignedProperties.SignedSignatureProperties; var x509CertificateParser = new Org.BouncyCastle.X509.X509CertificateParser(); var bouncyCert = x509CertificateParser.ReadCertificate(Convert.FromBase64String(xadesInfo.RawPk)); var x509IssuerDn = GetOidRepresentation(bouncyCert.IssuerDN.ToString()); x509IssuerDn = IssuerNamePatcher(x509IssuerDn); var cert = new Cert { IssuerSerial = { X509IssuerName = x509IssuerDn, X509SerialNumber = bouncyCert.SerialNumber.ToString() } }; #pragma warning disable 612 cert.CertDigest.DigestMethod.Algorithm = CPSignedXml.XmlDsigGost3411UrlObsolete; #pragma warning restore 612 var rawCertData = Convert.FromBase64String(xadesInfo.RawPk); var pkHash = HashAlgorithm.Create("GOST3411"); if (pkHash != null) { var hashValue = pkHash.ComputeHash(rawCertData); cert.CertDigest.DigestValue = hashValue; } signedSignatureProperties.SigningCertificate.CertCollection.Add(cert); signedSignatureProperties.SigningTime = xadesInfo.SigningDateTimeUtc.AddMinutes(xadesInfo.TimeZoneOffsetMinutes); return(xadesObject); }