c++ - 使用 C/C++ 访问 OS X 钥匙串(keychain)

标签 c++ c macos keychain

我正在尝试编写一个简单的测试应用程序来访问 OS X 钥匙串(keychain)。使用 C/C++ 添加/更新/删除条目。我只是测试是否可以在我们拥有的更大的 C/C++ 代码库中使用它,我们需要安全的 secret 存储,因此需要语言要求。

我查阅了 Apple 对此的 API,但大部分都是 Objective-C 的。有没有人知道的解决方案?我唯一能找到的是Apple's Security tool这看起来很旧,并且不确定 API 是否仍然受支持。

提前致谢。

最佳答案

展示如何使用 C: 将密码添加到钥匙串(keychain)的最小示例

#include <CoreFoundation/CoreFoundation.h>
#include <Security/Security.h>

int main(int argc, const char* argv[]) {
    CFStringRef keys[3];
    keys[0] = kSecClass;
    keys[1] = kSecAttrAccount;
    keys[2] = kSecValueData;

    CFTypeRef values[3];
    values[0] = kSecClassGenericPassword;
    values[1] = CFSTR("accountname");
    values[2] = CFSTR("password");

    CFDictionaryRef query;
    query = CFDictionaryCreate(kCFAllocatorDefault, (const void**) keys, (const void**) values, 3, NULL, NULL);

    OSStatus result = SecItemAdd(query, NULL);

    printf("%d", result);

    return 0;
}

关于c++ - 使用 C/C++ 访问 OS X 钥匙串(keychain),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58828239/

相关文章:

python - 在多线程 C 应用程序中嵌入 python

c - int * p 和 int p* 有什么区别?

cocoa - 如何以编程方式允许访问我的应用程序的钥匙串(keychain)?

c++ - 为什么我不能捕捉到这个异常?

c++ - 我们可以为模板特化引入别名吗?

c++ - num++ 可以是 'int num' 的原子吗?

c - 资源获取和pthreads

c++ - 在 `if constexpr` block 内声明的变量范围

macos - Mac OS X 上链接库的默认搜索目录是什么

python - 在 MacOS 上创建 conda 环境失败 : ResolvePackageNotFound