Exemplo n.º 1
0
        /// <summary>
        /// Register a new oid
        /// </summary>
        public void Register(OidData oidData)
        {
            using (DataContext dataContext = this.m_configuration.Provider.GetWriteConnection())
            {
                try
                {
                    dataContext.Open();
                    using (var tx = dataContext.BeginTransaction())
                    {
                        try
                        {
                            // First attempt to find the oid
                            var dba = new DbAssigningAuthority()
                            {
                                Description = oidData.Description,
                                Name        = oidData.Name,
                                Oid         = oidData.Oid,
                                Url         = oidData.Ref.ToString(),
                                DomainName  = oidData.Mnemonic
                            };

                            // Add attributes
                            var regex   = oidData.Attributes.FirstOrDefault(o => o.Key == "ValidationRegex");
                            var asgnDev = oidData.Attributes.FirstOrDefault(o => o.Key == "AssigningDevice");
                            dba.ValidationRegex = regex.Value;
                            if (!String.IsNullOrEmpty(asgnDev.Value))
                            {
                                var device = ApplicationContext.Current.GetService <ISecurityRepositoryService>().FindDevices(o => o.Name == asgnDev.Value).FirstOrDefault();
                                dba.AssigningDeviceKey = device?.Key;
                            }

                            dataContext.Insert(dba);

                            tx.Commit();
                        }
                        catch
                        {
                            tx.Rollback();
                            throw;
                        }
                    }
                }
                catch (Exception e)
                {
                    this.m_tracer.TraceEvent(TraceEventType.Error, e.HResult, "Error inserting OID {0} : {1}", oidData, e);
                    throw;
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Parse oid data
        /// </summary>
        private OidData ParseOidData(DbAssigningAuthority oid)
        {
            var retVal = new OidData()
            {
                Description = oid.Description,
                Mnemonic    = oid.DomainName,
                Name        = oid.Name,
                Oid         = oid.Oid,
                Ref         = !String.IsNullOrEmpty(oid.Url) ? new Uri(oid.Url) : null
            };

            if (!String.IsNullOrEmpty(oid.ValidationRegex))
            {
                retVal.Attributes.Add(new KeyValuePair <string, string>("ValidationRegex", oid.ValidationRegex));
            }
            return(retVal);
        }