首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gss_export_name返回一个空白

gss_export_name返回一个空白
EN

Stack Overflow用户
提问于 2013-12-14 04:33:07
回答 1查看 119关注 0票数 1

我在使用gss_export_name导出名称时遇到了问题,我认为一旦导出名称,我应该能够打印它,但我正在打开一个空白的、文字导出的名称:、导出的名称长度: 47。

这是我的密码

代码语言:javascript
复制
OM_uint32 major_status;
gss_cred_usage_t usage;
OM_uint32 lifetime;
gss_name_t inquired_name;
major_status = gss_inquire_cred(&minor_status, GSS_C_NO_CREDENTIAL, &inquired_name,
                             &lifetime, &usage, &oid_set);
gss_buffer_desc exported_name_buffer;
major_status = gss_export_name(&minor_status, inquired_name, &exported_name_buffer);
printf("EXPORTED NAME: %s, EXPORTED NAME LENGTH: %d\n",
       exported_name_buffer.value, exported_name_buffer.length);

为了清晰起见,我决定不包括检查,但我也要注意确保major_status总是== GSS_S_COMPLETE欣赏任何想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-17 20:52:32

不幸的是,gss_export_name的缓冲区输出是ASN.1数据结构,而不是可读的字符串。RFC 2743第3.2节。您需要跳过该结构的头,然后以依赖于机制的方式解析名称。一些GSS开发人员强烈建议这样做。例如,Openssh的gss补丁用于解析Kerberos名称。这是理论上正确的方法。然而,在实践中,使用gss_display_name和处理该调用的输出在实践中会产生更多的可移植结果,尽管它在多机制应用程序中可能会产生奇怪的结果。对于如何在GSS社区中处理这一问题,您将得到重要的争论。每个人都会同意,您应该使用gss_display_name来生成用于调试和日志的输出。问题是,如果要在访问控制列表上搜索名称,应该做什么。如果您可以直接使用gss_export_name的输出并进行二进制比较,那么就这样做。但是,如果需要与人输入的输入进行比较,我认为使用gss_display_name的输出更好,而其他人则认为解析gss_export_name输出更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20579702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档