面向开发者的 Oracle® Solaris 11 安全性指南

退出打印视图

更新时间: 2014 年 7 月
 
 

消息的签名和返回

此时,sign_server() 函数需要对消息进行签名。对消息进行签名需要将消息的消息完整性代码(即 MIC)返回到客户机。返回消息可证明消息已成功发送和展开。为了获取 MIC,sign_server() 将使用 gss_get_mic() 函数:

maj_stat = gss_get_mic(&min_stat, context, GSS_C_QOP_DEFAULT,
                            &msg_buf, &xmit_buf);

gss_get_mic()msg_buf 中查找该消息,生成 MIC,并将该 MIC 存储到 xmit_buf 中。然后,服务器会使用 send_token() 将该 MIC 发回到客户机。客户机会使用 gss_verify_mic() 来验证该 MIC。请参见Reading and Verifying a Signature Block From a GSS-API Client

最后,sign_server() 会执行一些清除操作。sign_server() 会使用 gss_release_buffer() 来释放 GSS-API 缓冲区 msg_bufxmit_buf。然后,sign_server() 会使用 gss_delete_sec_context() 来销毁上下文。