Опубликован: 03.09.2003 | Уровень: специалист | Доступ: платный
Лекция 11:

Спецификация Internet-сообщества "Обобщенный прикладной программный интерфейс службы безопасности"

Представление некоторых объектов интерфейса безопасности в среде языка C

Представление средствами языка C объектов, фигурирующих в обобщенном интерфейсе безопасности GSS-API, по большей части довольно очевидно (или не может быть стандартизовано, так как зависит от специфики механизма безопасности ).

Прежде всего, вводится тип OM_uint32, соответствующий 32-битным беззнаковым целым значениям. Большинство структурных значений представляется с помощью указателя на дескриптор (см. листинг 11.1).

typedef struct gss_buffer_desc_struct {
   size_t length;
   void *value;
} gss_buffer_desc, *gss_buffer_t;
Листинг 11.1. Описание дескриптора буфера и указателя на него.

Тип gss_buffer_t используется при задании составных аргументов - имен, дескрипторов, токенов, сообщений и т.п.

Идентификаторы объектов представляются следующим образом (см. листинг 11.2).

typedef struct gss_OID_desc_struct {
   OM_uint32 length;
   void *elements;
} gss_OID_desc, *gss_OID;
Листинг 11.2. Описание дескриптора идентификаторов объектов и указателя на него.

Указатели elements ссылаются на начало представления идентификаторов, т. е. на последовательности байт, устроенных в соответствии с базовыми правилами ASN.1.

Наборы объектных идентификаторов представляются так, как показано на листинге 11.3.

typedef struct gss_OID_set_desc_struct {
   int    count;
   gss_OID elements;
} gss_OID_set_desc, *gss_OID_set;
Листинг 11.3. Описание дескриптора набора объектных идентификаторов и указателя на него.

Вводятся и некоторые другие типы, уточняющие представление структурированных значений.

На листинге 11.4 показано, как выглядит на языке C описание функции GSS_Init_sec_context.

OM_uint32 GSS_Init_sec_context (
   OM_uint32 *minor_status,
   const gss_cred_id_t initiator_cred_handle,
   gss_ctx_id_t	*context_handle,
   const gss_name_t	target_name,
   const gss_OID mech_type,
   OM_uint32 req_flags,
   OM_uint32 time_req,
   const gss_channel_bindings_t 
       input_chan_bindings,
   const gss_buffer_t input_token
   gss_OID *actual_mech_type,
   gss_buffer_t output_token,
   OM_uint32 *ret_flags,
   OM_uint32 *time_rec
);
Листинг 11.4. Описание функции GSS_Init_sec_context.

Отметим, что параметр context_handle является здесь одновременно входным и выходным, а основной код завершения возвращается как результат функции.

Разумеется, есть еще много аспектов, оговоренных в спецификациях [ 85 ] , например, кто и когда отводит память под объекты и под дескрипторы, и каким образом эту память можно освобождать. Мы, однако, не будем на этом останавливаться.

Евгений Виноградов
Евгений Виноградов

Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа?

Илья Сидоркин
Илья Сидоркин

Добрый день! Подскажите пожалуйста как и когда получить диплом, после сдичи и оплаты?????

Роман Ижванов
Роман Ижванов
Россия, Университет природы, общества и человека «Дубна»
Анастасия Шмакова
Анастасия Шмакова
Россия, Тольятти, ПВГУС, 2013