X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=ctypescrypto%2Fpkey.py;h=510ffcaa85ea395723ecc07ad337119b6bc43e57;hb=92df3e73921ba7b8756bfab1af4189dab7cc610e;hp=10366ee0b318e1947b4448a1be4f9419884af5b3;hpb=d817f7ee1103370ab5355871e744dfb5c15bf2b4;p=oss%2Fctypescrypto.git diff --git a/ctypescrypto/pkey.py b/ctypescrypto/pkey.py index 10366ee..510ffca 100644 --- a/ctypescrypto/pkey.py +++ b/ctypescrypto/pkey.py @@ -10,6 +10,8 @@ from ctypescrypto import libcrypto from ctypescrypto.exception import LibCryptoError,clear_err_stack from ctypescrypto.bio import Membio import sys + +__all__ = ['PKeyError','password_callback','PKey'] class PKeyError(LibCryptoError): pass @@ -28,16 +30,16 @@ def password_callback(buf,length,rwflag,u): _cb=CALLBACK_FUNC(password_callback) -class PKey: +class PKey(object): def __init__(self,ptr=None,privkey=None,pubkey=None,format="PEM",cansign=False,password=None): if not ptr is None: self.key=ptr self.cansign=cansign if not privkey is None or not pubkey is None: - raise TypeError("Just one of pubkey or privkey can be specified") + raise TypeError("Just one of ptr, pubkey or privkey can be specified") elif not privkey is None: if not pubkey is None: - raise TypeError("Just one of pubkey or privkey can be specified") + raise TypeError("Just one of ptr, pubkey or privkey can be specified") b=Membio(privkey) self.cansign=True if format == "PEM": @@ -150,7 +152,7 @@ class PKey: rsa_keygen_bits=number - size of key to be generated rsa_keygen_pubexp - RSA public expontent(default 65537) - Algorithn specific parameters for DSA,DH and EC + Algorithm specific parameters for DSA,DH and EC paramsfrom=PKey object @@ -170,7 +172,7 @@ class PKey: clear_err_stack() pkey_id=c_int(0) libcrypto.EVP_PKEY_asn1_get0_info(byref(pkey_id),None,None,None,None,ameth) - libcrypto.ENGINE_finish(tmpeng) + #libcrypto.ENGINE_finish(tmpeng) if "paramsfrom" in kwargs: ctx=libcrypto.EVP_PKEY_CTX_new(kwargs["paramsfrom"].key,None) else: @@ -239,9 +241,9 @@ class PKey: continue rv=libcrypto.EVP_PKEY_CTX_ctrl_str(ctx,oper,str(opts[oper])) if rv==-2: - raise PKeyError("Parameter %s is not supported by key"%(oper)) + raise PKeyError("Parameter %s is not supported by key"%(oper,)) if rv<1: - raise PKeyError("Error setting parameter %s"(oper)) + raise PKeyError("Error setting parameter %s"%(oper,)) # Declare function prototypes libcrypto.EVP_PKEY_cmp.argtypes=(c_void_p,c_void_p) libcrypto.PEM_read_bio_PrivateKey.restype=c_void_p @@ -289,3 +291,4 @@ libcrypto.PEM_write_bio_PrivateKey.argtypes=(c_void_p,c_void_p,c_void_p,c_char_p libcrypto.PEM_write_bio_PUBKEY.argtypes=(c_void_p,c_void_p) libcrypto.i2d_PUBKEY_bio.argtypes=(c_void_p,c_void_p) libcrypto.i2d_PrivateKey_bio.argtypes=(c_void_p,c_void_p) +libcrypto.ENGINE_finish.argtypes=(c_void_p,)