Solaris 开发者安全性指南

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

作为样例程序,gss-client 所执行的一些功能用于说明。以下源代码不是执行基本任务所必需的,之所以提供它是为了说明以下其他操作:

这些操作的源代码如以下示例所示。


注 –

此示例的源代码也可以通过 Sun 下载中心获取。请访问 http://www.sun.com/download/products.xml?id=41912db5



示例 5–5 gss-client:call_server() 建立上下文

/* Save and then restore the context */

     maj_stat = gss_export_sec_context(&min_stat,

                                           &context,

                                           &context_token);

     if (maj_stat != GSS_S_COMPLETE) {

             display_status("exporting context", maj_stat, min_stat);

             return -1;

     }

     maj_stat = gss_import_sec_context(&min_stat,

                                           &context_token,

                                           &context);

     if (maj_stat != GSS_S_COMPLETE) {

        display_status("importing context", maj_stat, min_stat);

        return -1;

     }

     (void) gss_release_buffer(&min_stat, &context_token);



     /* display the flags */

     display_ctx_flags(ret_flags);



     /* Get context information */

     maj_stat = gss_inquire_context(&min_stat, context,

                                    &src_name, &targ_name, &lifetime,

                                    &mechanism, &context_flags,

                                    &is_local,

                                    &is_open);

     if (maj_stat != GSS_S_COMPLETE) {

         display_status("inquiring context", maj_stat, min_stat);

         return -1;

     }



     if (maj_stat == GSS_S_CONTEXT_EXPIRED) {

     printf(" context expired\n");

         display_status("Context is expired", maj_stat, min_stat);

         return -1;

     }