pyecsca.ec.mod.symbolic module

class SymbolicMod(x, n)[source]

Bases: Mod

A symbolic element x of ℤₙ (implemented using sympy).

x: Expr[source]
n: int[source]
bit_length()[source]

Compute the bit length of this element (in its positive integer representation).

Returns:

The bit-length.

inverse()[source]

Invert the element.

Return type:

SymbolicMod

Returns:

The inverse.

Raises:

NonInvertibleError if the element is not invertible.

sqrt()[source]

Compute the modular square root of this element (only implemented for prime modulus).

Uses the Tonelli-Shanks algorithm.

Return type:

SymbolicMod

is_residue()[source]

Whether this element is a quadratic residue (only implemented for prime modulus).

classmethod random(n)[source]

Generate a random Mod in ℤₙ.

Parameters:

n (int) – The order.

Return type:

Mod

Returns:

The random Mod.