Linux® 密钥保留服务是在 Linux 2.6 中引入的,这是在 Linux 平台上处理身份验证、密码学、跨域用户映射和其他安全问题的出色的新方法。了解 Linux 密钥保留服务的组件,并通过一个示例应用程序了解它的使用方法。
简要介绍见:
本文主要讲关于keyutils的编程方法,解决在使用keyutils过程中出现的问题.
问题1:
使用keyutils时,
.c或.cpp中包含
#include
若你的工程为C的,这样子没有问题,
若c++的,那会出现undefined reference add_key等
原因:libkeyutils.so为C库
在C++中,必须按以下的进程操作
#ifdef __cplusplus
extern "C" {
#endif
#include
#ifdef _cplusplus
}
#endif
即可以解决问题.
问题2:
在Makefile中
加入
LIB += -lkeyutils
问题3:
一定要初始化keyutils库
具体方法如下:
int rc = 0;
rc = keyctl(KEYCTL_LINK,KEY_SPEC_USER_KEYRING,
KEY_SPEC_SESSION_KERING);
只有此处调用成功后,
才能调用
add_key("user",...);
否则,即使add_key成功,最后调用request_key也会失败,
找不到才加入到keyring中的KEY.
在内核中调用request_key也会失败,
返回NOKEY.
关于keyring的使用实例,eCryptfs中有使用它.
查看当前keyring情况,
可以使用
cat /proc/keys
查看当前keyring的个数.