From: Lukasz Pawelczyk Date: Tue, 31 May 2016 12:43:26 +0000 (+0200) Subject: yaca_key_import() support for PKCS8 X-Git-Tag: accepted/tizen/common/20160810.161523~85 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c409e9b222dcd9f8febc1331bfcf41d50d9449d9;p=platform%2Fcore%2Fsecurity%2Fyaca.git yaca_key_import() support for PKCS8 Change-Id: I96c07efd6a86f61522871179d29e38abf6fe60ef --- diff --git a/src/key.c b/src/key.c index dd7453d..3813941 100755 --- a/src/key.c +++ b/src/key.c @@ -239,7 +239,7 @@ out: bool check_import_wrong_pass() { - unsigned long err = ERR_peek_last_error(); + unsigned long err = ERR_peek_error(); unsigned long err_bad_password_1 = ERR_PACK(ERR_LIB_PEM, PEM_F_PEM_DO_HEADER, PEM_R_BAD_DECRYPT); unsigned long err_bad_password_2 = ERR_PACK(ERR_LIB_EVP, EVP_F_EVP_DECRYPTFINAL_EX, EVP_R_BAD_DECRYPT); @@ -326,6 +326,15 @@ int import_evp(yaca_key_h *key, else { if (pkey == NULL && !wrong_pass) { BIO_reset(src); + pkey = d2i_PKCS8PrivateKey_bio(src, NULL, cb, (void*)password); + if (check_import_wrong_pass()) + wrong_pass = true; + private = true; + ERROR_CLEAR(); + } + + if (pkey == NULL && !wrong_pass) { + BIO_reset(src); pkey = d2i_PrivateKey_bio(src, NULL); private = true; ERROR_CLEAR();