Solaris 开发者安全性指南

GSS-API OID

对象标识符 (Object identifier, OID) 用于存储以下几种数据:

OID 存储在 GSS-API gss_OID_desc 结构中。 GSS-API 提供了指向 gss_OID 结构的指针,如以下示例中所示。


示例 4–3 OID 结构

typedef struct gss_OID_desc_struct {

        OM_uint32   length;

        void        *elements;

     } gss_OID_desc, *gss_OID;

并且,gss_OID_set_desc 结构中可能会包含一个或多个 OID。


示例 4–4 OID 集的结构

typedef struct gss_OID_set_desc_struct {

        size_t    count;

        gss_OID   elements;

     } gss_OID_set_desc, *gss_OID_set;


注意 – 注意 –

应用程序不应尝试使用 free() 解除分配 OID。


GSS-API 中的机制和 QOP

尽管 GSS-API 允许应用程序选择基础安全机制,但是应用程序还是应当尽可能使用 GSS-API 已选择的缺省机制。 同样,尽管 GSS-API 允许应用程序指定用于保护数据的保护质量级别,但还是应当尽可能使用缺省 QOP。 可以通过向需要使用机制或 QOP 作为参数的函数传递值 GSS_C_NULL_OID 来表示接受缺省机制。


注意 – 注意 –

明确指定安全机制或 QOP 会背离使用 GSS-API 的初衷。 类似的特定选择会限制应用程序的可移植性。 其他 GSS-API 实现可能无法以预期方式支持 QOP 或机制。 尽管如此,附录 C,指定 OID 中还是简要讨论了如何确定可以使用的机制和 QOP 以及如何进行选择。


GSS-API 中的名称类型

除了 QOP 和安全机制以外,OID 还用于指示名称类型,从而指明关联名称的格式。 例如,gss_import_name() 函数(用于将主体的名称从字符串转换为 gss_name_t 类型)将需要转换的字符串的格式用作一个参数。 例如,如果名称类型为 GSS_C_NT_HOSTBASED_SERVICE,则该函数便会知道所输入的名称是采用 service@host 形式。 如果名称类型为 GSS_C_NT_EXPORT_NAME,则该函数需要使用 GSS-API 导出的名称。 应用程序可以使用 gss_inquire_names_for_mech() 函数来确定指定机制可用的名称类型。 名称类型中提供了 GSS-API 所使用的名称类型的列表。