За конкретную помощь в вопросе - обещаю денежное вознаграждение. 
На фрилансе не нашел, где задать этот вопрос.
Помогите. Вопрос срочен.
Объясню более подробнее.
Основной язык C#. Пишу запрос на квалифицированный сертификат.
Использую следующую dll(библиотеку-сборку)  - 
  Assembly Interop.CERTENROLLLib.dll, v1.0.0.0
Делаю запрос формата PKCS#10
  CX509CertificateRequestPkcs10 objPkcs10 = new CX509CertificateRequestPkcs10();
            CX509PrivateKey objPrivateKey = new CX509PrivateKey();
            CCspInformation objCSP = new CCspInformation();
            CCspInformations objCSPs = new CCspInformations();
            CX500DistinguishedName objDN = new CX500DistinguishedName();
            CX509Enrollment objEnroll = new CX509Enrollment();
            CObjectIds objObjectIds = new CObjectIds();
            CObjectId objObjectId1 = new CObjectId();
            CObjectId objObjectId2 = new CObjectId();
            CX509ExtensionKeyUsage objExtensionKeyUsage = new CX509ExtensionKeyUsage();
            CX509ExtensionEnhancedKeyUsage objX509ExtensionEnhancedKeyUsage = new CX509ExtensionEnhancedKeyUsage();
            string strRequest;
            Thread t = new Thread(new ParameterizedThreadStart(FindWindowAndInsertPass));
            ThreadParams tp = new ThreadParams();
            tp.password = password;
            tp.isRequest = true;
            t.Start(tp);
            try
            {
                objPrivateKey.ContainerName = containerName;
                objPrivateKey.ProviderName = Win32.VPN_DEF_PROV;
                objPrivateKey.KeySpec = X509KeySpec.XCN_AT_KEYEXCHANGE;
                objPrivateKey.KeyUsage = X509PrivateKeyUsageFlags.XCN_NCRYPT_ALLOW_ALL_USAGES;
                objPrivateKey.Pin = password;
                objPrivateKey.Silent = false;
                objPrivateKey.Open();
                objPkcs10.InitializeFromPrivateKey(X509CertificateEnrollmentContext.ContextUser, objPrivateKey, "");               
                objExtensionKeyUsage.InitializeEncode(
                    CERTENROLLLib.X509KeyUsageFlags.XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE |
                    CERTENROLLLib.X509KeyUsageFlags.XCN_CERT_NON_REPUDIATION_KEY_USAGE |
                    CERTENROLLLib.X509KeyUsageFlags.XCN_CERT_KEY_ENCIPHERMENT_KEY_USAGE |
                    CERTENROLLLib.X509KeyUsageFlags.XCN_CERT_DATA_ENCIPHERMENT_KEY_USAGE
                );
                objPkcs10.X509Extensions.Add((CX509Extension)objExtensionKeyUsage);
                #region CERTIFICATE POLICY
                var clientAuthenticationOid1 = new CObjectId();
                clientAuthenticationOid1.InitializeFromValue("1.2.643.100.113.1");
                var clientAuthenticationOid2 = new CObjectId();
                clientAuthenticationOid2.InitializeFromValue("1.2.643.100.113.2");               
                var policy = new CCertificatePolicy();
                policy.Initialize(clientAuthenticationOid1);
                var policy2 = new CCertificatePolicy();
                policy2.Initialize(clientAuthenticationOid2);             
                var policies = new CCertificatePolicies();
                policies.Add(policy);
                policies.Add(policy2);
                var ecp = new CX509ExtensionCertificatePolicies();
                ecp.InitializeEncode(policies);
                objPkcs10.X509Extensions.Add((CX509Extension)ecp);
                #endregion    
                //====== вот здесь должно быть ====    КАК ЕГО ДОБАВИТЬ             
                // некритичное дополнение issuerSignTool типа IssuerSignToo (Объектный идентификатор типа IssuerSignTool имеет вид 1.2.643.100.112)
                // некритичное дополнение subjectSignTool (объектный идентификатор которого имеет вид 1.2.643.100.111.)
                objObjectId1.InitializeFromValue("1.3.6.1.5.5.7.3.2");
                objObjectIds.Add(objObjectId1);
                objObjectId2.InitializeFromValue("1.3.6.1.5.5.7.3.4");
                objObjectIds.Add(objObjectId2);
                objX509ExtensionEnhancedKeyUsage.InitializeEncode(objObjectIds);
                objPkcs10.X509Extensions.Add((CX509Extension)objX509ExtensionEnhancedKeyUsage);               
                objDN.Encode(File.ReadAllText(reqPath, Encoding.Default), X500NameFlags.XCN_CERT_X500_NAME_STR);
                objPkcs10.Subject = objDN;
                objEnroll.InitializeFromRequest(objPkcs10);
                //strRequest = objEnroll.CreateRequest(EncodingType.XCN_CRYPT_STRING_BASE64REQUESTHEADER);
                strRequest = objEnroll.CreateRequest(EncodingType.XCN_CRYPT_STRING_BASE64REQUESTHEADER);
                File.WriteAllText(reqPath.Replace(".txt", ".p10"), strRequest);
вот это место в коде надо исправить.
//====== вот здесь должно быть ==== КАК ЕГО ДОБАВИТЬ 
// некритичное дополнение issuerSignTool типа IssuerSignToo (Объектный идентификатор типа IssuerSignTool имеет вид 1.2.643.100.112)
// некритичное дополнение subjectSignTool (объектный идентификатор которого имеет вид 1.2.643.100.111.)
ОПЛАТУ ГАРАНТИРУЮ!
Отредактировано пользователем 30 апреля 2013 г. 12:09:39(UTC)
 | Причина: дополнение