11.08.2005 13:34:37Запос принадлежит другому пользователю Ответов: 3
DaGGeR
Добрый день. У меня возникла проблема. В своей программе я с помощью CEnroll2 создаю запрос на сертификат. Далее этот запрос отправляется по почте на УЦ где происходит выдача. Так вот, создание нового пользователя проходит на ура, а вот сертификат по этому же запросу не выдается. Говорит "запрос принадлежит другому пользователю". Может я делаю что-то не так?

//-----------код на c#------------------
string req_string ="";

if(tb_Email.Text=="")
{
MessageBox.Show("Отсутствует адрес электронной почты!");
return;
}
req_string+="1.2.840.113549.1.9.1="+tb_Email.Text+" , ";

if(cb_Strana.SelectedIndex<0)
{
MessageBox.Show("Отсутствует страна!");
return;
}
req_string+="2.5.4.6="+cb_Strana.SelectedItem.ToString()+" , ";

if(tb_Oblast.Text=="")
{
MessageBox.Show("Отсутствует название области!");
return;
}
req_string+="2.5.4.8="+tb_Oblast.Text+" , ";

if(tb_NasPunkt.Text=="")
{
MessageBox.Show("Отсутствует название области!");
return;
}
req_string+="2.5.4.7="+tb_NasPunkt.Text+" , ";

if(tb_MestoRaboti.Text=="")
{
MessageBox.Show("Отсутствует название организации!");
return;
}
req_string+="2.5.4.10="+tb_MestoRaboti.Text+" , ";

if(tb_Podrazdelenie.Text=="")
{
MessageBox.Show("Отсутствует название подразделения!");
return;
}
req_string+="2.5.4.11="+tb_Podrazdelenie.Text+" , ";

if((tb_Familiya.Text=="")||(tb_Imya.Text=="")&&(tb_Otchestvo.Text==""))
{
MessageBox.Show("Заполните поля Фамилия Имя отчество.");
return;
}

if(checkBox16.Checked)
{
if(tb_Psevdonim.Text=="")
{
MessageBox.Show("А где псевдоним?");
return;
}

req_string+="2.5.29.17="+tb_Psevdonim.Text+" , ";
}

req_string+="2.5.4.3="+tb_Familiya.Text+" "+tb_Imya.Text+" "+tb_Otchestvo.Text+" , ";

if(tb_Adres.Text=="")
{
MessageBox.Show("Заполните поле Адрес!");
return;
}

req_string+= "2.5.4.9="+tb_Adres.Text+" , ";

if(tb_Dolzhnost.Text=="")
{
MessageBox.Show("Заполните поле Адрес!");
return;
}

req_string+="2.5.4.12="+tb_Dolzhnost.Text;

string key_usage = "";

if(lb_KeyUsage.SelectedIndex<0)
{
MessageBox.Show("Укажите хотябы одно назначение ключа!");
return;
}

foreach(int i in lb_KeyUsage.SelectedIndices)
{
key_usage+=m_config.GetKeyUsageOID(i)+", ";
}
key_usage = key_usage.Substring(0,key_usage.Length-2);

string cfgname = Application.ExecutablePath;
cfgname = cfgname.Substring(0, cfgname.LastIndexOf("\\", cfgname.Length-1,cfgname.Length-1));
cfgname+="\\reqest.p10";

CEnroll2 Enroll = new CEnroll2();

Enroll.ProviderType = m_config.GetCSPId(m_config.GetCurrentCSP());
Enroll.ProviderName = m_config.GetCSPName(m_config.GetCurrentCSP());
Enroll.KeySpec = 2;
Enroll.UseExistingKeySet = 0;
Enroll.createFilePKCS10(req_string,key_usage,cfgname);
 
Ответы:
11.08.2005 15:33:14Василий
В КриптоПро УЦ порядок следования полей имени субъекта фиксированный.
См. http://www.cryptopro.ru/CryptoPro/forum/myforum.asp?q=1354
11.08.2005 15:53:26DaGGeR
Спасибо, разобрался. Еще вопрос, крипто-про поддерживает поле pseudonim?

OID value: 2.5.4.65

pseudonym ATTRIBUTE ::= {
SUBTYPE OF name
WITH SYNTAX DirectoryString
ID {id-at-pseudonym}
}
12.08.2005 11:44:41Василий
Нет, поддерживаются только те, что описаны по приведённой мной ссылке (и в документации на УЦ)