From: Victor Wagner Date: Sun, 26 Oct 2014 20:01:23 +0000 (+0300) Subject: Suppot for python integer as key material X-Git-Url: http://wagner.pp.ru/gitweb/?a=commitdiff_plain;h=eeb4a6511bf02295c802a6b55bfad226b01fa126;p=oss%2Fctypescrypto.git Suppot for python integer as key material --- diff --git a/ctypescrypto/ec.py b/ctypescrypto/ec.py index 3d880cb..f3ea778 100644 --- a/ctypescrypto/ec.py +++ b/ctypescrypto/ec.py @@ -10,7 +10,7 @@ def create(curve,data): Creates EC keypair from the just secret key and curve name @param curve - name of elliptic curve - @param num - long number representing key + @param num - byte array or long number representing key """ ec=libcrypto.EC_KEY_new_by_curve_name(curve.nid) if ec is None: @@ -20,13 +20,16 @@ def create(curve,data): raise PKeyError("EC_KEY_get0_group") libcrypto.EC_GROUP_set_asn1_flag(group,1) raw_key=libcrypto.BN_new() - if raw_key is None: - raise PKeyError("BN_new") + if isinstance(data,int): + BN_hex2bn(byref(raw_key),hex(data)) + else: + if raw_key is None: + raise PKeyError("BN_new") + if libcrypto.BN_bin2bn(data,len(data),raw_key) is None: + raise PKeyError("BN_bin2bn") ctx=libcrypto.BN_CTX_new() if ctx is None: raise PKeyError("BN_CTX_new") - if libcrypto.BN_bin2bn(data,len(data),raw_key) is None: - raise PKeyError("BN_bin2bn") order=libcrypto.BN_new() if order is None: raise PKeyError("BN_new")