我在使用python和M2Crypto作爲動態引擎加載Engine PKCS#11時遇到了問題。我正在嘗試訪問Aladdin USB eToken。正確的方式來清理動態引擎,並可以加載兩次?
下面是我的Python代碼的重要步驟:
dynamic = Engine.load_dynamic_engine("pkcs11", "/usr/local/ssl/lib/engines/engine_pkcs11.so")
pkcs11 = Engine.Engine("pkcs11")
pkcs11.ctrl_cmd_string("MODULE_PATH", "/usr/lib/libeTPkcs11.so")
pkcs11.engine_init_custom() # initialize engine with custom M2Crypto patch
# next few steps which I deleted pass password and grab key & cert off token
Engine.cleanup()
這工作正常第一次遇到這種方法被運行。第二次,加載動態引擎時失敗(請參閱下面的錯誤)。
回溯(最近呼叫的最後一個): 文件「」,第1行,在? 文件「/usr/local/lib/python2.4/site-packages/M2Crypto/Engine.py」,第98行,在load_dynamic_engine中 e.ctrl_cmd_string(「LOAD」,無) 文件「/ usr/local/lib /python2.4/site-packages/M2Crypto/Engine.py「,第38行,在ctrl_cmd_string中 raise EngineError(Err.get_error()) M2Crypto.Engine.EngineError:4002:error:260B606D:engine routines:DYNAMIC_LOAD:init失敗:eng_dyn.c:521:
是否無法在python會話中兩次加載引擎?我是否缺少某種引擎清理/刪除? OpenSSL文檔討論engine_finish(),但我不認爲M2Crypto提供了這個功能。有沒有方法可以判斷引擎是否已經加載?
謝謝!
似乎M2Crypto需要修補以使ENGINE_finish()和ENGINE_free()可用。 – Becky