private Object CreateKeyUseSection(Boolean isServer)
{
// Extended key usage (more info at MSDN)
//CObjectId lUsageExtension = new CObjectId();
Type lCObjectIdType = Type.GetTypeFromProgID("X509Enrollment.CObjectId");
Object lUsageExtension = Activator.CreateInstance(lCObjectIdType);
//lUsageExtension.InitializeFromValue(isServer ? "1.3.6.1.5.5.7.3.1" : "1.3.6.1.5.5.7.3.2");
lCObjectIdType.InvokeMember("InitializeFromValue", BindingFlags.InvokeMethod, null, lUsageExtension,
new object[] { this.GetCertificatePurpose(isServer) });
//CObjectIds lOidList = new CObjectIds();
Type lCObjectIdsType = Type.GetTypeFromProgID("X509Enrollment.CObjectIds");
Object lOidList = Activator.CreateInstance(lCObjectIdsType);
//lOidList.Add(lUsageExtension);
lCObjectIdsType.InvokeMember("Add", BindingFlags.InvokeMethod, null, lOidList, new Object[] { lUsageExtension });
//CX509ExtensionEnhancedKeyUsage lKeyUsage = new CX509ExtensionEnhancedKeyUsage();
Type lExtensionEnhancedKeyUsageType = Type.GetTypeFromProgID("X509Enrollment.CX509ExtensionEnhancedKeyUsage");
Object lKeyUsage = Activator.CreateInstance(lExtensionEnhancedKeyUsageType);
//lKeyUsage.InitializeEncode(lOidList);
lExtensionEnhancedKeyUsageType.InvokeMember("InitializeEncode", BindingFlags.InvokeMethod, null, lKeyUsage, new Object[] { lOidList });
return lKeyUsage;
}