X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=ctypescrypto%2Fengine.py;h=c2858e6ebd5b459a1dceac7eac99dc7d5be3388e;hb=336fbbd82a09469a7ac7d0eb850daa6a55f42669;hp=f05fcb0a49200e2d65149d9166983e6b024f05ab;hpb=8afcf4f352ef2f967adbe84837d4abc5e9b6ee0c;p=oss%2Fctypescrypto.git diff --git a/ctypescrypto/engine.py b/ctypescrypto/engine.py index f05fcb0..c2858e6 100644 --- a/ctypescrypto/engine.py +++ b/ctypescrypto/engine.py @@ -1,28 +1,39 @@ -from ctypes import * +""" +engine loading and configuration +""" +from ctypes import c_void_p, c_char_p, c_int from ctypescrypto import libcrypto from ctypescrypto.exception import LibCryptoError -default=None + +__all__ = ['default', 'set_default'] + +default = None def set_default(engine): - global default - e=libcrypto.ENGINE_by_id(engine) - if e is None: - # Try load engine - e = libcrypto.ENGINE_by_id("dynamic") - if e is None: - raise LibCryptoError("Cannot get 'dynamic' engine") - if not libcrypto.ENGINE_ctrl_cmd_string(e,"SO_PATH",engine,0): - raise LibCryptoError("Cannot execute ctrl cmd SO_PATH") - if not libcrypto.ENGINE_ctrl_cmd_string(e,"LOAD",None,0): - raise LibCryptoError("Cannot execute ctrl cmd LOAD") - if e is None: - raise ValueError("Cannot find engine "+engine) - libcrypto.ENGINE_set_default(e,c_int(0xFFFF)) - default=e + """ + Loads specified engine and sets it as default for all + algorithms, supported by it + """ + global default + eng = libcrypto.ENGINE_by_id(engine) + if eng is None: + # Try load engine + eng = libcrypto.ENGINE_by_id("dynamic") + if eng is None: + raise LibCryptoError("Cannot get 'dynamic' engine") + if not libcrypto.ENGINE_ctrl_cmd_string(eng, "SO_PATH", engine, 0): + raise LibCryptoError("Cannot execute ctrl cmd SO_PATH") + if not libcrypto.ENGINE_ctrl_cmd_string(eng, "LOAD", None, 0): + raise LibCryptoError("Cannot execute ctrl cmd LOAD") + if eng is None: + raise ValueError("Cannot find engine " + engine) + libcrypto.ENGINE_set_default(eng, c_int(0xFFFF)) + default = eng # Declare function result and arguments for used functions -libcrypto.ENGINE_by_id.restype=c_void_p -libcrypto.ENGINE_by_id.argtypes=(c_char_p,) -libcrypto.ENGINE_set_default.argtypes=(c_void_p,c_int) -libcrypto.ENGINE_ctrl_cmd_string.argtypes=(c_void_p,c_char_p,c_char_p,c_int) -libcrypto.ENGINE_finish.argtypes=(c_char_p,) +libcrypto.ENGINE_by_id.restype = c_void_p +libcrypto.ENGINE_by_id.argtypes = (c_char_p, ) +libcrypto.ENGINE_set_default.argtypes = (c_void_p, c_int) +libcrypto.ENGINE_ctrl_cmd_string.argtypes = (c_void_p, c_char_p, c_char_p, + c_int) +libcrypto.ENGINE_finish.argtypes = (c_char_p, )