JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 10 开发者安全性指南     Oracle Solaris 10 1/13 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  面向开发者的 Oracle Solaris 安全(概述)

2.  开发特权应用程序

3.  编写 PAM 应用程序和服务

4.  编写使用 GSS-API 的应用程序

5.  GSS-API 客户机示例

GSSAPI 客户机示例概述

GSSAPI 客户机示例结构

运行 GSSAPI 客户机示例

GSSAPI 客户机示例:main() 函数

打开与服务器的连接

建立与服务器的安全上下文

将服务名称转换为 GSS-API 格式

为 GSS-API 建立安全上下文

客户端上的各种 GSSAPI 上下文操作

包装和发送消息

读取和验证 GSS-API 客户机中的签名块

删除安全上下文

6.  GSS-API 服务器示例

7.  编写使用 SASL 的应用程序

8.  Oracle Solaris 加密框架介绍

9.  编写用户级加密应用程序和提供者

10.  使用智能卡框架

A.  基于 C 的 GSS-API 样例程序

B.  GSS-API 参考

C.  指定 OID

D.  SASL 示例的源代码

E.  SASL 参考表

F.  打包和签署加密提供者

词汇表

索引

读取和验证 GSS-API 客户机中的签名块

现在,gss-client 程序可以测试已发送消息的有效性。服务器会针对已发送的消息返回 MIC。可以通过 recv_token() 检索此消息。

然后,使用 gss_verify_mic() 函数验证消息的签名(即 MIC)。gss_verify_mic() 用于将收到的 MIC 与未包装的原始消息进行比较。收到的 MIC 来自服务器的令牌,该令牌存储在 out_buf 中。来自未包装版本的消息的 MIC 存放在 in_buf 中。如果这两个 MIC 匹配,系统便会验证此消息。客户机随后会为所收到的令牌释放缓冲区 out_buf

以下源代码说明了读取和验证签名块的过程。

示例 5-7 gss-client 示例-读取和验证签名块

/* Read signature block into out_buf */
     if (recv_token(s, &out_buf) < 0) {
          (void) close(s);
          (void) gss_delete_sec_context(&min_stat, &context, GSS_C_NO_BUFFER);
          return -1;
     }

/* Verify signature block */
     maj_stat = gss_(&min_stat, context, &in_buf,
                               &out_buf, &qop_state);
     if (maj_stat != GSS_S_COMPLETE) {
          display_status("verifying signature", maj_stat, min_stat);
          (void) close(s);
          (void) gss_delete_sec_context(&min_stat, &context, GSS_C_NO_BUFFER);
          return -1;
     }
     (void) gss_release_buffer(&min_stat, &out_buf);

     if (use_file)
         free(in_buf.value);

     printf("Signature verified.\n");