Re: Работа с функциями библиотеки rtPKCS11ECP

CryptoCore.createPkcs10(devices[0], keyId, subj, extensions, true)

И 1.2.643.100.111 добавится с нужным значением.

(2016-04-19 15:14:09 отредактировано dedov)

Re: Работа с функциями библиотеки rtPKCS11ECP

Некоторые поля в запросе, например:

OBJECT_IDENTIFIER : 'CN (2.5.4.3)'
   BMPString :
      Тест

имеют тип BMPString, а должны иметь UTF8String.
Как быть?

и еще вопрос
при создании запроса, ни в какую не хочет воспринимать поле 1.2.840.113549.1.9.2 (UnstructuredName)
пишет что "2:Bad parameters"

???

и возвращаюсь к возможности кодирования значений расширений
например нужно добавить такое расширение:
OBJECT_IDENTIFIER : 'Имя шаблона сертификата (1.3.6.1.4.1.311.20.2)'
  OCTET_STRING :
    UTF8String :
       Название шаблона

а добавляется вот так:
OBJECT_IDENTIFIER : 'Имя шаблона сертификата (1.3.6.1.4.1.311.20.2)'
   OCTET_STRING :
      D09DD0B0D0B7D0B2D0B0D0BDD0B8D0B520D188D0B0D0B1D0BBD0BED0BDD0B0

что посоветуете?


и еще просьба, скиньте на почту свежие  обертки для C# 64 и 32.

очень прошу ТП ответить!
спасибо

Re: Работа с функциями библиотеки rtPKCS11ECP

Да, это не совсем правильно. Завтра  утром пришлем вам новые версии

Re: Работа с функциями библиотеки rtPKCS11ECP

BigZ пишет:

Да, это не совсем правильно. Завтра  утром пришлем вам новые версии

День добрый!
Сегодня пришлете?

(2016-04-21 17:18:32 отредактировано dedov)

Re: Работа с функциями библиотеки rtPKCS11ECP

Вечер добрый

новая сборка помогла с типом полей BMPString -> UTF8String.
спасибо


но остался вопрос по поводу поля UnstructuredName (1.2.840.113549.1.9.2).
при его добавлении к сабжу ошибка "2:Bad parameters"
если быть точнее, то
subj.Add(new StringMap() { { "rdn", "1.2.840.113549.1.9.2" }, { "value", "KPP=123401001" } });
не дает формировать запрос.



и остался вопрос, как кодировать значения расширений!!!!
например нужно добавить такое расширение:
OBJECT_IDENTIFIER : 'Имя шаблона сертификата (1.3.6.1.4.1.311.20.2)'
  OCTET_STRING :
    UTF8String :

       Название шаблона
а добавляется вот так:
OBJECT_IDENTIFIER : 'Имя шаблона сертификата (1.3.6.1.4.1.311.20.2)'
   OCTET_STRING :
      D09DD0B0D0B7D0B2D0B0D0BDD0B8D0B520D188D0B0D0B1D0BBD0BED0BDD0B0

опять же повторюсь, при работе с етокенами, есть возможность делать так
{"1.3.6.1.4.1.311.20.2", "ASN1:UTF8String:SHABLON"} и получается:
SEQUENCE :
      OBJECT_IDENTIFIER : 'Имя шаблона сертификата (1.3.6.1.4.1.311.20.2)'
            OCTET_STRING :
                  UTF8String : 'SHABLON'

как это сделать в вашей обертке?
очень нужны ваши ответы!


добавлю еще один вопрос-проблему!
логинюсь на токен и пытаюсь записать сертификат
string x509base64 = System.Convert.ToBase64String(userCertificate, System.Base64FormattingOptions.None);
uint CKA_CERTIFICATE_CATEGORY = 1;
Crypto.importCertificate(dv, x509base64, CKA_CERTIFICATE_CATEGORY);

пишет ошибку: 1103:error:0906D06C:PEM routines:func(109):reason(108)

эту проблему решил сам, оказывается нужно было так подсовывать сертификат:
string x509base64 = System.Convert.ToBase64String(userCertificate, System.Base64FormattingOptions.InsertLineBreaks);
x509base64 = "-----BEGIN CERTIFICATE-----"+ Environment.NewLine + x509base64 + Environment.NewLine + "-----END CERTIFICATE-----";

очень нужно решение проблемы с UnstructuredName!!!!

плиз хелп!

Re: Работа с функциями библиотеки rtPKCS11ECP

Для UTF8.

public class HexadecimalEncoding
{
        public static string ConvertStringToHex(String input, System.Text.Encoding encoding)
        {
            Byte[] stringBytes = encoding.GetBytes(input);
            StringBuilder sbBytes = new StringBuilder(stringBytes.Length * 2);
            foreach (byte b in stringBytes)
            {
                sbBytes.AppendFormat("{0:X2}", b);
            }
            return sbBytes.ToString();
        }

         public static string ConvertHexToString(String hexInput, System.Text.Encoding encoding)
         {
            int numberChars = hexInput.Length;
            byte[] bytes = new byte[numberChars / 2];
            for (int i = 0; i < numberChars; i += 2)
            {
                bytes[i / 2] = Convert.ToByte(hexInput.Substring(i, 2), 16);
            }
            return encoding.GetString(bytes);
        }  
}

string ASN1EncodeToOCTETUTF8(string data)
{
            int utfsize = Encoding.UTF8.GetBytes(data).Length;

            string one = Convert.ToInt32(utfsize + 2).ToString("x");
            if (one.Length == 1)
                one = "0" + one;

            string two = Convert.ToInt32(Encoding.UTF8.GetBytes(data).Length).ToString("x");
            if (two.Length == 1)
                two = "0" + two;

            string str = /*"04" + one +*/
                "0c" + two + HexadecimalEncoding.ConvertStringToHex(data, Encoding.UTF8);

            string Hexadec = HexadecimalEncoding.ConvertHexToString(str, Encoding.UTF8);
           
            return HexadecimalEncoding.ConvertHexToString(str, Encoding.UTF8);
}

Ну и результат ASN1EncodeToOCTETUTF8 надо передавать в расширение.

Re: Работа с функциями библиотеки rtPKCS11ECP

большое спасибо с UTF8!!!

осталось решить проблему с UnstructuredName
почему его наличие в сабдже для запроса, выдает ошибку?

subj.Add(new StringMap() { { "rdn", "1.2.840.113549.1.9.2" }, { "value", "KPP=123401001" } });
ошибка "2:Bad parameters"

без него все отлично! но UnstructuredName нужен в сертификате!

спасибо

Re: Работа с функциями библиотеки rtPKCS11ECP

Не умеет библиотека пока произвольные поля в DN добавлять.

Думаю, она научится этому в ближайшие дни.

Re: Работа с функциями библиотеки rtPKCS11ECP

Выслали Вам версию с unstructuredName

Re: Работа с функциями библиотеки rtPKCS11ECP

BigZ пишет:

Выслали Вам версию с unstructuredName

все получилось!
огромное спасибо за помощь!

(2016-04-27 13:56:37 отредактировано dedov)

Re: Работа с функциями библиотеки rtPKCS11ECP

День добрый!

делаю так:
Crypto.setKeyLabel(dv, keyId, "Какой-то текст");

а в панели управления так:
https://forum.rutoken.ru/uploads/transfer/0/9500/9576/thumb/p1aguv237bq88355122pd4j1s6t1.png

просто label пишет

а помощь все еще нужна!

спасибо.

Re: Работа с функциями библиотеки rtPKCS11ECP

Последний вопрос все еще открыт.

помогите плиз! или я что-то не то спрашиваю?

Re: Работа с функциями библиотеки rtPKCS11ECP

прошу прощения вопрос затерялся в дебрях... скоро ответим :)

Re: Работа с функциями библиотеки rtPKCS11ECP

Добрый день!

setKeyLabel(); устанавливает значение поля CKA_LABEL для ключа (CKO_PRIVATE_KEY, например).
Панель управления Рутокен в свою очередь отображает значение поля CKA_LABEL сертификата (CKO_CERTIFICATE). Штатной возможности изменить CKA_LABEL сертификата нет.

(2016-05-13 10:14:46 отредактировано dedov)

Re: Работа с функциями библиотеки rtPKCS11ECP

День добрый.
Пользуюсь вашей оберткой для C# для работы с рутокен эцп для егаис.
Появилась новая проблема.
ПО УТМ для егаис не хочет работать с ключами из ГОСТ части рутокен эцп, по причине некорректного CKA_ID.
Что за проблема не известно! Да и влиять на идентификтор ключевой пары нет возможности. В обертке не реализована эта возможность.

Срочно нужна помощь.