在 GnuPG 中从 C/C++ 和参数生成公钥/私钥
Generating public/private keys in GnuPG from C/C++ and arguments
新版本的 GnuPG 2.1 在库 GPGme 中具有函数 "gpgme_op_createkey"。较旧的是:
gpgme_op_genkey(mContext, def.c_str(), NULL, NULL);
它接受以下格式的数据:
char *def = "<GnupgKeyParms format="internal"> n"
" Key-Type: default n"
" Subkey-Type: default n"
" Name-Real: Joe Tester3 n"
" Name-Comment: with stupid passphrase n"
" Name-Email: joe3@foo.bar n"
" Expire-Date: 0 n"
" Passphrase: abc n"
" </GnupgKeyParms>";
但是,较新版本的 GnuPG 接受的参数更少:
gpgme_op_createkey(gpgme_ctx_t ctx, const char *userid, const char *algo, unsigned long reserved, unsigned long expires,
gpgme_key_t certkey, unsigned int flags);
如何向较新的函数提供"gpgme_op_createkey",例如密码? 子项类型?
另外,如果是 ECC,我该如何选择使用哪条曲线?例如"ed25519"?
您只能通过回调机制设置密码。您必须将引脚输入模式设置为环回,然后设置密码回调。
至于子项类型,这不会公开。GnuPG 将根据能力做出决定。如果要控制它,请生成仅具有"认证"功能的密钥,然后使用"gpgme_op_createsubkey"添加显式子项。
曲线可以通过算法名称设置。如果你想要ECC,你可以使用"future-default"作为算法名称。这将创建一个 cv25519/ed25519 密钥。
gpgme_op_createkey最终使用"gpg --quick-gen-key",因此您可能需要阅读该命令的手册页。
请注意,对于 c++,您还可以使用 GPGME 的 c++ 语言绑定,这有助于内存管理,并且更适合 c++ 黑客使用。
相关文章:
- 如何在openssl-ecc中获取十六进制格式的私钥
- 如何在C++中使用X509证书模在令牌中查找私钥
- 私钥解密代码使用公共接口说明符到 BSAFE 库 v6.0?
- 从字符串 Crypto++ 导入 RSA 公钥/私钥
- 将私钥和证书存储在C++/OpenSSL中
- 区块链超级账本私钥错误
- 博坦加载现有的 RSA 私钥
- 一代 RSA-2048 密钥(公钥和私钥)
- 在 SSH 上的公钥-私钥身份验证上的 libcurl 实现
- 在 GnuPG 中从 C/C++ 和参数生成公钥/私钥
- 无法在 OpenSSL 中设置公钥/私钥
- 我将如何从字符串/字节数组或任何其他容器加载私钥/公钥
- 通过OpenSSL(c++)以XML(w3c)格式保存RSA公钥和私钥
- 公钥-私钥加密教程
- 如何使用openssl-lib-pem_read从字符串中读取公钥/私钥
- DSA公钥大于私钥
- 我可以从智能卡的密钥容器中获得公钥/私钥对吗?
- 使用libopenssl从私钥转储公钥
- 如何读取RSA公钥和私钥到单个RSA结构
- 从RSA密钥对变量中分离公钥和私钥