M2Crypto:PKey是对公钥还是私钥的引用?

2024-09-29 01:34:47 发布

您现在位置:Python中文网/ 问答频道 /正文

在m2cryptopython包(python的OpenSSL包装器)的PKey类文档中,据说PKey是对公钥的引用。在

我的观点是,它是对私钥的引用,因为PKey类的init方法调用evp_PKey_new openssl函数,该函数从这个链接:http://linux.die.net/man/3/evp_pkey_new,应该为私钥结构分配一个新的引用!在

只有两种可能的解释:M2Crypto文档错误或者我报告的链接有错误的信息。在

有人能帮我找出真相吗?在


Tags: 方法函数文档newinit链接错误私钥
2条回答

OpenSSL文档不完整,EVP_PKEY_new()分配的EVP_PKEY结构用于存储私有公钥。键的类型由以后加载到结构中的内容决定。在

(例如,EVP_SealInit()和{}都采用EVP_PKEY参数)。在

EVP_PKEY_new的文档直接声明其用于存储私钥。从x509开始我就迷失了原来的海报foo.get_pubkey网站()只返回一个PKey执行副总裁实例,并将实例存储为pem显示私钥。我不能假装知道M2Crypto团队的意图,因为许多使用PKey的函数都没有文档记录。例如,一个x509请求对象有一个verify(self,pkey),但却没有告诉我pkey是什么类型的对象。同样的,或者任何文件。我和原作者一样困惑,因为我认为RSA至少有nn个术语 (e,n)#公钥 (d,n)#私钥

充其量我想到的是私钥 (d,n,p,q,dp,dq,qinv,t)式中 p和q是大素数dp和dq以及qinv是要做的额外系数 解密速度更快,t作为tolient函数。在

之所以应该在文档中明确区分,是因为有时您希望使用私钥(在签名的情况下)进行加密,以便其他每个人都可以通过使用公钥来进行验证。 h=散列值(m) sig=h^d(模式n) 只有知道d(私钥)的人才能创建签名。 验证由

h=信号(模式n)

如果这两个哈希匹配,您就知道消息是真实的。在

我的问题是Pkey执行副总裁声称代表一个公钥了吗 它的assign_rsa()方法声明它接受一个rsa密钥对(“我假设这意味着此时的私钥”。到目前为止,我发现的任何例子都只是为了创建一个自我认证的证书(包括M2Crypto自己的单元测试)。我没有看到任何测试会像我们在现实中看到的那样,接受第三方x509请求并用自己的ca证书和密钥对其进行签名。由于X509请求不包含私钥,因此单元测试无法帮助我弄清楚如何对通用csr进行签名。然而,单元测试示例运行良好,因为它是自签名的,并且签名者已经可以访问私钥。事实上,test-mkcert测试确实使用mkreq方法返回的私钥 生成x509请求。在

M2Crypto文档很混乱,因为它们使用这些术语 pk,pkey甚至pubkey可以互换。在

相关问题 更多 >