/// <summary> /// Подписывает XML-документ c помощью XAdES-BES /// </summary> /// <param name="certificate">Сертификат, с помощью которого производится подпись</param> /// <param name="privateKeyPassword">Пароль от контейнера закрытого ключа используемого сертификата</param> public void ComputeSignature(X509Certificate2 certificate, string privateKeyPassword) { var signatureId = string.Format("xmldsig-{0}", Guid.NewGuid().ToString().ToLower()); SigningKey = CryptoProvider.GetAsymmetricAlgorithm(certificate, privateKeyPassword); Signature.Id = signatureId; SignatureValueId = string.Format("{0}-sigvalue", signatureId); var reference = CryptoProvider.GetReference(SignedElementId, signatureId); AddReference(reference); SignedInfo.CanonicalizationMethod = XmlDsigCanonicalizationUrl; SignedInfo.SignatureMethod = CryptoProvider.SignatureMethod; var xadesInfo = new XadesInfo(certificate); KeyInfo = KeyInfoHelper.Create(certificate); var xadesObject = CryptoProvider.GetXadesObject(xadesInfo, signatureId); AddXadesObject(xadesObject); ComputeSignature(); HashAlgorithm hashAlgorithm; GetSignedInfoHash(out hashAlgorithm); var formatter = CryptoProvider.GetSignatureFormatter(certificate); var signedHash = formatter.CreateSignature(hashAlgorithm.Hash); Signature.SignatureValue = signedHash; }
public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder) { IList <PropertyInfo> keyMembers = new List <PropertyInfo>(); foreach (EntityPropertyInfo property in entityInfo.KeyMembers) { PropertyInfo member = builder.FindMember(property); keyMembers.Add(member); } builder.PrimaryKey = KeyInfoHelper.CreateKeyInfo(builder.EntityType, keyMembers.ToArray()); }
public static IKeyInfo EnsureKey( MemberInfo[] members, bool unique, DbTableInfoBuilder tableBuilder) { IKeyInfo keyInfo = tableBuilder.FindKey(members, false, unique); if (keyInfo == null) { keyInfo = KeyInfoHelper.CreateKeyInfo(tableBuilder.EntityType, members); tableBuilder.AddKey(keyInfo, unique); } return(keyInfo); }
public void Configure(EntityInfo entityInfo, DbTableInfoBuilder builder) { var indexes = entityInfo .Properties .SelectMany(p => p.Indexes, (p, i) => new { Property = p, Index = i }) .GroupBy(x => x.Index.Name); foreach (var indexGroup in indexes) { var index = indexGroup.First().Index; var indexProps = indexGroup .OrderBy(x => x.Index.Order) .Select(x => builder.FindMember(x.Property)) .ToArray(); var keyInfo = KeyInfoHelper.CreateKeyInfo(builder.EntityType, indexProps); builder.AddKey(keyInfo, index.IsUnique); } }