Exemplo n.º 1
0
        /// <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;
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
            }
        }