'For a normal and High level use, specifie pubkey,
privkey (if you need) and the curve'

def __init__(self, pubkey=None, privkey=None, pubkey_x=None, pubkey_y=None, raw_privkey=None, curve='sect283r1'):

    if (type(curve) == str):
        self.curve = OpenSSL.get_curve(curve)
    else:
        self.curve = curve
    if ((pubkey_x is not None) and (pubkey_y is not None)):
        self._set_keys(pubkey_x, pubkey_y, raw_privkey)
    elif (pubkey is not None):
        (curve, pubkey_x, pubkey_y, i) = ECC._decode_pubkey(pubkey)
        if (privkey is not None):
            (curve2, raw_privkey, i) = ECC._decode_privkey(privkey)
            if (curve != curve2):
                raise Exception('Bad    ECC    keys    ...')
        self.curve = curve
        self._set_keys(pubkey_x, pubkey_y, raw_privkey)
    else:
        (self.privkey, self.pubkey_x, self.pubkey_y) = self._generate()
