Solaris 开发者安全性指南

GSS-API 中的字符串和类似数据

由于 GSS-API 处理的是内部格式的数据,因此在将字符串传递到 GSS-API 函数之前必须将其转换为 GSS-API 格式。 GSS-API 可处理具有 gss_buffer_desc 结构的字符串:

typedef struct gss_buffer_desc_struct {

     size_t     length;

     void       *value;

}  gss_buffer_desc *gss_buffer_t;

gss_buffer_t 是指向此类结构的指针。 在将字符串传递到使用它们的函数之前,必须先将其放到 gss_buffer_desc 结构中。 在以下示例中,通用的 GSS-API 函数在发送消息之前会先向此消息应用保护机制。


示例 4–1 在 GSS-API 中使用字符串

char *message_string;

gss_buffer_desc input_msg_buffer;



input_msg_buffer.value = message_string;

input_msg_buffer.length = strlen(input_msg_buffer.value) + 1;



gss_generic_function(arg1, &input_msg_buffer, arg2...);



gss_release_buffer(input_msg_buffer);

请注意,完成对 input_msg_buffer 的操作之后,必须通过 gss_release_buffer() 解除对 input_msg_buffer 的分配。

gss_buffer_desc 对象不只是用于字符串。 例如,令牌可以作为 gss_buffer_desc 对象进行处理。有关更多信息,请参见GSS-API 令牌