Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавл. расш-я CRLdist..points в сертификат X509, Ошибка при добавлении 
:(
    Опции темы
ifomin
Дата 27.3.2014, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 27.3.2014

Репутация: нет
Всего: нет



Добрый день. 
Решаю задачу по созданию сертификата X509, возникает одна ошибка: когда я добавляю рсширение CRLDistributionPoints, то добавление выполняется некорректно. Использую openssl.

Ниже привожу фрагменты кода.

Код

DIST_POINT *dp;
STACK_OF(DIST_POINT) *dps;
GENERAL_NAME *gn;
X509 *x;
char val[256]; /*строка с данными */
int j;
...................................


dps = sk_DIST_POINT_new_null();
if(!dps)
{
    /*ошибка выделения памяти*/
        goto end;
}
dp = DIST_POINT_new();
if(!dp)
{
    /*ошибка выделения памяти*/
        goto end;
}
dp->distpoint = DIST_POINT_NAME_new();
dp->distpoint->name.fullname = sk_GENERAL_NAME_new_null();
if(!dp->distpoint->name.fullname)
{
    /*ошибка выделения памяти*/
        goto end;
}
gn = GENERAL_NAME_new();
if(!gn)
{
        /*ошибка выделения памяти*/
        goto end;
}
dp->distpoint->type = GEN_URI;

...

for(j = 0; j<max;j++)
{
    printf("%s\n",val);
            
    gn->type = GEN_URI; 
    if(!(gn->d.ia5 = M_ASN1_IA5STRING_new()))
    {
        printf("GeneralName IA5 malloc ERROR!\n");
        rc = -4;
        goto end;
    }
    if(!ASN1_STRING_set(gn->d.ia5, (unsigned char*)val,strlen(val)))
    {
        printf("STRING setting ERROR!\n");
        rc = -3;
        goto end;
    }
    sk_GENERAL_NAME_insert(dp->distpoint->name.fullname,gn,j);
}    

sk_DIST_POINT_insert(dps,dp,0);
printf("dpoints: %d\n",sk_DIST_POINT_num(dps)); /*контрольная печать! Показывает что DIST_POINT добавлен в структуру!!! */

if(!X509_add1_ext_i2d(x, NID_crl_distribution_points, dps, 0,X509V3_ADD_APPEND)) 
{
    printf("Ошибка добавления расширения CRL-dp!\n");
    rc = -15;
    goto end;
}
.....


Программа работает, функции завершаются нормально, но при разборе сертификата с помощью ASN1 парзера мне выдают пустой секвенс на месте CRLdp:


Код

585   11:         SEQUENCE {
 587    3:           OBJECT IDENTIFIER cRLDistributionPoints (2 5 29 31)
 592    4:           OCTET STRING, encapsulates {
 594    2:             SEQUENCE {
 596    0:               SEQUENCE {}
         :               }
         :             }
         :           }




Подскажите, где может быть ошибка? Сталкивался ли кто с чем-либо подобным?

ЗЫ: Остальные расширения пакуются нормально.


Это сообщение отредактировал(а) ifomin - 27.3.2014, 10:24
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0582 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.