void m_fillproperties(String ldapPath) { IDictionary <String, Object> props = DsUtils.GetEntryProperties( ldapPath, DsUtils.PropCN, DsUtils.PropDN, DsUtils.PropDisplayName, DsUtils.PropFlags, DsUtils.PropCpsOid, DsUtils.PropCertTemplateOid, DsUtils.PropLocalizedOid, DsUtils.PropPkiTemplateMajorVersion, DsUtils.PropPkiTemplateMinorVersion, DsUtils.PropPkiSchemaVersion, DsUtils.PropWhenChanged, DsUtils.PropPkiSubjectFlags, DsUtils.PropPkiEnrollFlags, DsUtils.PropPkiPKeyFlags, DsUtils.PropPkiNotAfter, DsUtils.PropPkiRenewalPeriod, DsUtils.PropPkiPathLength, DsUtils.PropCertTemplateEKU, DsUtils.PropPkiCertPolicy, DsUtils.PropPkiCriticalExt, DsUtils.PropPkiSupersede, DsUtils.PropPkiKeyCsp, DsUtils.PropPkiKeySize, DsUtils.PropPkiKeySpec, DsUtils.PropPkiKeySddl, DsUtils.PropPkiRaAppPolicy, DsUtils.PropPkiRaCertPolicy, DsUtils.PropPkiRaSignature, DsUtils.PropPkiAsymAlgo, DsUtils.PropPkiSymAlgo, DsUtils.PropPkiSymLength, DsUtils.PropPkiHashAlgo, DsUtils.PropPkiKeyUsage, DsUtils.PropPkiKeyUsageCng ); flags = (Int32)props[DsUtils.PropFlags]; Name = (String)props[DsUtils.PropCN]; DistinguishedName = (String)props[DsUtils.PropDN]; DisplayName = (String)props[DsUtils.PropDisplayName]; major = (Int32)props[DsUtils.PropPkiTemplateMajorVersion]; minor = (Int32)props[DsUtils.PropPkiTemplateMinorVersion]; SchemaVersion = (Int32)props[DsUtils.PropPkiSchemaVersion]; OID = new Oid((String)props[DsUtils.PropCertTemplateOid]); LastWriteTime = (DateTime)props[DsUtils.PropWhenChanged]; Settings = new CertificateTemplateSettings(props); }
void initializeDS(String oid, OidGroupEnum group) { List <Int32> exclude = new List <Int32>(new[] { 1, 2, 3, 4, 5, 6, 10 }); if (exclude.Contains((Int32)group)) { initializeLocal(oid, group); return; } Boolean found = false; String oidvalue = oid; if (_searchBy.ToLower() == "byname") { Oid oidobj = new Oid(oid); if (String.IsNullOrEmpty(oidobj.Value)) { return; } oidvalue = oidobj.Value; } String cn = computeOidHash(oidvalue); String ldapPath = $"CN={cn},{_baseDsPath}"; try { IDictionary <String, Object> oidInDs = DsUtils.GetEntryProperties( ldapPath, DsUtils.PropFlags, DsUtils.PropDN, DsUtils.PropDisplayName, DsUtils.PropCpsOid); found = true; DistinguishedName = (String)oidInDs[DsUtils.PropDN]; flags = (Int32)oidInDs[DsUtils.PropFlags]; FriendlyName = (String)oidInDs[DsUtils.PropDisplayName]; switch (flags) { case 1: if (group != OidGroupEnum.AllGroups && group != OidGroupEnum.CertificateTemplate) { throw new Exception("Oid type mismatch."); } OidGroup = OidGroupEnum.CertificateTemplate; break; case 2: if (group != OidGroupEnum.AllGroups && group != OidGroupEnum.IssuancePolicy) { throw new Exception("Oid type mismatch."); } OidGroup = OidGroupEnum.IssuancePolicy; if (oidInDs[DsUtils.PropCpsOid] == null) { break; } try { Object[] cps = (Object[])oidInDs[DsUtils.PropCpsOid]; urls = cps.Cast <String>().ToArray(); } catch { urls = new[] { (String)oidInDs[DsUtils.PropCpsOid] }; } break; case 3: if (group != OidGroupEnum.AllGroups && group != OidGroupEnum.ApplicationPolicy) { throw new Exception("Oid type mismatch."); } OidGroup = OidGroupEnum.ApplicationPolicy; break; } } catch { FriendlyName = String.Empty; Value = String.Empty; OidGroup = OidGroupEnum.AllGroups; DistinguishedName = String.Empty; } if (!found) { initializeLocal(oid, group); } }