0

PythonとM2Cryptoを使用して動的エンジンとしてEnginePKCS#11をロードする際に問題が発生しました。AladdinUSBeTokenにアクセスしようとしています。

これが私の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() 

これは、このメソッドを初めて実行するときに正常に機能します。2回目は、動的エンジンのロード時に失敗します(以下のエラーを参照)。

トレースバック(最後の最後の呼び出し):ファイル ""、1行目?ファイル"/usr/local/lib/python2.4/site-packages/M2Crypto/Engine.py"、行98、load_dynamic_engine e.ctrl_cmd_string( "LOAD"、None)ファイル "/ 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:engineroutines:DYNAMIC_LOAD:init failed:eng_dyn.c :521:

Pythonセッションでエンジンを2回ロードすることは不可能ですか?ある種のエンジンのクリーンアップ/削除がありませんか?OpenSSLのドキュメントではengine_finish()について説明していますが、M2Cryptoがそれを提供しているとは思いません。エンジンがすでにロードされているかどうかを確認する方法はありますか?

ありがとう!

4

2 に答える 2

0

M2Cryptoには、svnトランクバージョンで使用可能なENGINE_finishとENGINE_freeがあります。Engineクラスにはとinitメソッドfinishがあり、インスタンスが削除されるとfree'dになります。やってみてもらえますか?問題が発生した場合は、次のリリースで修正する時間がまだあります。

于 2010-03-24T04:30:04.320 に答える
0

私の python コードは、コメント セクションよりもきれいに表示されました。pkcs11.finish() メソッドは、M2Crypto リビジョン 723 でセグメンテーション違反を引き起こします。

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.init()
# next few steps which I deleted pass password and grab key & cert off token
pkcs11.finish()                                   
Engine.cleanup() 

私が何か間違ったことをしているのか、それとも M2Crypto コードに問題があるのか​​ について誰かアドバイスがありますか?

于 2010-04-06T18:05:40.230 に答える