Опубликован: 03.09.2003 | Доступ: свободный | Студентов: 11219 / 3991 | Оценка: 4.21 / 3.93 | Длительность: 20:03:00
ISBN: 978-5-9556-0053-6
Лекция 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 ] , например, кто и когда отводит память под объекты и под дескрипторы, и каким образом эту память можно освобождать. Мы, однако, не будем на этом останавливаться.

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

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

Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?