2015-03-26 5 views
1

Я играю с openssl 1.0.2a - в частности, поддержка CMS для ECC. В качестве теста я делаю простой шифровать и расшифровывать. Я привел пример RSA в качестве известного хорошего рабочего примера/теста на здравомыслие. Пример ECC не работает.openssl CMS с ECDH EnvelopedData

Любые идеи? ТИА.

./openssl version 
OpenSSL 1.0.2a 19 Mar 2015 

echo -n 12345678123456781234567812345678 > sess.txt # 32 byte plaintext 

#RSA works 
./openssl genrsa -out rsa.key 2048 
./openssl req -x509 -new -key rsa.key -out rsa.crt 
./openssl cms -encrypt -in sess.txt -out rsaencsess.bin -outform PEM rsa.crt 
./openssl cms -decrypt -in rsaencsess.bin -out rsadecsess.txt -inform PEM -inkey rsa.key 
#AOK. 

#EC fails 
    ./openssl ecparam -name prime192v1 -genkey -out ecc.key 
    ./openssl req -x509 -new -key ecc.key -out ecc.crt 
    ./openssl cms -encrypt -in sess.txt -out encsess.bin -outform PEM ecc.crt 
    ./openssl cms -decrypt -in encsess.bin -out decsess.txt -inform PEM -inkey ecc.key 
Error decrypting CMS structure 
error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:529: 
+0

Интересно, что же выход выглядеть не волнуйтесь, я не собираюсь, чтобы расшифровать зашифрованный текст, защищенный 192 битным ключом: P –

+0

OpenSSL Стив Хенсон решен его следующим образом: «RSA может расшифровать без зная сертификат, но в настоящее время EC не может. Поэтому попробуйте включить параметр -recip ecc.crt при расшифровке. » – IgorStojanovic

+0

Вы можете добавить это как ответ. Немного странно, хотя и идентификатор param, и открытый ключ являются частью структуры закрытого ключа. –

ответ

1

OpenSSL Стив Хенсон разрешил его следующим образом: «RSA может расшифровать, не зная сертификат, но в настоящее время ЕС не может так попробовать, включая опцию -recip ecc.crt при расшифровке

это теперь работает:.

./openssl ecparam -name prime192v1 -genkey -out ecc.key 
./openssl req -x509 -new -key ecc.key -out ecc.crt 
./openssl cms -encrypt -in sess.txt -out encsess.bin -outform PEM ecc.crt 
./openssl cms -decrypt -in encsess.bin -out decsess.txt -inform PEM -inkey ecc.key -recip ecc.crt # NOTE "-recip ecc.crt" is currently required else it won't work!