Как проверить подпись ECDSA / SHA2 S-MIME с python? - PullRequest
2 голосов
/ 10 февраля 2010

Нам нужно выбрать между двумя схемами подписи:

  • подписи RSA / SHA2 S-MIME
  • ECDSA / SHA2 S-MIME подписи

Для этого наше программное обеспечение python должно поддерживать одну из этой схемы. В настоящее время по некоторым политическим причинам решение ECDSA является предпочтительным.

Поддерживается ли решение ECDSA каким-либо из крипто-модулей python (M2Crypto, ...), и у вас есть пример для этого?

Поддержка ECDSA кажется очень молодой даже для openssl.

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 12 февраля 2010

ECDSA поддерживается в M2Crypto , но при желании его можно отключить. Например, системы на базе Fedora поставляются с отключенной ECDSA в OpenSSL и M2Crypto. M2Crypto также имеет некоторую поддержку SMIME , но так как я не использовал его много, я не уверен, поможет ли это в этом случае. См. M2Crypto SMIME doc и SMIME модульные тесты , а также ec unit тесты .

0 голосов
/ 02 января 2017

Вы можете попробовать использовать пакет python ecdsa, используя Python3:

pip3 install ecdsa

Использование:

from ecdsa import SigningKey
sk = SigningKey.generate() # uses NIST192p
vk = sk.get_verifying_key()
sig = sk.sign(b"message")
vk.verify(sig, b"message") # True

Чтобы проверить существующую подпись с открытым ключом:

from ecdsa import VerifyingKey

message = b"message"
public_key = '7bc9c7867cffb07d3443754ecd3d0beb6c4a2f5b0a06ea96542a1601b87892371485fda33fe28ed1c1669828a4bb2514'
sig = '8eb2c6bcd5baf7121facfe6b733a7835d01cef3d430a05a4bcc6c5fbae37d64fb7a6f815bb96ea4f7ed8ea0ab7fd5bc9'

vk = VerifyingKey.from_string(bytes.fromhex(public_key))
vk.verify(bytes.fromhex(sig), message) # True

Пакет также совместим с Python 2

0 голосов
/ 10 февраля 2010

Криптография Ecliptic Curve (ECDSA), а также более распространенный RSA поддерживается библиотекой OpenSSL. Я рекомендую использовать мост pyOpenSSL .

...