示例#1
0
 /// <summary>
 /// The save sertificate.
 /// </summary>
 /// <param name="sert">
 /// The sert.
 /// </param>
 /// <param name="version">
 /// The Version.
 /// </param>
 /// <param name="type">
 /// The type.
 /// </param>
 /// <param name="key">
 /// The key.
 /// </param>
 /// <param name="workstationId">
 /// The workstation id.
 /// </param>
 /// <param name="smoId">
 /// The smo id.
 /// </param>
 private void SaveSertificate(
     SertificateUec sert,
     short version,
     int type,
     byte[] key,
     Guid?workstationId,
     Guid?smoId)
 {
     if (sert != null)
     {
         sert.Key         = key;
         sert.InstallDate = DateTime.Now.Date;
     }
     else
     {
         var conceptCacheManager = ObjectFactory.GetInstance <IConceptCacheManager>();
         var workstationManager  = ObjectFactory.GetInstance <IWorkstationManager>();
         var smoManager          = ObjectFactory.GetInstance <IOrganisationManager>();
         sert = new SertificateUec
         {
             IsActive    = true,
             Key         = key,
             Type        = conceptCacheManager.GetById(type),
             Version     = version,
             Workstation =
                 workstationId.HasValue ? workstationManager.GetById(workstationId.Value) : null,
             Smo         = smoId.HasValue ? smoManager.GetById(smoId.Value) : null,
             InstallDate = DateTime.Now.Date
         };
         var session = ObjectFactory.GetInstance <ISessionFactory>().GetCurrentSession();
         session.Save(sert);
         session.Flush();
     }
 }
示例#2
0
        /// <summary>
        /// The assign from.
        /// </summary>
        /// <param name="w">
        /// The w.
        /// </param>
        public void AssignFrom(Workstation w)
        {
            Id   = w.Id;
            Name = w.Name;
            PointDistributionPolicy = w.PointDistributionPolicy;
            if (SertificateUecs != null)
            {
                SertificateUecs.Clear();
            }
            else
            {
                SertificateUecs = new List <SertificateUec>();
            }

            foreach (var sert in w.SertificateUecs)
            {
                var s = new SertificateUec();
                s.Id             = sert.Id;
                s.IsActive       = sert.IsActive;
                s.Key            = sert.Key;
                s.Type           = sert.Type;
                s.Version        = sert.Version;
                s.Workstation    = new Workstation();
                s.Workstation.Id = w.Id;
                s.InstallDate    = sert.InstallDate;
                SertificateUecs.Add(s);
            }

            UecCerticateType    = w.UecCerticateType;
            UecReaderName       = w.UecReaderName;
            SmardCardReaderName = w.SmardCardReaderName;
        }
 /// <summary>
 /// The add certificate.
 /// </summary>
 /// <param name="w">
 /// The w.
 /// </param>
 /// <param name="sessionValueName">
 /// The session value name.
 /// </param>
 /// <param name="certificateType">
 /// The certificate type.
 /// </param>
 private void AddCertificate(Workstation w, string sessionValueName, TypeSertificate certificateType)
 {
     if (Session[sessionValueName] != null)
     {
         var sert = new SertificateUec();
         sert.Key      = (byte[])Session[sessionValueName];
         sert.Type     = regulatoryService.GetConcept((int)certificateType);
         sert.IsActive = true;
         sert.Version  = 1;
         w.SertificateUecs.Add(sert);
     }
 }
示例#4
0
        /// <summary>
        /// The add certificate.
        /// </summary>
        /// <param name="s">
        /// The s.
        /// </param>
        /// <param name="sessionValueName">
        /// The session value name.
        /// </param>
        /// <param name="certificateType">
        /// The certificate type.
        /// </param>
        private void AddCertificate(Organisation s, string sessionValueName, TypeSertificate certificateType)
        {
            if (Session[sessionValueName] != null)
            {
                var sert = new SertificateUec();
                sert.Key      = (byte[])Session[sessionValueName];
                sert.Type     = regulatoryService.GetConcept((int)certificateType);
                sert.IsActive = true;
                sert.Version  = 1;
                if (s.SertificateUecs == null)
                {
                    s.SertificateUecs = new List <SertificateUec>();
                }

                s.SertificateUecs.Add(sert);
            }
        }
示例#5
0
        /// <summary>
        /// Возвращает ключ сертификата
        /// </summary>
        /// <param name="workstationName">
        /// Имя машины в локальной сети ПВП
        /// </param>
        /// <param name="version">
        /// Версия сертификата
        /// </param>
        /// <param name="type">
        /// Тип сертификата
        /// </param>
        /// <returns>
        /// Ключ сертификата
        /// </returns>
        public byte[] GetCertificateKey(string workstationName, int version, int type)
        {
            var user = ObjectFactory.GetInstance <ISecurityProvider>().GetCurrentUser();
            var sertificateUecManager = ObjectFactory.GetInstance <ISertificateUecManager>();
            var organisationManager   = ObjectFactory.GetInstance <IOrganisationManager>();

            // Ищем сертификаты уровня рабочей станции
            var workstation =
                GetBy(x => x.Name == workstationName && x.PointDistributionPolicy.Id == user.PointDistributionPolicyId)
                .FirstOrDefault();

            SertificateUec sert = null;

            if (workstation != null)
            {
                sert =
                    sertificateUecManager.GetBy(
                        x =>
                        x.IsActive && x.Version == version && x.Workstation.Id == workstation.Id &&
                        x.Type.Id == type).FirstOrDefault();
                if (sert != null)
                {
                    return(sert.Key);
                }
            }

            // Ищем сертификаты уровня СМО
            if (user.PointDistributionPolicyId != null)
            {
                var smo = organisationManager.GetById(user.PointDistributionPolicyId.Value);
                sert =
                    sertificateUecManager.GetBy(
                        x => x.IsActive && x.Version == version && x.Smo.Id == smo.Id && x.Type.Id == type)
                    .FirstOrDefault();
            }

            return(sert != null ? sert.Key : null);
        }