pyecsca.ec.configuration module

Provides a way to work with and enumerate implementation configurations.

class pyecsca.ec.configuration.EnumDefine(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Enum

classmethod names()[source]
classmethod values()[source]
class pyecsca.ec.configuration.Multiplication(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: EnumDefine

Base multiplication algorithm to use.

TOOM_COOK = 'MUL_TOOM_COOK'
KARATSUBA = 'MUL_KARATSUBA'
COMBA = 'MUL_COMBA'
BASE = 'MUL_BASE'
class pyecsca.ec.configuration.Squaring(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: EnumDefine

Base squaring algorithm to use.

TOOM_COOK = 'SQR_TOOM_COOK'
KARATSUBA = 'SQR_KARATSUBA'
COMBA = 'SQR_COMBA'
BASE = 'SQR_BASE'
class pyecsca.ec.configuration.Reduction(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: EnumDefine

Modular reduction method used.

BARRETT = 'RED_BARRETT'
MONTGOMERY = 'RED_MONTGOMERY'
BASE = 'RED_BASE'
class pyecsca.ec.configuration.Inversion(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: EnumDefine

Inversion algorithm used.

GCD = 'INV_GCD'
EULER = 'INV_EULER'
class pyecsca.ec.configuration.HashType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: EnumDefine

Hash algorithm used in ECDH and ECDSA.

NONE = 'HASH_NONE'
SHA1 = 'HASH_SHA1'
SHA224 = 'HASH_SHA224'
SHA256 = 'HASH_SHA256'
SHA384 = 'HASH_SHA384'
SHA512 = 'HASH_SHA512'
class pyecsca.ec.configuration.RandomMod(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: EnumDefine

Method of sampling a uniform integer modulo order.

SAMPLE = 'MOD_RAND_SAMPLE'
REDUCE = 'MOD_RAND_REDUCE'
class pyecsca.ec.configuration.Configuration(model, coords, formulas, scalarmult, hash_type, mod_rand, mult, sqr, red, inv)[source]

Bases: object

An ECC implementation configuration.

model: CurveModel
coords: CoordinateModel
formulas: FrozenSet[Formula]
scalarmult: ScalarMultiplier
hash_type: HashType
mod_rand: RandomMod
mult: Multiplication
sqr: Squaring
red: Reduction
inv: Inversion
pyecsca.ec.configuration.all_configurations(**kwargs)[source]

Get all implementation configurations that match the given kwargs.

The keys in kwargs should be some of the attributes in the Configuration, and the values limit the returned configurations to configuration matching them.

Note

The formulas attribute is unsupported and formulas should be provided using the scalarmult attribute, which is either a subclass of the ScalarMultiplier class or an instance of it or a dictionary giving arguments to a constructor of some ScalarMultiplier subclass.

Warning

The returned number of configurations might be quite large and take up significant memory space. Use this generator and do not store the results.

Parameters:

kwargs – The configuration parameters to match.

Return type:

Generator[Configuration, None, None]

Returns:

A generator of the configurations.