Я очень плохо знаком с криптографией и застрял на 2 дня с этой проблемой, надеюсь, вы мне поможете.
Я пытаюсь подписать строку дайджеста md5 закрытым ключом сертификата X509. Насколько я вижу, это прекрасно работает.
Теперь я пытаюсь вернуть эту строку, используя открытый ключ этого сертификата x509, но я не знаю, как это сделать.
Сначала я создал сертификат x509 и закрытый ключевой файл, используя OpenSSL:
openssl req -newkey rsa: 1024 -nodes -x509 -days 365 -out signer.pem
Вот пример кода, который я пробовал:
import M2Crypto
import hashlib
def empty_callback ():
return
# md5 hash of params
params = "0045KIABCDEFG"
m = hashlib.md5()
m.update(params)
md = m.digest()
print m.hexdigest()
M2Crypto.Rand.rand_seed (os.urandom (1024))
# sign md5 hash with private key
SignEVP = M2Crypto.EVP.load_key ('privkey.pem')
#Begin signing
SignEVP.sign_init ()
#Tell it to sign our string
SignEVP.sign_update (md)
#Get the final result
StringSignature = SignEVP.sign_final ()
#print the final result
print StringSignature.encode ('base64')
Я получаю открытый ключ с этим, но тогда не знаю, как его использовать.
objX509 = M2Crypto.X509.load_cert ('signer.pem')
PubKey = objX509.get_pubkey ()
Я только нашел, как проверить подписанную строку, но это не то, что мне нужно.
Есть ли способ вернуть исходный дайджест md5 (md) с помощью signer.pem (открытый ключ)?
Я использую M2Cyrpto-0.21.1 и OpenSSL 1.0.0d и программирую на Python27, 32 бита на Windows7.
С уважением,
Фалько