GNU通用安全服务库

目录

下一步:,向上:(目录)  [目录][索引]

GNU通用安全服务库

本手册最新更新版本为2022年8月6日GNU GSS的1.0.4。

版权所有©2003–2022 Simon Josefsson。

授予复制、分发和/或修改本文件的权限根据GNU免费文档许可证1.3版的条款或自由软件基金会发布的任何更新版本;没有不变的节,没有前覆盖文本,也没有后覆盖文本。A类许可证副本包含在标题为“GNU Free”的部分中文档许可”。


下一步:,上一个:,向上:顶部  [目录][索引]

1引言

GSS是通用安全服务应用程序的实现程序接口(GSS-API)。GSS-API被网络服务器用于提供安全服务,例如验证SMTP/IMAP客户端针对SMTP/IMAP服务器。GSS由一个库和一本手册组成。

GSS是为GNU/Linux系统开发的,但可以在许多平台上工作包括大多数主要的Unix和Windows系统。


下一步:,向上:介绍  [目录][索引]

1.1入门

本手册记录了GSS编程接口。所有功能并解释了该库提供的数据类型。

假设读者基本熟悉GSS-API和用C或C++进行网络编程。有关GSS-API的一般信息,以及一些编程示例,在线上有一个指南http://docs.sun.com/db/doc/816-1331.

本手册有多种使用方式。如果从头开始阅读最后,它很好地介绍了图书馆以及如何可以在应用程序中使用。其中包括远期参考必要的。稍后,该手册可作为参考手册,用于只需获取有关库。经验丰富的程序员可能想开始关注手册末尾的示例,然后只阅读这些部分接口不清楚。


下一步:,上一个:,向上:介绍  [目录][索引]

1.2特点

与其他库相比,GSS在执行类似的工作。

这是自由软件

任何人都可以根据LGPLv3|GPLv2+许可证。

它是螺纹安全的

没有使用全局变量,并且有多个库句柄和会话手柄可以并联使用。

它是国际化的

它处理在库(例如,错误消息)可以转换为用户的语言。

它是便携式的

它应该适用于所有类似Unix的操作系统,包括Windows。


下一步:,上一个:,向上:介绍  [目录][索引]

1.3 GSS-API概述

本节从协议的角度介绍GSS-API。

通用安全服务应用程序编程接口为调用应用程序提供安全服务。它允许通信应用程序以验证与关联的用户将权限委托给另一个应用程序,以及以每条消息为基础。

使用GSS-API有四个阶段:

  1. 应用程序获取一组凭据,可以用它来证明它对其他进程的标识。应用程序的凭据其全球身份,可能与任何本地它可能在其下运行的用户名。
  2. 一对通信应用程序建立了联合安全性上下文使用他们的凭据。安全上下文是一对包含共享状态信息的GSS-API数据结构是必需的,以便通过消息提供安全服务提供了。应用程序之间可能共享的状态示例作为安全上下文的一部分,加密密钥和消息序列号。作为建立安全上下文的一部分,向响应方验证上下文启动器,并且可以要求响应者依次进行身份验证。发起者可以选择给予响应者进一步启动的权利安全上下文,充当发起方的代理或委托。这种权利转让称为授权,通过以下方式实现创建一组凭据,类似于发起人使用的凭据应用程序,但可能由响应者使用。

    建立和维护构成安全上下文,某些GSS-API调用将返回令牌数据结构,这是一种不透明的数据类型,可能包含加密保护的数据。此类GSS-API的调用方例程负责将令牌传输到对等方应用程序,必要时封装在应用程序中-应用程序协议。收到此类令牌后,对等应用程序应将其传递给相应的GSS-API例程,该例程将对令牌进行解码并提取信息,更新安全上下文状态相应的信息。

  3. Per-message服务被调用以应用:完整性和数据来源认证,或机密性、完整性和数据来源对应用程序数据的身份验证,GSS-API将其视为任意八进制字符串。传输消息的应用程序它希望保护将调用相应的GSS-API例程(gss_get_mic或gss_wrap)应用保护,指定适当的安全上下文,并将生成的令牌发送到接收应用程序。接收方将传递接收到的令牌(如果数据受gss_get_mic保护,则附带消息数据)发送到相应的解码例程(gss_verify_mic或gss_unwrap)删除保护并验证数据。
  4. 通信会话结束时(可能会扩展到几个传输连接),每个应用程序调用一个GSS-API例程删除安全上下文。多个上下文也可能是在单个通信协会,由应用程序选择。

下一步:,上一个:,向上:介绍  [目录][索引]

1.4支持的平台

GSS在某个时间点已经在以下平台上进行了测试。

  1. Debian GNU/Linux 3.0(Woody)

    GCC 2.95.4和GNU品牌。这是主要的开发平台。alphaev67未知linux-gnu,alphaev6未知linux gnu,arm未知linux gnu,hppa-未知-linux-gnu,hppa64未知linux-gnu,i686-pc-linux-gnu,ia64未知linux-gnu,m68k-未知-linux-gnu,mips未知linux-gnu,mipsel-unknown-linux-gnu公司,powerpc未知linux-gnu,s390-ibm-linux-gnu,sparc-未知-linux-gnu.

  2. Debian GNU/Linux 2.1

    GCC 2.95.1和GNU品牌。armv4l-未知-linux-gnu.

  3. Tru64 UNIX

    Tru64 UNIX C编译器和Tru64 Make。alphaev67-dec-osf5.1,alphaev68-dec-osf5.1.

  4. SuSE Linux 7.1

    GCC 2.96和GNU品牌。alphaev6-未知-linux-gnu,alphaev67未知linux-gnu.

  5. SuSE Linux 7.2a版

    GCC 3.0和GNU品牌。ia64未知linux-gnu.

  6. RedHat Linux 7.2

    GCC 2.96和GNU品牌。alphaev6-未知-linux-gnu,alphaev67未知linux gnu,ia64未知linux-gnu.

  7. RedHat Linux 8.0

    GCC 3.2和GNU品牌。i686-pc-linux-gnu.

  8. RedHat高级服务器2.1

    GCC 2.96和GNU品牌。i686-pc-linux-gnu.

  9. Linux 8.0.01 Slackware

    通用条款2.95.3和GNU Make。i686个人电脑linux gnu.

  10. Mandrake Linux 9.0版

    GCC 3.2和GNU品牌。i686-pc-linux-gnu.

  11. IRIX 6.5版

    MIPS C编译器,IRIX Make。mips-sgi-irix6.5.

  12. AIX 4.3.2

    IBM C for AIX编译器,AIX Make。rs6000-ibm-aix4.3.2.0.

  13. Microsoft Windows 2000(Cygwin)

    GCC 3.2,GNU制造。i686-pc-cygwin.

  14. HP-UX 11

    HP-UX C编译器和HP Make。ia64-hp-hpux11.22,hppa2.0w-hp-hpux11.11型.

  15. SUN Solaris 2.8

    Sun WorkShop编译器C 6.0和Sun Make。sparc-sun-solaris2.8.

  16. NetBSD 1.6版

    GCC 2.95.3和GNU品牌。alpha-unknown-netbsd1.6,i386-unknown-netbsdelf1.6.

  17. OpenBSD 3.1和3.2

    GCC 2.95.3和GNU品牌。alpha-未知-打开bsd3.1,i386-未知-打开bsd3.1.

  18. FreeBSD 4.7版

    GCC 2.95.4和GNU品牌。α-未知-无bsd4.7,i386-未知自由bsd4.7.

  19. 在摩托罗拉Coldfire上交叉编译到uClinux/uClibc。

    GCC 3.4和GNU品牌m68k-uclinux小精灵.

如果您在新平台上使用GSS或将GSS端口连接到新平台,请将其报告给作者。


下一步:,上一个:,向上:介绍  [目录][索引]

1.5商业支持

GNU GSS用户可获得商业支持。那种可以购买的支持可能包括:

如果您感兴趣,请写信给:

Simon Josefsson Datakonsult AB公司哈加加坦24113 47斯德哥尔摩瑞典电子邮件:simon@josefsson.org

如果贵公司提供与GNU GSS相关的支持,并希望在此处提到,请联系作者(参见错误报告).


下一步:,上一个:,向上:介绍  [目录][索引]

1.6下载和安装

该软件包可以从多个地方下载,包括:

ftp://ftp.gnu.org/gnu/gss/

最新版本存储在文件中,例如。,gss-1.0.4.tar.gz标准'其中'第1.0.4条指示最高版本号。

然后像其他许多软件一样提取、配置和构建包使用Autoconf的包。有关配置的详细信息以及建造它,请参阅安装属于分发存档。

以下是下载、配置和构建的终端会话示例并安装包。您需要一些基本工具,例如第页’, ‘制作'和'复写的副本’.

$wget-q美元ftp://ftp.gnu.org/gnu/gss/gss-1.0.4.tar.gz$焦油xfz gss-1.0.4.tar.gz$cd gss-1.0.4美元/$ ./配置...$制造...$make安装...

之后,应正确安装GSS并准备使用。


下一步:,上一个:,向上:介绍  [目录][索引]

1.7错误报告

如果您认为您在GSS中发现了一个错误,请进行调查并报告它。

请尽力制作一份独立的报告可以测试或调试的明确的东西。模糊查询或零碎的信息很难付诸行动,也无助于开发工作。

如果您的错误报告良好,我们将尽力帮助您获得软件的修正版本;如果错误报告不好,我们不会对此做任何事情(除了要求你发送更好的错误报告)。

如果您认为本手册中的某些内容不清楚或完全正确不正确,或者如果语言需要改进,请同时发送注意。

将错误报告发送至:

bug-gss@gnu.org程序

下一步:,上一个:,向上:介绍  [目录][索引]

1.8贡献

如果你想提交一个补丁以供包含——从解决输入错误开始发现,直到添加对新功能的支持–您应该将其作为错误报告提交(请参见错误报告). 有一些你可以做些什么来增加它被包括在内的机会在官方包装中。

除非你的补丁很小(比如10行以下),否则我们需要您将您的作品的版权分配给自由软件基金会。这是为了保护项目的自由。如果你没有已经签署了文件,我们将在你提交你的贡献。

对于不包含实际编程代码的贡献唯一的准则是常识。使用它。

对于代码贡献,一些样式指南将帮助您:


上一页:,向上:介绍  [目录][索引]

1.9计划功能

这也称为“待办事项列表”。如果你想开始工作任何事情,请告诉我,这样可以避免重复工作。


下一步:,上一个:,向上:顶部  [目录][索引]

2准备

要使用GSS,您必须对源代码和构建系统。必要的更改很小,并在以下章节。在本章末尾,将描述如何库被初始化,以及如何满足库的要求已验证。

找到如何调整应用程序以与一起使用的更快方法GSS可能会查看本手册末尾的示例。


下一步:,向上:准备  [目录][索引]

2.1标题

官方GSS的所有标准接口(数据类型和功能)API在头文件中定义gss/api。小时。该文件是从RFC中逐字记录(在纠正了一些拼写错误后)称为格萨皮。小时然而,为了能够优雅地共存对于其他GSS-API实现,名称格萨皮。小时改变。

头文件gss。小时包括gss/api。小时,并声明少数非标准扩展(包括gss/分机),需要注意包括与所有支持的机制相关的头文件(例如。,gss/krb5.h)最后添加了的C++命名空间保护所有定义。因此,包括gss(希腊先令)。小时在您的项目中建议超过gss/api。小时.如果使用gss(希腊先令)。小时而不是gss/api。小时导致问题,应该将其视为bug。

您必须在使用库的所有程序中包含任一文件,或者直接或通过其他头文件,如:

#包括<gss.h>

GSS的命名空间为全球供应链_*对于函数名,全球供应链_*对于数据类型和GSS公司_*用于其他符号。此外保留带有一个前缀下划线的相同名称前缀内部使用,应用程序不应使用。

每个受支持的GSS机制都可能希望公开特定于机制的功能,并且可以通过下面的一个或多个头文件执行此操作这个全球供应链/目录。Kerberos 5机制使用文件gss/krb5.h,但同样,它也包含在内(带有C++命名空间修复程序)gss(希腊先令)。小时.


下一步:,上一个:,向上:准备  [目录][索引]

2.2初始化

GSS在使用之前不需要初始化。

为了利用GSS,例如翻译的错误消息,应用程序必须设置当前区域设置使用setlocale()打电话之前,例如。,gss_display_status()。这通常在中完成main()如下例所示。

#包括<gss.h>#包括<locale.h>...setlocale(LC_ALL,“”);

下一步:,上一个:,向上:准备  [目录][索引]

2.3版本检查

通常需要检查所使用的GSS版本是否确实一个适合所有要求的。即使具有二进制兼容性可能引入了一些功能,但由于动态链接器实际使用的是旧版本。所以你可能想检查一下程序启动后版本正常。功能是打电话gss_check_version()版本并在中进行了正式描述请参见扩展GSS API.

使用该函数的常规方法是将类似于在您的早期main():

#包括<gss.h>...if(!gss_check_version(gss_version)){printf(“gss_check_version()失败:\n”“头文件与共享库不兼容。\n”);退出(exit_FAILURE);}

下一步:,上一个:,向上:准备  [目录][索引]

2.4构建源

如果要编译包含gss(希腊先令)。小时收割台文件,必须确保编译器可以在目录层次结构。通过将路径添加到头文件所在的编译器目录包括文件搜索路径(通过-我选项)。

但是,包含文件的路径是在源已配置。为了解决这个问题,GSS使用外部包裹pkg配置知道包含文件路径的和其他配置选项。需要添加到的选项编译时的编译器调用由--cf标记选择pkg-config-gss.以下内容示例显示了如何在命令行中使用它:

gcc-c foo.c`pkg-config gss--cflags`

正在添加“”的输出pkg-config gss—cflags'到编译器命令行将确保编译器可以找到gss(希腊先令)。小时收割台文件。

将程序与库链接时会出现类似的问题。同样,编译器必须找到库文件。要使其发挥作用,库文件的路径必须添加到库搜索中路径(通过-我选项)。为此,选项--利比亚银行pkg配置gss可以使用。对于方便,此选项还输出以下所有其他选项需要将程序链接到GSS库(例如-石狮'选项)。该示例显示了如何链接食品。o(o)将GSS纳入程序foo公司.

gcc-o foo foo.o`pkg-config gss--库`

当然,您也可以通过以下方式将这两个示例组合到一个命令中将这两个选项指定为pkg配置:

gcc-o foo foo.c`pkg-config gss--cflags--libs`

上一页:,向上:准备  [目录][索引]

2.5内存不足处理

GSS API没有内存不足的标准错误代码错误条件。此库将返回GSS_S_故障设置次要_状态至ENOMEM。


下一步:,上一个:,向上:顶部  [目录][索引]

3标准GSS API


下一步:,向上:标准GSS API  [目录][索引]

3.1简单数据类型

GSS-API C语言绑定使用以下约定:

3.1.1整数类型

GSS-API使用以下整数数据类型:

OM_uint32 32位无符号整数

3.1.2字符串和类似数据

许多GSS-API例程接受参数并返回值描述连续的八位字节字符串。所有这些数据都在GSS-API和使用gss缓冲区_t数据类型。此数据类型是一个指向缓冲区描述符的指针,其中包括包含基准中字节总数的长度字段,以及包含指向实际基准的指针的值字段:

typedef结构gss_buffer_desc_struct{size_t长度;void*值;}gss_buffer_desc,*gss_buffer_t;

存储GSS-API例程返回给应用程序的数据使用gss缓冲区_t约定由GSS-API分配例行程序。应用程序可以通过调用gss释放缓冲区例行程序。分配gss _缓冲区_desc对象始终是应用;未使用的gss_buffer_desc可以初始化对象到值GSS_C_空_缓冲.

3.1.2.1不透明数据类型

某些多字数据项被视为不透明数据类型GSS-API,因为其内部结构没有意义GSS-API或调用方。此类不透明数据的示例类型是的inputtoken参数gss_init_sec_上下文(这对调用方来说是不透明的),并将input_message参数gss包裹(这对GSS-API是不透明的)。不透明数据是在GSS-API和应用程序之间传递gss缓冲区_t数据类型。

3.1.2.2字符串

某些多字数据项可视为简单的ISO拉丁语-1字符串。示例是传递给的可打印字符串gss导入名称通过inputnamebuffer参数。一些GSS-API例程还返回字符串。所有这些特征字符串在应用程序和GSS-API之间传递使用实现gss缓冲区_t数据类型,它是指向gss _缓冲区_desc对象。

gss _缓冲区_desc对象描述可打印字符串的长度字段gss _缓冲区_desc应仅计算可打印字符串中的字符。特别是后面的NUL字符不应包含在长度计数中GSS-API实现或应用程序假设存在尾随NUL不计其数。

3.1.3对象标识符

某些GSS-API程序采用以下类型的参数gss_OID,或对象标识符。这是一个包含ISO定义树的类型-结构化值,GSS-API调用者使用它来选择底层安全机制并指定名称空间。值为类型gss_OID具有以下结构:

typedef结构gss_OID_desc_struct{OM_uint32长度;void*元素;}gss_OID_desc,*gss_OID;

此结构的elements字段指向包含的值部分的ASN.1 BER编码的八位字节字符串的正常BER TLV编码gss_OID.长度字段包含此值中的字节数。例如gss_OID值对应于iso(1)识别组织(3)icd-ecma(12)成员公司(2)dec(1011)加密算法(7)DASS(5),表示DASS X.509身份验证机制,具有7的长度字段和指向的元素字段包含以下八进制值的七个八位字节:53,14,2,207,163,7,5. GSS-API实现应提供常量gss_OID值以允许应用程序请求任何支持的机制,尽管基于可移植性鼓励应用程序接受默认机制。gss_OID值也应该是提供以允许应用程序指定特定的名称类型(请参阅第3.10节)。应用程序应处理gss_OID_descGSS-API例程以只读方式返回。特别是应用程序不应尝试使用free()释放它们。

3.1.4对象标识符集

某些GSS-API程序采用以下类型的参数gss_OID_设置。此类型表示一个或多个对象标识符(参见对象标识符). A类gss_OID_设置对象具有以下结构:

typedef结构gss_OID_set_desc_struct{size_t计数;gss_OID元素;}gss_OID_set_desc,*gss_OID_set;

计数字段包含集合中OID的数量。这个元素字段是指向数组的指针gss_OID_desc对象,每个对象描述一个OID。gss_OID_设置值用于命名GSS-API,请求使用特定机制,并指出给定凭据支持哪些机制。

GSS-API返回给应用程序的所有OID集都是动态的对象(gss_OID_set_desc,集合的“elements”数组,每个成员OID的“elements”数组都是动态的分配),并且此存储必须由应用程序释放使用gss释放ID集例行程序。


下一步:,上一个:,向上:标准GSS API  [目录][索引]

3.2复杂数据类型

3.2.1证书

凭证句柄是一个调用方不透明的原子数据,用于标识GSS-API凭证数据结构。它由调用方表示-隐含类型gss _ cred _ id _ t.

GSS-API凭据可以包含特定于机制的主体多个机制的身份验证数据。GSS-API凭据是由一组凭证元素组成,每个元素都适用到单个机制。凭证最多可以包含一个每个受支持机制的凭证元素。凭证要素标识单个机制验证所需的数据单个主体,概念上包含两个凭证引用描述实际的特定于机制的身份验证数据,一个GSS-API用于启动上下文,一个用于接受上下文。对于不区分接受方和发起方凭据,这两个引用都指向相同的底层机制特定的身份验证数据。

凭据描述了一组特定于机制的主体,并给出他们的持有者有能力担任其中任何一位负责人。全部单个GSS-API凭据断言的主体身份应该属于同一实体,尽管此属性的强制执行是具体实施事项。GSS-API没有使应用程序可用的凭据;相反,凭证句柄是用于识别GSS-API内部持有的特定凭证。GSS-API凭据句柄和机制的组合标识当以下情况发生时,其身份将由凭据断言的主体与该机制一起使用。

这个gss_init_sec_上下文gss_accept_sec_上下文例程允许值GSS_C_NO_凭证指定为他们的凭据句柄参数。这个特殊的凭证句柄表示应用程序希望充当默认主体。

3.2.2上下文

这个gss _ ctx _ id _ t数据类型包含调用方不透明原子值,该值标识GSS-API安全上下文的一端。

安全上下文保存有关对等端的状态信息通信,包括加密状态信息。

3.2.3认证令牌

令牌是GSS-API用来维护的调用方不透明类型上下文数据结构之间的同步GSS-API安全上下文。令牌受密码保护octet-string,由GSS-API安全上下文供另一方的对等机制使用结束。令牌的封装(如果需要)和传输是对等应用程序的责任。令牌在之间传递GSS-API和使用gss缓冲区_t习俗。

3.2.4进程间令牌

某些GSS-API例程用于在多进程程序中的进程。这些例程使用调用方不透明八位字节字符串,由GSS-API在一个进程中生成供GSS-API在其他过程中使用。调用应用程序是负责在特定于操作系统的方式。注意,虽然GSS-API实现者是鼓励避免在进程间放置敏感信息令牌,或加密保护令牌,许多实现将无法避免放置关键材料或其他敏感数据在他们内部。应用程序有责任确保进程间令牌在传输过程中受到保护,并且只传输到值得信赖的流程。传递了进程间令牌GSS-API和使用gss缓冲区_t习俗。

3.2.5名称

名称用于识别个人或实体。GSS-API验证名称与声称名称的实体之间的关系。

由于不同的身份验证机制可能使用不同的用于标识其主体的名称空间,GSSAPI的命名支持在多机制环境中(甚至在一些单机制环境,其中底层机制支持多个名称空间)。

为名称定义了两种不同的表示法:

例行程序(gss导入名称gss显示名称)是用于在连续字符串表示形式之间转换名称和内部gss _名称_类型。gss导入名称可以为每个支持的命名空间支持多个语法,允许用户选择首选名称的自由代表。gss显示名称应使用实现-为每个支持的名称类型选择可打印语法。

如果应用程序调用gss显示名称,通过内部调用产生的名称gss导入名称,没有确保生成的连续字符串名称与原始导入的字符串名称。名称空间标识符也不起作用在经历了一次内在的旅程后,必须保持不变名称形式。例如,一种身份验证机制X.500名称,但提供Internet DNS名称的算法映射到X.500。该机制的实施gss导入名称当出现DNS名称时,可能会生成一个内部名称包含原始DNS名称和等效的X.500名称。或者,它可能只存储X.500名称。在后者中案例,gss显示名称最有可能生成可打印的X.500名称,而不是原始DNS名称。

身份验证过程向上下文接受者传递一个内部名称。因为这个名字已经被一个机制,它只包含一个名称(即使内部名称由上下文发起人提供给gss_init_sec_上下文多个组件)。这些名称称为内部机构名称,或“MN”和gss_accept_sec_上下文总是这种类型。由于某些应用可能需要MN,而不需要想要引起身份验证操作的开销功能,gss _规范化名称,用于转换MN中的通用内部名称。

内部表单名称的比较可以通过gss _比较_名称例程,如果这两个名称被比较指的是同一实体。这样就不需要了解各种语法的应用程序给定GSS-API实现可能支持的可打印名称。由于GSS-API假定给定的内部名称指的是同一实体,gss_compare_name(gss_compare_name)如果两个名称中至少有一个基元名称,则可以返回true通用。如果实现体现了等价性知识来自不同名称空间的名称之间的关系,这知识还可以成功地比较内部名称不包含重叠的基本元素。

在大型访问控制列表中使用时,调用的开销gss导入名称gss _比较_名称在每个名称上ACL可能是禁止的。作为另一种支持方式在这种情况下,GSS-API定义了一种特殊形式的连续字符串名称可以直接进行比较(例如与memcmp())。相邻名称适合比较的是由gss导出名称例程,它需要MN作为输入。导出的名称可能会被重新-由导入gss导入名称例程,以及由此产生的内部名称也将是MNgss_OID常数GSS_C_NT_出口名称标识“导出名称”类型,以及该常数的值在附录A中给出。从结构上看导出的名称对象由包含OID的标头组成识别身份验证名称的机制和尾部包含名称本身,其中定义了尾部的语法由单个机构规范决定。的精确格式导出名称在独立于语言的GSS-API中定义规范[GSSAPI]。

注意,通过使用gss _比较_名称通常与通过调用获得的不同gss规范化名称gss导出名称,然后比较导出的名称。第一系列操作确定两个(未经验证的)名称是否标识相同校长;第二,特定机制是否会将它们作为同一主体进行身份验证。这两项操作将一般只对MN给出相同的结果。

这个gss名称_t数据类型应实现为指针类型。允许编译器通过以下方式帮助应用程序程序员执行类型检查时,不鼓励使用(void*)。A类指向实现定义类型的指针是首选。

存储由返回的例程分配gss _名称_值。程序,gss发布名称,免费提供与内部形式名称关联的存储。

3.2.6渠道绑定

GSS-API支持使用用户特定的标签来识别给定的对等应用程序的上下文。这些标签旨在使用识别承载上下文。通道绑定使用以下结构:

typedef结构gss_channel_bindings_struct{OM_uint32启动器地址;gss_buffer_desc启动器地址;OM_uint32接收器地址;gss_buffer_desc接收器地址;gss_buffer_desc应用程序数据;}*gss_channel_bindings_t;

initiator_addrtype和acceptor_addertype字段表示启动器地址和接收者地址中包含的地址缓冲区。地址类型应为以下类型之一:

GSS_C_AF_UNSPEC未指定地址类型GSS_C_AF_LOCAL主机本地地址类型GSS_C_AF_INET互联网地址类型(例如IP)GSS_C_AF_IMPLINK ARPAnet IMP地址类型GSS_C_AF_PUP PUP协议(如BSP)地址类型GSS_C_AF_CHAOS MIT CHAOS协议地址类型GSS_C_AF_NS XEROX NS地址类型GSS_C_AF_NBS NBS地址类型GSS_C_AF_ECMA ECMA地址类型GSS_C_AF_DATAKIT数据包协议地址类型GSS_C_AF_CCITT CCITT协议GSS_C_AF_SNA IBM SNA地址类型GSS_C_AF_DECnet DECnet地址类型GSS_C_AF_DLI直接数据链路接口地址类型GSS_C_AF_LAT LAT地址类型GSS_C_AF_HYLINK NSC超通道地址类型GSS_C_AF_APPLETALK APPLETALK地址类型GSS_C_AF_BSC BISYNC 2780/3780地址类型GSS_C_AF_DSS分布式系统服务地址类型GSS_C_AF_OSI OSI TP4地址类型GSS_C_AF_X25 X.25GSS_C_AF_NULLADDR未指定地址

请注意,这些符号用于命名系列,而不是特定的寻址格式。对于包含多个备选地址形式,发起人地址和接受人地址字段必须包含足够的信息以确定哪个地址使用表单。除非另有规定,否则地址应为以网络字节顺序指定(即地址系列)。

从概念上讲,GSS-API将initiator_addrtype、,发起人地址、接收人地址、承兑人地址和application_data以形成八位字节字符串。该机制计算MIC覆盖此八位字符串,并将MIC绑定到上下文由发出的建立令牌gss_init_sec_上下文。相同的绑定由上下文接受者呈现给gss_accept_sec_上下文、和MIC的计算方法相同。计算的MIC与如果MIC不同,gss_accept_sec_上下文将返回一个GSS_S_BAD_绑定错误,以及上下文将无法建立。一些机制可能包括令牌中的实际信道绑定数据(而不仅仅是MIC);因此,应用程序不应将机密数据用作信道绑定组件。

个别机制可能会对地址施加额外的限制和可能出现在通道绑定中的地址类型。例如机制可以验证通道的initiator_address字段提供给的绑定gss_init_sec_上下文包含正确的主机系统的网络地址。便携式应用程序应因此,确保他们要么为地址字段,或省略地址信息,指定GSS_C_AF_NULLADDR公司作为地址类型。


下一步:,上一个:,向上:标准GSS API  [目录][索引]

3.3可选参数

各种参数被描述为可选参数。这意味着他们遵循可以请求默认值的约定。这个以下约定用于省略的参数。这些约定仅适用于那些显式的参数记录为可选。


下一步:,上一个:,向上:标准GSS API  [目录][索引]

3.4错误处理

每个GSS-API例程都返回两个不同的值以报告状态给调用者的信息:GSS状态代码和机制状态代码。

3.4.1 GSS状态代码

GSS-API例程返回GSS状态代码作为OM_单元32函数值。这些代码表示独立于用于提供安全服务的底层机制。这个可以通过GSS状态代码指示的错误属于通用错误API例程错误(GSS-API中定义的错误规范)或调用错误(这些特定的错误语言绑定)。

GSS状态代码可以指示来自例程和单个调用错误。此外,补充状态信息可以通过在GSS状态代码的补充信息字段。

这些错误被编码到32位GSS状态代码中,如下所示:

MSB最低有效位|------------------------------------------------------------||调用错误|例程错误|补充信息||------------------------------------------------------------|位31 24 23 16 15 0

因此,如果GSS-API例程返回的GSS状态代码的上限为16位包含非零值,则调用失败。如果调用错误字段为非零,则调用应用程序的例程调用为错误。调用错误定义见表3-1。如果例行程序错误字段非零,其中一个例程的例程失败-具体原因见表3-2。无论鞋面是否16位表示失败或成功,例程可能表示通过在补充信息字段中设置位获得附加信息状态代码的。各个位的含义如下所示表3-3。

表3-1调用错误名称值字段含义----                   --------------           -------GSS_S_CALL_INCESSIBLE_READ 1必需的输入参数无法读取GSS_S_CALL_INACCESSIBLE_WRITE 2所需的输出参数无法写入。GSS_S_CALL_BAD_STRUCTURE 3参数格式错误
表3-2常规错误名称值字段含义----                   --------------           -------GSS_S_BAD_MECH 1不支持的机制已请求GSS_S_BAD_NAME 2无效的名称提供GSS_S_BAD_NAMETYPE 3提供的名称是不支持的类型GSS_S_BAD_BINDINGS 4通道绑定错误已提供GSS_S_BAD_STATUS 5状态代码无效提供GSS_S_BAD_MIC GSS_S_BA D_SIG 6令牌的MIC无效GSS_S_NO_CRED 7没有凭证提供,或凭据是不可用或无法访问。GSS_S_NO_CONTEXT 8没有上下文已建立GSS_S_DEFECTIVE_TOKEN 9令牌无效GSS_S_DEFECTIVE_CREDENTIAL 10凭证无效GSS_S_CREDENTIALS_EXPIRED 11引用的凭据已过期GSS_S_CONTEXT_EXPIRED 12上下文已过期GSS_S_FAILURE 13其他故障(请参阅文本)GSS_S_BAD_QOP 14保护质量请求的不能是假如GSS_S_UNAUTHORIZED 15禁止操作根据本地安全策略GSS_S_UNAVAILABLE 16操作或选项为不可用的GSS_S_DUPLICATE_ELEMENT 17请求的凭据元素已存在GSS_S_NAME_NOT_MN 18提供的名称不是机制名称
表3-3辅助状态位名称位号含义----                   ----------           -------GSS_S_CONTINUE_NEEDED 0(LSB)仅由返回gss_init_sec_context或gss_accept_sec_text。这个必须再次调用例程以完成其功能。参见常规文档详细描述GSS_S_DUPLICATE_TOKEN 1令牌是的副本更早的标记GSS_S_OLD_TOKEN 2令牌的有效期已过期GSS_S_UNSEQ_TOKEN 3更新的令牌已经处理GSS_S_GAP_TOKEN 4预期的每消息令牌未收到

例程文档还使用名称GSS_S_COMPLETE,即零值,表示没有任何API错误或补充信息位。

所有GSS_S_xxx符号等同于完成OM_单元32地位代码,而不是位字段值。例如,实际值符号的GSS_S_BAD_名称类型(例行错误中的值3字段)为3<<16。GSS呼叫错误,GSS_ROUTINE_ERROR(GSS_路由_错误)GSS_补充信息提供了,每个都接受GSS状态代码并删除除相关领域。例如,通过应用GSS_ROUTINE_ERROR(GSS_路由_错误)设置为状态代码可以删除调用错误和补充信息字段,只留下例行错误字段。这些宏传递的值可以直接与GSS_S_xxx公司适当类型的符号。GSS_错误还提供了,当应用于GSS状态时如果状态代码指示调用,则代码返回非零值或常规错误,否则为零值。由定义的所有宏GSS-API只对其参数求值一次。

GSS-API实现可以选择在以特定于平台的方式代替或补充常规价值;常规错误和补充信息应通过返回仅限主要状态值。

GSS主要状态代码GSS_S_故障用于指示底层机制检测到一个错误GSS状态代码已定义。机构特定状态代码将提供有关错误的更多详细信息。

除了每个API函数的明确主要状态代码外,代码GSS_S_故障可以通过任何例程返回,指示特定于实现或特定于机制的错误条件,通过次要_状态参数。

3.4.2机械特定状态代码

GSS-API例程返回一个minor_status参数,用于指示底层安全机制中的特定错误。此参数可能包含单个机械特定错误,由表示OM_输入32值。

minor_status参数始终由GSS-API例程设置,即使它返回调用错误或某个通用API错误尽管大多数其他输出参数可能在这种情况下保持不变。但是,输出参数预期返回指向例程分配的存储的指针必须始终由例程设置,即使出现错误在这种情况下,GSS-API例程可以选择设置返回的参数值为NULL,表示实际上没有存储已分配。与此类指针关联的任何长度字段(如gss _缓冲区_desc结构)也应设置为零。


下一步:,上一个:,向上:标准GSS API  [目录][索引]

3.5凭证管理

GSS-API凭证管理例程例行程序功能-------                         --------gss_accquire_cred假设全局身份;获取的GSS-API凭据句柄预先存在的凭据。gss_add_cred构造凭据以增量方式。gss_inquire_cred获取有关凭据。gss_inquire_cred_by_mech获取机械性能信息关于凭证。gss_release_cred放弃凭证句柄。

gss获得红色

功能:OM_单元32 gss获得红色 (OM_uint32*次要_状态,常量gss_name_t所需名称,OM_输入32时间_req,常量gss_OID_set所需的技术,gss_cred_usage_t信用使用,gss_cred_id _ t*输出红色句柄,gss_OID_set*实际_机械,OM_输入32*时间(_rec))

次要_状态:所需名称:时间_req:所需的技术:信用使用:输出红色句柄:实际_机械:时间(_rec):

gss添加红色

功能:OM_单元32 gss添加红色 (OM_uint32*次要_状态,常量gss_cred_id _t输入红色句柄,常量gss_name_t所需名称,常量gss_OID期望的技术,gss_cred_usage_t信用使用,OM_uint32启动器_时间_req,OM_uint32接收器_时间_req,gss_cred_id _ t*输出信用句柄,gss_OID_set*实际_机械,OM_uint32*启动器时间,OM_uint32*接受方时间)

次要_状态:输入红色句柄:设计名称:设计_技术:信用使用:启动器_时间_req:接收器_时间_req:输出红色句柄:实际_机械:启动器时间:接受方时间:

gss查询红色

功能:OM_单元32 gss查询红色 (OM_uint32*次要_状态,常量gss_cred_id _t信用句柄,gss_name_t*名称,OM_uint32*一生,gss_cred_usage_t*信用使用,gss_OID_set*机制)

次要_状态:信用句柄:名称:一生:信用使用:机制:

gss _查询_红色_机械

功能:OM_单元32 gss _查询_红色_机械 (OM_输入32*次要_状态,常量gss_cred_id _t信用句柄,常量gss_OID机械类型,gss_name_t*名称,OM_uint32*启动器生存时间,OM_输入32*接受者生存时间,gss_cred_usage_t*信用使用)

次要_状态:信用句柄:机械类型:名称:启动器生存时间:接受方生存时间:信用使用:

gss释放红色

功能:OM_单元32 gss释放红色 (OM_uint32*次要_状态,gss_cred_id _ t*信用句柄)

次要_状态:信用句柄:


下一步:,上一个:,向上:标准GSS API  [目录][索引]

3.6上下文级例程

GSS-API上下文级例程例行程序功能-------                         --------gss_init_sec_context使用启动安全上下文对等应用程序。gss_accept_sec_context接受安全上下文由对等应用程序发起。gss_delete_sec_context放弃安全上下文。gss_process_context_token处理安全上的令牌来自对等应用程序的上下文。gss_context_time确定上下文的长度将继续有效。gss_inquire_context获取有关安全上下文。gss_wrap_size_limit确定标记大小限制上下文上的gss_wrap。gss_export_sec_context将安全上下文传输到另一个过程。gss_import_sec_context导入传输的上下文。

gss_init_sec_上下文

功能:OM_单元32 gss_init_sec_上下文 (OM_uint32*次要_状态,常量gss_cred_id _t启动器红色句柄,gss _ ctx _ id _ t*上下文句柄,常量gss_name_t目标名称,常量gss_OID机械类型,OM_uint32req_flags(请求标记),OM_uint32时间_req,常量gss_channel_bindings_t输入汉字绑定,常量gss_buffer_t输入标记,gss_OID*实际机械类型,gss_buffer_toutput_token(输出标记),OM_输入32*ret_flags(重新标记),OM_uint32*时间(_rec))

次要_状态:启动器红色句柄:上下文句柄:目标名称:机械类型:请求标志(_F):时间_请求:输入汉字绑定:输入标记:实际机械类型:output_token(输出标记):ret_flags(重新标记):时间(_rec):

gss_accept_sec_上下文

功能:OM_单元32 gss_accept_sec_上下文 (OM_uint32*次要_状态,gss _ ctx _ id _ t*上下文句柄,常量gss_cred_id _t接受方红色句柄,常量gss_buffer_t输入令牌缓冲区,常量gss_channel_bindings_t输入汉字绑定,gss_name_t*src_name(服务器名称),gss_OID*机械类型,gss_buffer_toutput_token(输出标记),OM_uint32*ret_flags(重新标记),OM_输入32*时间(_rec),gss_cred_id _ t*已删除的信用句柄)

次要_状态:上下文句柄:接受方红色句柄:输入令牌缓冲区:输入汉字绑定:src名称:机械类型:output_token(输出标记):ret_flags(重新标记):时间(_rec):委托信用句柄:

gss删除sec内容

功能:OM_单元32 gss删除sec内容 (OM_uint32*次要_状态,gss _ ctx _ id _ t*上下文句柄,gss_buffer_toutput_token(输出标记))

次要_状态:上下文句柄:output_token(输出标记):

gss_process_context标记

功能:OM_单元32 gss_process_context标记 (OM_uint32*次要_状态,常数gss_ctx_id_t上下文句柄,常量gss_buffer_t标记缓冲区)

次要_状态:上下文句柄:标记缓冲区:

gss上下文时间

功能:OM_单元32 gss上下文时间 (OM_uint32*次要_状态,常数gss_ctx_id_t上下文句柄,OM_uint32*时间_rec)

次要状态:上下文句柄:时间(_rec):

gss查询内容

功能:OM_单元32 gss查询内容 (OM_uint32*次要_状态,常数gss_ctx_id_t上下文句柄,gss_name_t*src_name(服务器名称),gss_name_t*目标名称,OM_uint32*生命周期_rec,gss_OID*机械类型,OM_uint32*ctx标志,整数*本地启动(_I),整数*打开)

次要_状态:上下文句柄:src_name(服务器名称):目标名称:生命周期_rec:机械类型:ctx标志:本地启动(_I):打开:

gss _包装_尺寸_限制

功能:OM_单元32 gss _包装_尺寸_限制 (OM_uint32*次要_状态,常数gss_ctx_id_t上下文句柄,整数确认确认滞后,gss_qop_tqop_req,OM_uint32请求输出大小,OM_uint32*最大输入大小)

次要_状态:上下文句柄:配置请求标记:qop_req:请求输出大小:最大输入大小:

gss导出sec内容

功能:OM_单元32 gss导出sec内容 (OM_uint32*次要_状态,gss _ ctx _ id _ t*上下文句柄,gss_buffer_t进程间令牌)

次要_状态:上下文句柄:进程间令牌:

gss导入sec内容

功能:OM_单元32 gss导入sec内容 (OM_uint32*次要状态,常量gss_buffer_t进程间令牌,gss _ ctx _ id _ t*上下文句柄)

次要_状态:进程间令牌:上下文句柄:


下一步:,上一个:,向上:标准GSS API  [目录][索引]

3.7传递消息例程

GSS-API Per-message例程例行程序功能-------                         --------gss_get_mic计算加密消息完整性代码(MIC)信息;诚信服务。gss_verify_mic根据消息检查mic;验证接收到的消息。gss_wrap将麦克风连接到消息,然后可选地加密消息内容。保密服务gss_unwrap验证带有附件的消息MIC,解密消息内容如有必要。

gss _获取_ mic

功能:OM_单元32 gss _获取_ mic (OM_uint32*次要_状态,常数gss_ctx_id_t上下文句柄,gss_qop_tqop_req,常量gss_buffer_t消息缓冲区,gss_buffer_t消息标记)

次要状态:上下文句柄:qop_req:消息缓冲区:消息标记:

gss验证mic

功能:OM_单元32 gss验证mic (OM_uint32*次要状态,常量gss_ctx_id_t上下文句柄,常量gss_buffer_t消息缓冲区,常量gss_buffer_t标记缓冲区,gss_qop_t*qop状态)

次要_状态:上下文句柄:消息缓冲区:标记缓冲区:qop状态:

gss包裹

功能:OM_单元32 gss包裹 (OM_uint32*次要_状态,常数gss_ctx_id_t上下文句柄,整数配置请求标记,gss_qop_tqop_req,常量gss_buffer_t输入消息缓冲区,整数*conf状态,gss_buffer_t输出消息缓冲区)

次要_状态:上下文句柄:配置请求标记:质量保证要求:输入消息缓冲区:conf状态:输出消息缓冲区:

gss展开

功能:OM_输入32 gss_unwrap(打开包装) (OM_uint32*次要_状态,常数gss_ctx_id_t上下文句柄,常量gss_buffer_t输入消息缓冲区,gss_buffer_t输出消息缓冲区,整数*conf状态,gss_qop_t*qop状态)

次要_状态:上下文句柄:输入消息缓冲区:输出消息缓冲区:conf状态:qop状态:


下一步:,上一个:,向上:标准GSS API  [目录][索引]

3.8名称操作

GSS-API名称操作例程例行程序功能-------                         --------gss_import_name转换连续字符串名称至内部形状。gss_display_name将内部表单名称转换为文本。gss_compare_name比较两个内部表单名称。gss_release_name放弃内部表单名称。gss_inquire_names_for_mech列出支持的名称类型。指定的机制。gss_inquire_mechs_for_name列出支持指定的名称类型。gss_canonicalize_name将内部名称转换为MN。gss_export_name将MN转换为导出表单。gss_duplicate_name创建一个内部名称的副本。

gss_import_name(导入名称)

功能:OM_单元32 gss导入名称 (OM_uint32*次要_状态,常量gss_buffer_t输入名称缓冲区,常量gss_OID输入名称类型,gss_name_t*输出名称)

次要_状态:输入名称缓冲区:输入名称类型:输出名称:

gss显示名称

功能:OM_单元32 gss显示名称 (OM_uint32*次要_状态,常量gss_name_t输入名称,gss_buffer_t输出名称缓冲区,gss_OID*输出名称类型)

次要_状态:输入名称:输出名称缓冲区:输出名称类型:

gss _比较_名称

功能:OM_单元32 gss _比较_名称 (OM_uint32*次要_状态,常量gss_name_t名称1,常量gss_name_t名称2,整数*名称相等(_E))

次要_状态:名称1:名称2:名称相等(_E):

gss发布名称

功能:OM_单元32 gss发布名称 (OM_uint32*次要_状态,gss_name_t*名称)

次要_状态:名称:

gss_inquire_names_for_mech公司

功能:OM_单元32 gss_inquire_names_for_mech公司 (OM_uint32*次要_状态,常量gss_OID机制,gss_OID_set*名称_类型)

次要_状态:机制:名称_类型:

gss _查询_技术_名称

功能:OM_单元32 gss _查询_技术_名称 (OM_uint32*次要_状态,常量gss_name_t输入名称,gss_OID_set*机械类型)

次要_状态:输入名称:机械类型:

gss _规范化名称

功能:OM_单元32 gss规范化名称 (OM_输入32*次要_状态,常量gss_name_t输入名称,常量gss_OID机械类型,gss_name_t*输出名称)

次要_状态:输入名称:机械类型:输出名称:

gss导出名称

功能:OM_单元32 gss导出名称 (OM_uint32*次要_状态,常量gss_name_t输入名称,gss_buffer_t导出名称)

次要_状态:输入名称:导出名称:

gss _重复_名称

功能:OM_单元32 gss _重复_名称 (OM_uint32*次要状态,常量gss_name_tsrc_name(服务器名称),gss_name_t*目标名称)

次要_状态:src_name(服务器名称):目标名称:


下一步:,上一个:,向上:标准GSS API  [目录][索引]

3.9其他例行程序

GSS-API其他例程例行程序功能-------                        --------gss_add_oid_set_member将对象标识符添加到一套。gss_display_status转换gss-API状态代码到文本。gss_indicate_mechs确定可用基础身份验证机制。gss_release_buffer丢弃缓冲区。gss_release_oid_set放弃一组对象标识符。gss_create_empty_oid_set创建一个不包含对象标识符。gss_test_oid_set_member确定对象是否标识符是集合的成员。gss_composite_token封装上下文标记。gss_decomposite_token对上下文标记进行解密。gss_oid_equal比较两个oid是否相等。

gss添加ID设置成员

功能:OM_单元32 gss添加ID设置成员 (OM_uint32*次要_状态,常量gss_OID成员ID,gss_OID_set*oid集合)

次要_状态:成员ID:oid集合:

gss显示状态

功能:OM_单元32 gss显示状态 (OM_uint32*次要状态,OM_输入32状态值,整数状态_类型,常量gss_OID机械类型,OM_uint32*消息_上下文,gss_buffer_t状态字符串)

次要_状态:状态值:状态_类型:机械类型:消息_上下文:状态字符串:

gss指示技术

功能:OM_单元32 gss指示技术 (OM_uint32*次要_状态,gss_OID_set*机械设置)

次要_状态:机械设置:

gss释放缓冲区

功能:OM_单元32 gss释放缓冲区 (OM_输入32*次要_状态,gss_buffer_t缓冲器)

次要_状态:缓冲器:

gss释放ID集

功能:OM_单元32 gss释放ID集 (OM_uint32*次要_状态,gss_OID_set*设置)

次要状态:设置:

gss _创建_清空_ ID _集

功能:OM_单元32 gss _创建_清空_ ID _集 (OM_uint32*次要_状态,gss_OID_set*oid集合)

次要_状态:oid集合:

gss测试ID设置成员

功能:OM_单元32 gss测试ID设置成员 (OM_uint32*次要_状态,常量gss_OID成员,常量gss_OID_set设置,整数*目前)

次要_状态:成员:设置:目前:

gss _封装_令牌

功能:外部OM_uint32 gss _封装_令牌 (gss_const_buffer_t输入标记,gss_const_OID标记_oid,gss_buffer_toutput_token(输出标记))

输入标记:标记ID:output_token(输出标记):

gss脱胶囊剂

功能:OM_单元32 gss脱胶囊剂 (gss_const_buffer_t输入标记,gss_const_OID标记_oid,gss_buffer_t输出令牌)

输入标记:标记_oid:output_token(输出标记):

gss _ oid _相等

功能:整数 gss _ oid _相等 (gss_const_OID第一个ID,gss_const_OID第二个ID)

第一个ID:第二个ID:


上一页:,向上:标准GSS API  [目录][索引]

3.10 SASL GS2例程

gss查询技术名称

功能:OM_单元32 gss查询技术名称 (OM_uint32*次要_状态,常量gss_buffer_tsasl_机械名称,gss_OID*机械类型)

次要_状态:sasl_机械名称:机械类型:

gss _查询_姓名_技术

功能:OM_输入32 gss _查询_姓名_技术 (OM_uint32*次要_状态,常量gss_OID期望的技术,gss_buffer_tsasl_机械名称,gss_buffer_t机械名称,gss_buffer_t机械_说明)

次要_状态:期望的技术:sasl_机械名称:机械名称:机械_说明:


下一步:,上一个:,向上:顶部  [目录][索引]

4扩展GSS API

以下函数均不是标准GSS API函数。作为因此,它们没有在gss/api。小时,而是在gss/分机(包含在gss(希腊先令)。小时).请参见标题.

gss _检查_版本

功能:常量字符* gss _检查_版本 (常量字符*请求版本)

请求版本:

gss _用户确认

功能:整数 gss _用户确认 (常量gss_name_t名称,常量字符*用户名)

名称:用户名:


下一步:,上一个:,向上:顶部  [目录][索引]

5调用gss

姓名

GNU GSS(GSS)–GSS库的命令行接口。

说明

全球供应链是GNU GSS的主程序。

长选项的强制或可选参数也是强制或可选择任何相应的短选项。

命令

全球供应链识别以下命令:

-l、 --列表机制列出有关受支持机制的信息以人类可读的格式。-m、 --major=LONG描述“主要状态”错误代码值。-a、 --接受上下文接受安全上下文作为服务器。-i、 --init-sec-context=机械将安全上下文初始化为客户端。MECH是机制的SASL名称,使用-l列出支持的机制。-n、 --服务器名称=服务@主机名对于-i,设置远程主机的名称。例如,“imap@mail.example.com".

其他选项

这些是一些标准参数。

-h、 --help打印帮助并退出-五、 --版本打印版本并退出-q、 --静默操作(默认值=关闭)

示例

要列出支持的机制,请使用gss-l这样地:

美元src/gss-l找到1个受支持的机制。机制0:机制名称:Kerberos V5机制描述:Kerberos V5 GSS-API机制SASL机构名称:GS2-KRB5$

要初始化Kerberos V5安全上下文,请使用--初始上下文参数。Kerberos V5需要知道名称远程实体的,因此您需要提供--服务器名称参数。这将提供服务器的名称。对于示例,使用imap@mail.example.com设置安全上下文使用图像处理程序主机上的服务mail.example.com. TheKerberos V5客户端将使用您的票证授予票证(这需要可用)并获取服务的服务器票证。KDC必须了解服务器以使其工作。该工具将打印GSS-API基于标准输出编码的base64上下文标记。

$gss-i GS2-KRB5-n美元host@interop.josefsson.org上下文标记(提供保护):YICIQYJKoZihvcSAQICAQBuggIQMIICDKADAgEFoQMCAQ6iBwMFACAAACjgEYYIBFDCCARCGAwIBBaEXGxVpbnRlcm9wLmpvc2Vmc3Nvbi5vcmeiKDAmoAMCAQGhHzAdGwRob3N0GxVpnRlcm9 wLmpVC2Vmc3 Nvbi5 vcmejgcUwgcKgAwIBEqKBuggSBt0zqTh6tBBKV2BwDjQ6H4abEaPshPa0o3tT/TH9U7BaSw/M9ugYYqpHAhOitVjcQidhG2FdSl1n3FOgDBufHHO+gHOW0Y1XHc2QtEdkg1xYF2J4iR1vNQB14kXDM78pogCsffLnjsEESKWoeKRGOYWPRx0ksLJDnl/e5tXecZTjhJ3hLrFNBEWRmpIOakTAPnL+Xzz6xcnLHMLLnhZ5VcHqtIMm5p9IDWsP0juIncJ6tO8hjMA2qSB2jCB16ADAgESooHPBIHMWSeRBgV80gh/6hNNMr00jTVwCs5TEAIkljvjOfyPmNBzIFWoG+Wj5ZKOBdi7vYbJ2s8b1iSqq/9YEZSqaTxul+5aNrclKoJ7J/IW 4kTuMklHcQf/A16TeZFsm9TdfE+x8+PjbOBFtKYXT8ODT8LLicNNiDbWW0meY7lsktXAVpZiUds4wTZ1W5bOSEGY7+mxAWrAlTnWNAt1J2MHZnfGJFJDLJZldXoyG8OwHyp4h1nBhgzC5BfAmL85QJVxxgVfiHhM5oT9mE1O输入上下文标记:

该工具正在等待来自服务器。请注意状态文本,通知您消息保护可用。

要接受Kerberos V5上下文,过程类似。服务器需要知道其名称,以便可以从中找到主机密钥(通常)/etc/shishi/shishi.keys等。一旦启动,它将等待从客户端获取上下文令牌。下面我们将粘贴令牌打印在上面。

$gss-a-n美元host@interop.josefsson.org导入名称“host@interop.josefsson.org“。。。正在获取凭据。。。输入上下文标记:YICIQYJKoZihvcSAQICAQBuggIQMIICDKADAgEFoQMCAQ6iBwMFACAAACjgEYYIBFDCCARCGAwIBBaEXGxVpbnRlcm9wLmpvc2Vmc3Nvbi5vcmeiKDAmoAMCAQGhHzAdGwRob3N0GxVpnRlcm9 wLmpVC2Vmc3 Nvbi5 vcmejgcUwgcKgAwIBEqKBuggSBt0zqTh6tBBKV2BwDjQ6H4abEaPshPa0o3tT/TH9U7BaSw/M9ugYYqpHAhOitVjcQidhG2FdSl1n3FOgDBufHHO+gHOW0Y1XHc2QtEdkg1xYF2J4iR1vNQB14kXDM78pogCsffLnjsEESKWoeKRGOYWPRx0ksLJDnl/e5tXecZTjhJ3hLrFNBEWRmpIOakTAPnL+Xzz6xcnLHMLLnhZ5VcHqtIMm5p9IDWsP0juIncJ6tO8hjMA2qSB2jCB16ADAgESooHPBIHMWSeRBgV80gh/6hNNMr00jTVwCs5TEAIkljvjOfyPmNBzIFWoG+Wj5ZKOBdi7vYbJ2s8b1iSqq/9YEZSqaTxul+5aNrclKoJ7J/IW 4kTuMklHcQf/A16TeZFsm9TdfE+x8+PjbOBFtKYXT8ODT8LLicNNiDbWW0meY7lsktXAVpZiUds4wTZ1W5bOSEGY7+mxAWrAlTnWNAt1J2MHZnfGJFJDLJZldXoyG8OwHyp4h1nBhgzC5BfAmL85QJVxxgVfiHhM5oT9mE1O上下文已被接受。最终上下文标记:YHEGCSqGSIb3EgECAgIAb2IwYKADAgEFoQMCAQ+iVDBSoAMCARKhAwIBAKJGBESy1Zoy9DrG+DuV/6aWmAp79s9d+GXC/WKOzRuxAqo98vMRWbsbILW8z9aF1th4GZz0kjFz/hZAmnWyomZ9JiP3yQvg==$

回到客户端,您现在可以剪切并粘贴最后的上下文令牌如服务器所示。然后,客户端将服务器验证为好。客户端的输出如下所示。

YHEGCSqGSIb3EgECAgIAb2IwYKADAgEFoQMCAQ+iVDBSoAMCARKhAwIBAKJGBESy1Zoy9DrG+DuV/6aWmAp79s9d+GXC/WKOzRuxAqo98vMRWbsbILW8z9aF1th4GZz0kjFz/hZAmnWyomZ9JiP3yQvg==上下文已初始化。$

下一步:,上一个:,向上:顶部  [目录][索引]

6确认

本手册借用了RFC 2743和RFC 2744中描述GSS的文本API正式。


下一步:,上一个:,向上:顶部  [目录][索引]

附录A对GSS的批评

作者怀疑GSS是否是免费的最佳解决方案寻求实现无关安全性的软件项目框架。我们在本节中表达了这些疑问,以便读者可以自己判断是否存在任何潜在问题这里讨论的与他们的项目相关,或者如果比问题更重要。我们知道,有些意见是高度主观,但我们提供这些服务是希望它们能够发挥作用轶事证据。

GSS可以在几个层面上受到批评。我们从实际开始实施。

GSS似乎不是由经验丰富的C程序员设计的。虽然这通常是一件好事(C不是最好的语言),但由于他们在C中定义了API,这很不幸。初级这一点的证据是majorstatus和minorstatus错误代码解决方案。这是一种描述错误条件的复杂方法,但更糟糕的是,错误条件被分离;一半错误条件在函数返回值和另一半中位于函数的第一个参数中,该参数始终是指向一个整数。(指针甚至不允许无效的,如果应用程序不关心小错误代码。)这使得API不可读,难以使用。更好的解决方案是返回包含整个错误条件的结构,可以是虽然我们承认C语言在设计GSS时使用的可能不允许这种情况(这可能事实上,这就是选择尴尬解决方案的原因)。相反返回值可以使用指向一个结构,可以使用各种宏进行访问,函数可以有一个空洞的原型。minor_status位于参数列表增加了使用API的痛苦。重要应首先放置参数。minor_status的更好位置(如果它必须存在)将是原型中的最后一个。

C缺乏经验的另一个证据是内存管理问题;GSS提供了释放存储在中的数据的功能,例如。,gss缓冲区_t但调用方负责释放指向的结构gss缓冲区_t(即gss _缓冲区_desc)自身。内存管理问题是错误容易发生,而且这种划分很容易导致内存泄漏(或更糟)。相反,API应该是所有gss _ ctx _ id _ t,gss_cred_id_t信用证、和gss缓冲区_t结构:它们应该由库分配,并取消分配(使用实用程序为此目的定义的函数)。

TBA:规范不清楚OID的内存是如何管理的。对于例如,谁负责释放可能新分配的OID返回为实际_机械在里面gss_acquire_cred公司此外,OID是否被深度复制到OID集合中?换句话说,如果我将OID添加到OID集中,并修改原始OID,OID将OID集合中是否也要修改?

另一个示例是中给出的示例GSS头文件RFC,其中包含:

/**我们已经包含了xom.h头文件。验证OM_uint32*定义正确。*/#如果大小为(gss_uint32)!=大小(OM_uint32)#错误:xom.h中OM_uint32的定义不兼容#结尾

C预处理器不知道大小函数,所以它被视为标识符,映射到0。因此,表达式不检查OM_单元32是正确的。检查表达式0 != 0持有。

TBA:线程问题

TBA:GSS库中的多个机制

TBA:高级设计批评。

TBA:无凭证转发。

待定:国际化

TBA:动态生成的OID和内存释放问题。即。,gss_import_name或gss_duplicate_name是否应分配内存并进行复制提供的OID,还是简单地复制指针?如果前者,谁会释放内存吗?如果是后者,申请可以取消分配或修改OID,这似乎是不需要的。

TBA:krb5:无法访问授权数据

TBA:krb5:防火墙/预IP:iakerb状态?

TBA:krb5:仅单一DES

TBA:API可能会阻塞,在基于select()的服务器中无法使用。特别是如果联系的服务器是由决定的未经身份验证的远程客户端。

TBA:krb5:不支持GSS_C_PROT_READY_FLAG。我们支持它不过,无论如何。

TBA:krb5:gssapi-cfx与rfc 1964的不同之处在于后者需要序列号,而前者需要序列号没有。

最后,我们注意到,很少有免费安全应用程序使用GSS,也许唯一的主要例外是Kerberos 5实现。虽然没有实质性证据,但这确实表明GSS可能不会是解决实际问题的最简单解决方案,因为否则会有更多的项目选择利用进入GSS而不是使用另一个框架(或设计自己的解决方案)。

我们的结论是,那些正在寻找安全框架应仔细评估GSS是否使用前的最佳解决方案。特别建议将GSS与简单身份验证和安全层(SASL)进行比较框架,在几种情况下提供与GSS相同的功能做。SASL相对于GSS最有说服力的论点是首字母缩略词暗示“简单”,而GSS则远非如此。

然而,也就是说,对于想要支持的自由软件项目Kerberos 5,我们承认没有其他框架能够提供更多Kerberos 5系统的可移植和互操作接口。如果您的项目需要特别使用Kerberos 5,我们建议您使用GSS而不是Kerberos 5实现特定的API。


下一步:,上一个:,向上:顶部  [目录][索引]

附录B复印信息


向上:复制信息  [目录][索引]

B.1 GNU免费文档许可

版本1.3,2008年11月3日
版权所有©2000、2001、2002、2007、2008自由软件基金会。网址:https://fsf.org/每个人都可以复制和分发原稿但不允许更改它。
  1. 序言

    本许可证的目的是制作手册、教科书或其他实用文档自由的在自由的意义上:确保每个人都有复制和再版的有效自由,无论是否进行商业或非商业修改。其次,本许可证为作者和出版商保留了一种方式在不被视为负责任的情况下,为自己的工作赢得荣誉其他人进行的修改。

    本许可证是一种“copyleft”,即衍生产品文件的作品本身必须在同样的意义上是自由的。补充了GNU通用公共许可证,这是一个版权为自由软件设计的许可证。

    我们设计此许可证是为了将其免费用于手册软件,因为自由软件需要免费文档:免费程序应随附手册,提供与软件可以。但本许可证不限于软件手册;它可以用于任何文本工作,无论主题或是否以印刷书的形式出版。我们推荐此许可证主要用于以指导或参考为目的的作品。

  2. 适用性和定义

    本许可证适用于任何介质中的任何手册或其他工作包含版权所有者发布的通知,表示可以根据本许可条款分发。此类通知授予在全球范围内,免版税许可,无限期使用在此处规定的条件下工作。下面的“文档”,指任何此类手册或作品。任何公众成员都是被许可人,并被称为“您”。如果您接受许可证以需要许可的方式复制、修改或分发作品根据版权法。

    文件的“修改版本”是指包含文件或其中的一部分,可以逐字复制,也可以与修改和/或翻译成另一种语言。

    “次要部分”是一个命名的附录或重要部分专门处理文档的出版商或作者主题(或相关事项)且不包含任何可能坠落的内容直接在整个主题中。(因此,如果文件在数学教科书的第二部分可能无法解释任何数学。)这种关系可能是历史问题与主题或相关事项或法律的联系,商业、哲学、道德或政治立场他们。

    “不变部分”是某些次要部分,其标题为在通知中被指定为不变量节说明文件是根据本许可证发布的。如果第节不符合上述二级定义,则不符合允许指定为不变量。文件可能包含零不变节。如果文档没有标识任何不变量那么就没有节了。

    “封面文本”是列出的某些文本短文,作为前覆盖文本或后覆盖文本,在通知中指出文件根据本许可证发布。正面文字可能最多为5个单词,背越文本最多为25个单词。

    文件的“透明”副本是指机器可读副本,以其规范可用于适用于修订文件的公众直接使用通用文本编辑器或(对于由像素)通用绘图程序或(用于绘图)一些广泛可用的绘图编辑器,适合输入到文本格式化程序或用于自动转换为各种适合输入的格式到文本格式化程序。在其他透明文件中制作的副本其标记或无标记已被安排阻止的格式或阻止读者进行后续修改是不透明的。如果图像格式用于任何大量内容,则该格式是不透明的文本的。不“透明”的副本称为“不透明”。

    适用于透明副本的格式示例包括普通格式无标记ASCII、Texinfo输入格式、LaTeX输入格式、SGML或XMLDTD和符合标准的简单HTML,PostScript或PDF设计用于人工修改。示例透明图像格式包括PNG、XCF和JPG公司。不透明格式包括可以只能由专用文字处理器、SGML或DTD和/或处理工具用于的XML通常不可用,以及机器生成的HTML,某些文字处理器为生成的PostScript或PDF仅用于输出目的。

    “扉页”对于印刷书籍而言,是指扉页本身,加上以下这些页面,以便清晰地保存材料此许可证要求出现在标题页中。对于中的工程没有标题页的格式,“标题页”是指靠近作品标题最显著外观的文本,在正文开头之前。

    “出版商”是指分发副本的任何个人或实体向公众公布文件。

    “标题XYZ”部分是指文件的命名子单元,其标题要么是精确的XYZ,要么在后面的括号中包含XYZ用另一种语言翻译XYZ的文本。(此处XYZ代表下面提到的特定节名称,例如“确认”,“专用”、“背书”或“历史”。)“保留标题”当您修改文档时,这意味着它仍然是根据此定义,“授权XYZ”部分。

    该文件可能在通知旁边包括保修免责声明声明本许可证适用于文档。这些保证免责声明被视为通过引用包含在本文件中许可,但仅限于免责保证:任何其他这些保证免责声明可能具有的含义是无效的不影响本许可的含义。

  3. 口头复制

    您可以在任何介质中复制和分发文档商业或非商业,前提是本许可版权声明,以及说明本许可证适用的许可声明文件的所有副本均已复制,并且您没有添加其他副本本许可的任何条件。您不能使用阻碍或控制读数或进一步读数的技术措施复制您制作或分发的副本。然而,您可以接受补偿以换取副本。如果你分配的数量足够大副本数量还必须遵循第3节中的条件。

    您也可以在上述相同条件下借出副本,以及你可以公开展示副本。

  4. 大量复制

    如果您发布打印副本(或在通常具有印刷封面),编号超过100,以及文档的许可证通知需要封面文本,您必须将封面上的副本清晰易读地载有所有这些封面文本:封面上的前盖文本和封面上的后盖文本封底。两个封盖也必须清楚易读地标识你是这些副本的出版商。前盖必须存在完整的标题,标题中的所有单词都同样突出,以及可见。您还可以在盖子上添加其他材料。复制时更改仅限于封面,只要保留文件标题,并满足这些条件,则可以进行处理在其他方面进行逐字复制。

    如果任一封面所需的文本太长而无法容纳你应该清楚地列出第一个(尽可能多)合理),并将其余部分继续放置在相邻的页。

    如果您发布或分发文档编号的不透明副本超过100,则必须包含机器可读的透明副本连同每个不透明副本,或在每个不透明拷贝中声明通用网络使用的计算机网络位置public可以使用公共标准网络协议进行下载文件的完整透明副本,无附加材料。如果您使用后一种方法,您必须采取合理谨慎的步骤,当您开始大量分发不透明副本时,以确保此透明副本将在规定的位置,直到您上次分发不透明的副本(直接或通过您的代理或零售商)向公众发布。

    我们要求您联系在重新分发大量副本之前,要做好文档准备他们有机会为您提供文档的更新版本。

  5. 修改

    您可以复制和分发文档的修改版本上述第2节和第3节的条件,前提是您发布此许可证下的修改版本版本填补了文档的角色,从而许可了分发并向拥有副本的人修改修改版本此外,您必须在修改版本中执行以下操作:

    1. 在标题页(以及封面,如果有)中使用不同的标题本文件和以前版本的文件(如果有,应在历史记录部分列出)。您可以使用与以前版本相同的标题如果该版本的原始发布者给予许可。
    2. 标题页上的列表,作为作者、一个或多个个人或实体负责修改内容的作者版本,以及至少五位主要作者文件(所有主要作者,如果少于五名),除非他们解除你的这个要求。
    3. 在标题页上注明修改版本,作为发布者。
    4. 保留文档的所有版权声明。
    5. 为您的修改添加适当的版权声明与其他版权声明相邻。
    6. 在版权声明之后立即包括许可通知授予公众使用修改版本的权限本许可证条款,格式见下文附录。
    7. 在该许可证通知中保留不变部分的完整列表以及文件许可通知中规定的封面文本。
    8. 包括本许可证的未更改副本。
    9. 保留标题为“历史”的部分,保留其标题,并添加至少说明标题、年份、新作者和标题页上给出的修改版本的发布者。如果文档中没有标题为“历史”的部分,请创建一个说明文档的标题、年份、作者和出版商然后添加一个描述修改的上句所述版本。
    10. 保留文档中给定的网络位置(如果有)公开访问文档的透明副本,同样文档中给出的早期版本的网络位置它是基于的。这些可以放在“历史”部分。您可以省略发布于的作品的网络位置文件本身之前至少四年,或如果原件它所指版本的发布者授予权限。
    11. 对于任何标题为“确认”或“奉献”的部分,保留节的标题,并在节中保留所有每个贡献者致谢的内容和语气和/或其中给出的献词。
    12. 保留文档的所有不变部分,他们的文字和标题都没有改变。章节编号或同等内容不被视为章节标题的一部分。
    13. 删除任何标题为“背书”的部分。这样一个部分可能不包括在修改版本中。
    14. 不要将任何现有章节重新命名为“背书”或与任何固定节的标题冲突。
    15. 保留任何保修免责声明。

    如果修改版包含新的正面内容部分或符合次要章节要求且不包含任何材料的附录从文件中复制,您可以选择指定部分或全部作为不变量。要执行此操作,请将其标题添加到修改版本的许可通知中的不变部分列表。这些标题必须与任何其他章节标题不同。

    您可以添加一个名为“背书”的部分,前提是它包含只不过是各种人对修改版本的背书例如,各方、同行评审声明或文本被组织批准为标准。

    您可以添加最多五个单词的段落作为Front-Cover Text,以及将多达25个单词作为背景文本传递到列表末尾修订版封面文本。只有一条通道正面覆盖文本和背面覆盖文本之一可以通过(或)添加通过任何一个实体作出的安排。如果文档已经包含同一封面的封面文本,该文本是您或通过您所代表的同一实体作出的安排,您不能再添加一个;但您可以在显式添加旧版本的前一个发布者的许可。

    本文档的作者和出版商不受本许可允许使用他们的名字进行宣传或断言或暗示认可任何修改版本。

  6. 合并文档

    您可以将该文件与根据本协议发布的其他文件合并许可,根据上文第4节中定义的条款进行修改版本,前提是在组合中包含所有所有原始文档的不变节,未修改,以及在它的许可证通知,并且您保留其所有保修免责声明。

    合并作品只需包含本许可证的一份副本,并且多个相同的不变部分可以替换为单个副本。如果有多个名称相同但不同的内容,通过在末尾加上括号中的原始名称该部分的作者或出版商(如果已知),或者一个唯一的数字。对列表中的章节标题进行相同的调整组合作品的许可证通知中的不变部分。

    在组合中,您必须组合标题为“历史”的任何部分在各种原始文件中,形成一个标题为“历史”;同样,将标题为“确认”的任何部分合并,以及任何标题为“奉献”的章节。您必须删除所有标题为“背书”的章节

  7. 文件的收集

    您可以制作一个由文档和其他文档组成的集合根据本许可证发布,并替换本各种文件中的许可证,其中包含一份副本集合,前提是您遵守本许可证的规则在所有其他方面逐字复制每个文件。

    您可以从这样的集合中提取单个文档,然后分发在本许可证下单独提供,前提是您插入本将许可证放入提取的文档中,并完全遵循此许可证有关该文件逐字复制的其他方面。

  8. 独立工程聚合

    文件或其衍生文件与其他单独文件的汇编以及在存储或如果版权汇编的结果并不是用来限制合法权利的超出个人作品允许的范围。当文档包含在集合中时,本许可证不会适用于不属于其自身的其他工程本文件的衍生作品。

    如果第3节的封面文本要求适用于文件副本,如果文件少于整个集合,文档的封面文本可以放在涵盖将文档置于聚合范围内,或如果文件为电子形式,则等同于保险单的电子版本。否则,它们必须出现在印刷封面上骨料。

  9. 翻译

    翻译被认为是一种修改,所以你可以根据第4节的条款分发文件的译文。用翻译替换不变节需要特殊的版权持有人的许可,但您可以包括除了这些不变节的原始版本。您可以包括本许可证的翻译,以及文件和任何保修免责声明,前提是您还包括本许可证的英文原件和原件这些通知和免责声明。如果双方意见不一致本许可证或通知的译文和原始版本或免责声明,以原始版本为准。

    如果文件中的一节标题为“确认”,“奉献”或“历史”,保存要求(第4节)其标题(第1节)通常需要更改实际标题。

  10. 终止

    您不得复制、修改、再授权或分发文档除非本许可证明确规定。任何尝试否则,对其进行复制、修改、再许可或分发是无效的,并且将自动终止您在本许可证下的权利。

    但是,如果您停止所有违反本许可证的行为,那么您的许可证从特定版权持有人处获得恢复(a)暂时,除非版权持有人明确且最终终止您的许可,以及(b)如果版权持有人未能在停止后60天。

    此外,您从特定版权持有人处获得的许可是如果版权持有人通知您通过一些合理的方式违反,这是你第一次收到违反本许可证的通知(对于任何作品)版权所有者,并且您在30天内纠正了违规行为你收到通知了。

    终止您在本节项下的权利并不终止根据以下规定从您处收到副本或权利的各方的许可本许可证。如果您的权利已终止且不是永久性的恢复,收到部分或全部相同材料的副本没有给你任何使用它的权利。

  11. 本许可证的未来修订

    自由软件基金会可能会发布新的修订版本GNU自由文档许可证。这么新的版本在精神上与当前版本相似,但可能在细节上有所不同,以解决新的问题或关注点。请参见https://www.gnu.org/licenses网站/.

    许可证的每个版本都有一个不同的版本号。如果文件规定许可证“或任何更高版本”适用于它,您可以选择遵循指定版本或自由软件基金会。如果文档未指定版本此许可证的编号,您可以选择任何已发布的版本(不是作为草案)。如果文件指定代理可以决定此的未来版本可以使用许可证,该代理人公开声明接受版本永久授权您为文件。

  12. 释放

    “大规模多作者协作网站”(或“MMC网站”)指任何发布可受版权保护的作品的万维网服务器为任何人编辑这些作品提供了显著的工具。A类任何人都可以编辑的公共wiki就是这样一个服务器的例子。A类“大规模多作者合作”(或“MMC”)包含在网站是指在MMC上发布的任何受版权保护的作品现场。

    “CC-BY-SA”是指知识共享署名共享3.0非营利组织Creative Commons Corporation发布的许可主要营业地位于旧金山的公司,加利福尼亚州,以及该许可证的未来版权版本由同一组织发布。

    “合并”是指发布或重新发布整个文件或作为另一文件的一部分。

    如果MMC根据本协议获得许可,则其“有资格重新获得许可”许可证,以及根据本许可证首次发布的所有作品除MMC之外的其他地方,并随后并入整体或部分进入MMC,(1)没有封面文本或不变部分,和(2)因此在2008年11月1日之前合并。

    MMC网站的运营商可以重新发布网站中包含的MMC在2009年8月1日之前的任何时间在同一地点根据CC-BY-SA,前提是MMC有资格重新获得许可。

附录:如何将此许可证用于您的文档

要在您编写的文档中使用本许可证,请包括文件中的许可,并将以下版权和标题页后面的许可证通知:

版权(C)  你的名字.授予复制、分发和/或修改本文件的权限根据GNU免费文档许可证1.3版的条款或自由软件基金会发布的任何更新版本;没有不变节,没有前覆盖文本,也没有后覆盖文本。许可证副本包含在标题为“GNU”的部分中免费文档许可证“”。

如果有固定节、前覆盖文本和后覆盖文本,将“with…Texts.”行替换为:

不变部分为列出他们的标题,使用Front-Cover文本正在列表、和背面文本存在列表.

如果你有没有封面文字的不变部分,或其他一些三者的结合,将这两个备选方案合并以适应情况。

如果您的文档包含程序代码的重要示例,我们建议根据您的选择并行发布这些示例自由软件许可,如GNU通用公共许可,允许在自由软件中使用它们。


下一步:,上一个:,向上:顶部  [目录][索引]

概念索引

跳转到:A类 C类 D类 F类 H(H)  M(M) N个 O(运行) R(右)  T型 U型 W公司 
索引条目 章节

A类
AIX(AIX): 支持的平台

C类
命令行: 调用gss
编译应用程序: 构建源代码
贡献: 贡献

D类
Debian公司: 支持的平台
Debian公司: 支持的平台
下载: 下载和安装

F类
FDL、GNU免费文档许可证: GNU免费文档许可证
自由BSD: 支持的平台
未来目标: 计划的功能

H(H)
黑客攻击: 贡献
标题文件: 标题
HP-UX系列: 支持的平台

安装: 下载和安装
调用全球供应链: 调用gss
IRIX公司: 支持的平台

M(M)
Mandrake公司: 支持的平台
机构状态代码: 错误处理
内存分配失败: 内存不足处理
摩托罗拉Coldfire: 支持的平台

N个
网络BSD: 支持的平台

O(运行)
OpenBSD(打开BSD): 支持的平台
内存不足处理: 内存不足处理

R(右)
RedHat公司: 支持的平台
RedHat公司: 支持的平台
RedHat公司: 支持的平台
RedHat高级服务器: 支持的平台
报告Bug: 错误报告

Solaris公司: 支持的平台
状态代码: 错误处理
SuSE公司: 支持的平台
SuSE Linux: 支持的平台

T型
任务清单: 计划的功能
Tru64系列: 支持的平台

U型
uClibc公司: 支持的平台
uClinux公司: 支持的平台

W公司
窗户: 支持的平台

跳转到:A类 C类 D类 F类 H(H)  M(M) N个 O(运行) R(右)  T型 U型 W公司 

上一页:,向上:顶部  [目录][索引]

API索引

跳转到:G公司 
索引条目 章节

G公司
全球供应链: 调用gss
gss_accept_sec_上下文: 上下文级例程
gss获得红色: 凭据管理
gss_add_cred: 凭据管理
gss添加ID设置成员: 其他例程
GSS呼叫错误: 错误处理
gss _规范化名称: 名称操纵
gss _检查_版本: 扩展GSS API
gss_compare_name(gss_compare_name): 名称操纵
gss上下文时间: 上下文级例程
gss _创建_清空_ ID _集: 其他例程
gss脱胶囊剂: 其他例程
gss删除sec内容: 上下文级例程
gss显示名称: 名称操纵
gss显示状态: 其他例程
gss _重复_名称: 名称操纵
gss _封装_令牌: 其他例程
GSS_错误: 错误处理
gss导出名称: 名称操纵
gss导出sec内容: 上下文级例程
gss _获取_ mic: Per-Message例程
gss导入名称: 名称操纵
gss_import_sec_context(导入上下文): 上下文级例程
gss指示技术: 其他例程
gss_init_sec_上下文: 上下文级例程
gss查询内容: 上下文级例程
gss查询红色: 凭据管理
gss_inquire_cred_by_mech公司: 凭据管理
gss _查询_技术_名称: 名称操纵
gss查询技术名称: SASL GS2例程
gss_inquire_names_for_mech公司: 名称操纵
gss _查询_姓名_技术: SASL GS2例程
gss _ oid _相等: 其他例程
gss_process_context标记: 上下文级例程
gss释放缓冲区: 其他例程
gss释放红色: 凭据管理
gss发布名称: 名称操纵
gss释放ID集: 其他例程
GSS_ROUTINE_ERROR(GSS_路由_错误): 错误处理
GSS_补充信息: 错误处理
GSS_S_。。。: 错误处理
gss_test_oid_set_member成员: 其他例程
gss展开: 每条消息的例程
gss _用户确认: 扩展GSS API
gss验证mic: Per-Message例程
gss包裹: 每条消息的例程
包装尺寸极限: 上下文级例程

跳转到:G公司