问题标签 [m2crypto]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4782 浏览

python - 如何使用特定的填充技术使用 M2Crypto 在 python 中签署文档?

我需要使用存储在 .pem 文件中的私钥在 python 中对一些文本进行数字签名。如今,M2Crypto 似乎是这样做的首选方式,所以这就是我正在使用的方式。我想我得到了大部分,但我对如何配置填充感到困惑。具体来说,我需要验证 iPhone 应用程序中的签名,使用如下调用kSecPaddingPKCS1SHA1和描述的填充方案:

要签名的数据是 SHA1 哈希。将完成标准 ASN.1 填充,以及底层 RSA 操作的 PKCS1 填充。

不是加密专家,我对这意味着什么只有一个模糊的概念。我试图查看一些 RFC,但发现它们难以理解。我看到 RSA 对象的加密/解密方法采用填充类型,但我没有看到与签名验证相关的任何类似内容。

任何帮助,尤其是代码方面的帮助,将不胜感激。

(在某种意义上,这是这个问题的反面。)


好的,下面给出的答案是正确的 AFAICT。以下代码使用填充方案为text在 iPhone 上验证生成一个签名。kSecPaddingPKCS1SHA1

(抱歉发表社论,但我可以说加密黑客是宇宙中最糟糕的文档作者吗?)

0 投票
2 回答
1955 浏览

java - Java 到 Python RSA

我正在尝试使用客户端上的库 Bouncy Castle J2ME 和另一方面的 Python M2Crypto 将字符串从 Java 加密到 Python。

一切都很好,我可以正确解密,但填充是问题。

M2Crypto lib(据我所知)只给了我这些填充方案: no_padding = 3 pkcs1_padding = 1 sslv23_padding = 2 pkcs1_oaep_padding = 4

而充气城堡 J2ME 只提供: NoPadding OAEPWithAndPadding PKCS5Padding SSL3Padding

所以,我可以在两者之间使用 NoPadding,但是解密后生成的字符串会充满混乱的字符。

我真的很想整理填充,但我不知道如何在填充方案之间进行转换/如果可能的话。

请帮我解决这个问题,它正在杀死我!

0 投票
1 回答
535 浏览

python - M2Crypto 的 set_client_CA_list_from_file() 和 load_verify_info() 有什么区别,你什么时候使用它们?

M2Crypto库在其SSL.Context 对象上有一些与 CA 相关的函数,但文档并不清楚何时使用某些函数以及为什么。事实上,几乎所有的文档都是“将 CA 证书加载到上下文中”,因此它们似乎都做同样的事情。

几个 同时使用and的示例,但也有其他类似的功能,如and 。set_client_CA_list_from_file()load_verify_info()load_client_ca()load_verify_locations()

我正在编写客户端和服务器部分。我应该使用哪些功能,为什么?他们具体做什么?

编辑:

浏览我看到的代码:

所以这有点帮助。这使我们归结为两个功能:set_client_CA_list_from_file()load_verify_locations(). 但我仍然不能完全区分两者之间的区别。

0 投票
3 回答
1405 浏览

xml - 使用 M2Crypto 从 xml 数据文件生成公钥进行签名验证

我有 xml 格式的 pub 密钥:

所以我尝试这样:

得到错误:

有任何想法吗?

0 投票
2 回答
2158 浏览

python - 制作 OpenSSL 密钥时为 commonName 放置什么?

我有一个应用程序框架,它在网络上的未命名主机之间以对等方式工作。我想让流量被加密,所以我用 M2Crypto 实现了一个设置,但我遇到了一个障碍。我不知道在创建证书时要为“commonName”写什么。它似乎想要一个域名,但运行它的计算机都没有。我只是将“temphost”作为 commonName,但显然这是一个重要参数。我在尝试测试时得到了这个:

M2Crypto.SSL.Checker.WrongHost:对等证书 commonName 与主机不匹配,预期为 127.0.0.1,得到 temphost

有没有办法概括 commonName?

0 投票
2 回答
1905 浏览

python - m2crypto 自定义证书验证

我需要在两个对等方之间建立加密连接,并且我需要对两者进行身份验证。两个对等点已经共享另一个对等点公钥的指纹(SHA256 哈希)。我没有使用 X509 或 OpenPGP 密钥/证书,因为它们对于我的需要来说太大而笨重,而且它们不适合安全模型。

我正在尝试通过滥用其 x509 模型与 M2Crypto (不错的库)建立连接:

  • 给定 rsa 私钥,创建一个自签名的几乎为空的证书。

  • 连接到提供我的证书的其他对等方

  • 验证其他对等证书公钥指纹;

下面的代码安全吗?这是正确的吗?有没有办法做得更好(也许与其他图书馆)?我怀疑 OpenSSL 实际上没有使用证书公钥进行身份验证,因为我没有要求对证书进行任何验证。

我只需要使用由 der-encoded rsa 密钥认证的加密流,欢迎任何适用于 python 的免费软件解决方案。我更喜欢 M2Crypto,因为我更了解它,并且已经有一些代码在同一个项目中使用它。

这是我的代码(只是客户端对等,服务器应该类似):

提前感谢大家的回答和建议。

0 投票
2 回答
558 浏览

python - M2Crypto:load_dynamic_engine() 的 AttributeError

我正在使用 M2Crypto-0.20.2。我想使用 OpenSC 项目中的 engine_pkcs11 和 Aladdin PKI 客户端进行基于令牌的身份验证,通过 ssl 进行 xmlrpc 调用。

我正在尝试加载 PKCS#11 引擎以及 Aladdin 模块(请参见下面的代码)。但我得到一个错误: AttributeError: 'module' object has no attribute 'load_dynamic_engine'

根据 M2Crypto 文档,此功能应该可用。这是我正在阅读的文档: http ://www.heikkitoivonen.net/m2crypto/api/

谁能指出我正确的文档或帮助弄清楚如何加载引擎?

谢谢!

0 投票
6 回答
5913 浏览

python - 需要帮助使用 M2Crypto.Engine 访问 USB 令牌

我正在使用 M2Crypto-0.20.2。我想使用 OpenSC 项目中的 engine_pkcs11 和 Aladdin PKI 客户端进行基于令牌的身份验证,通过 ssl 进行 xmlrpc 调用。

这是我收到的错误:

对于load_private_key(),应该传递什么作为第一个参数?M2Crypto 文档没有解释它。

加载引擎时我没有收到任何错误,但我不确定我是否正确加载它们。似乎引擎 ID 必须是特定名称,但我在任何地方都找不到该列表。 'dynamic'正在为我工​​作。

任何帮助,将不胜感激!

0 投票
2 回答
249 浏览

openssl - M2Crypto 引擎类方法中的“名称”是什么

以下 3 种引擎方法需要“名称”作为参数。

“名”究竟是什么?从示例中我发现它似乎是 USB 令牌的某种类型的插槽 ID。我如何找到身份证?

0 投票
3 回答
1942 浏览

python - 如何使用 python 验证 ECDSA/SHA2 S-MIME 签名?

我们需要在两种签名方案之间进行选择:

  • RSA/SHA2 S-MIME 签名
  • ECDSA/SHA2 S-MIME 签名

为此,我们的 python 软件需要支持这种方案之一。目前,出于某些政治原因,ECDSA 解决方案更受青睐。

任何 python 加密模块(M2Crypto,...)都支持 ECDSA 解决方案吗?你有例子吗?

即使对于 openssl,ECDSA 支持似乎也很年轻。

提前致谢