Solaris 开发者安全性指南

SASL 接口摘要

下表提供了一些 SASL 接口的简要说明。

表 E–1 通用于客户机和服务器的 SASL 函数

函数 

说明 

sasl_version 

获取 SASL 库的版本信息。 

sasl_done 

释放所有的 SASL 全局状态。 

sasl_dispose 

完成连接以后,释放 sasl_conn_t

sasl_getprop 

获取属性,例如用户名、安全层信息。 

sasl_setprop 

设置 SASL 属性。 

sasl_errdetail 

根据上次出现的连接错误生成字符串。 

sasl_errstring 

将 SASL 错误代码转换为字符串。 

sasl_encode 

使用安全层对要发送的数据进行编码。 

sasl_encodev 

对通过安全层传输的数据块进行编码。使用 iovec * 作为输入参数。

sasl_listmech 

创建可用机制的列表。 

sasl_global_listmech 

返回所有可能机制的数组。请注意,此接口已过时。 

sasl_seterror 

设置将由 sasl_errdetail() 返回的错误字符串。

sasl_idle 

配置 saslib 以便在空闲期间或网络往返期间执行计算。

sasl_decode 

对使用安全层接收的数据进行解码。 

表 E–2 仅限于基本 SASL 客户机的函数

函数 

说明 

sasl_client_init 

最初调用一次,以装入和初始化客户机插件。 

sasl_client_new 

初始化客户机连接。设置 sasl_conn_t 上下文。

sasl_client_start 

选择连接机制。 

sasl_client_step 

执行一个验证步骤。 

表 E–3 基本的 SASL 服务器函数(客户机可选)

函数 

说明 

sasl_server_init 

最初调用一次,以装入和初始化服务器插件。 

sasl_server_new 

初始化服务器连接。设置 sasl_conn_t 上下文。

sasl_server_start 

开始验证交换。 

sasl_server_step 

执行一个验证交换步骤。 

sasl_checkpass 

检查纯文本口令短语。 

sasl_checkapop 

检查 APOP 质询/响应。使用类似于 CRAM-MD5 机制的伪 APOP 机制(可选)。请注意,此接口已过时。 

sasl_user_exists 

检查用户是否存在。 

sasl_setpass 

更改口令。(可选)添加用户项。 

sasl_auxprop_request 

请求辅助属性。 

sasl_auxprop_getctx 

获取连接的辅助属性上下文。 

表 E–4 用于配置基本服务的 SASL 函数

函数 

说明 

sasl_set_alloc 

指定内存分配函数。请注意,此接口已过时。 

sasl_set_mutex 

指定互斥函数。请注意,此接口已过时。 

sasl_client_add_plugin 

添加客户机插件。 

sasl_server_add_plugin 

添加服务器插件。 

sasl_canonuser_add_plugin 

添加用户标准化插件。 

sasl_auxprop_add_plugin 

添加辅助属性插件。 

表 E–5 SASL 实用程序函数

函数 

说明 

sasl_decode64 

使用 base64 解码。 

sasl_encode64 

使用 base64 编码。 

sasl_utf8verify 

验证字符串是否为有效的 UTF-8。 

sasl_erasebuffer 

删除与安全性相关的缓冲区或口令。 实现可能会使用阻止恢复的删除逻辑。 

表 E–6 SASL 属性函数

函数 

说明 

prop_clear()

清除值和(可选)来自属性上下文的请求 

prop_dispose()

释放属性上下文 

prop_dup()

创建新的 propctx,以复制现有 propctx 的内容

prop_erase()

删除属性的值 

prop_format()

将请求的属性名称格式化为字符串 

prop_get()

从上下文中返回 propval 结构的数组

prop_getnames()

填充 struct propval 的数组(在给定属性名称列表时)

prop_new()

创建属性上下文 

prop_request()

向请求中添加属性名称 

prop_set()

向上下文中添加属性值 

prop_setvals()

为属性设置值 

sasl_auxprop_getctx()

获取连接的辅助属性上下文 

sasl_auxprop_request()

请求辅助属性 

表 E–7 回叫数据类型

回叫 

说明 

sasl_getopt_t 

获取选项值。客户机和服务器均可使用。 

sasl_log_t 

记录消息处理程序。客户机和服务器均可使用。 

sasl_getpath_t 

获取用于搜索机制的路径。客户机和服务器均可使用。 

sasl_verifyfile_t 

验证由 SASL 使用的文件。客户机和服务器均可使用。 

sasl_canon_user_t 

用户名标准化函数。客户机和服务器均可使用。 

sasl_getsimple_t 

获取用户和语言列表。仅由客户机使用。 

sasl_getsecret_t 

获取验证机密。仅由客户机使用。 

sasl_chalprompt_t 

显示质询和响应提示。仅由客户机使用。 

sasl_getrealm_t 

获取验证领域。仅由客户机使用。 

sasl_authorize_t 

授权策略回叫。仅由服务器使用。 

sasl_server_userdb_checkpass_t 

验证纯文本口令。仅由服务器使用。 

sasl_server_userdb_setpass_t 

设置纯文本口令。仅由服务器使用。 

表 E–8 SASL 头文件

头文件 

注释 

sasl/saslplug.h

 

sasl/sasl.h

开发插件时需要此文件 

sasl/saslutil.h

 

sasl/prop.h

 

表 E–9 SASL 返回代码:一般

返回代码 

说明 

SASL_BADMAC 

完整性检查失败 

SASL_BADVERS 

机制版本之间不匹配 

SASL_BADPARAM 

提供的参数无效 

SASL_BADPROT 

错误的协议,取消操作 

SASL_BUFOVER 

缓冲区溢出 

SASL_CONTINUE 

验证中需要其他步骤 

SASL_FAIL 

一般性失败 

SASL_NOMECH 

不支持机制 

SASL_NOMEM 

内存不足,无法完成操作 

SASL_NOTDONE 

无法请求信息,直到以后交换时才能实现 

SASL_NOTINIT 

未初始化 SASL 库 

SASL_OK 

成功的结果 

SASL_TRYAGAIN 

瞬态失败,例如弱密钥 

表 E–10 SASL 返回代码:仅限客户机

函数 

说明 

SASL_BADSERV 

服务器无法执行相互验证步骤 

SASL_INTERACT 

需要用户交互 

SASL_WRONGMECH 

机制不支持请求的功能 

表 E–11 SASL 返回代码:仅限服务器

函数 

说明 

SASL_BADAUTH 

验证失败 

SASL_BADVERS 

版本与插件不匹配 

SASL_DISABLED 

帐户已被禁用 

SASL_ENCRYPT 

使用机制时需要加密 

SASL_EXPIRED 

口令短语已过期,需要重置 

SASL_NOAUTHZ 

授权失败 

SASL_NOUSER 

找不到用户 

SASL_NOVERIFY 

用户存在,但没有检验器 

SASL_TOOWEAK  

对于此用户而言,机制太弱  

SASL_TRANS 

一次性使用纯文本口令即可为用户启用请求的机制 

SASL_UNAVAIL 

远程验证服务器不可用 

表 E–12 SASL 返回代码-口令操作

函数 

说明 

SASL_NOCHANGE 

请求的更改不需要 

SASL_NOUSERPASS 

不允许用户提供的口令 

SASL_PWLOCK 

口令短语已锁定 

SASL_WEAKPASS 

对于安全策略而言,口令短语太弱