sboxU.apn package

This module contains tools to investigate APN functions specifically.

Subpackages

Submodules

sboxU.apn.cython_functions module

sboxU.apn.cython_functions.apn_ea_mugshot()
sboxU.apn.cython_functions.apn_ea_mugshot_from_spectra()
sboxU.apn.cython_functions.automorphisms_from_ortho_derivative()
sboxU.apn.cython_functions.ccz_equivalent_quadratic_function()
sboxU.apn.cython_functions.ea_mappings_from_ortho_derivative()

Returns all the EL mappings L such that graph(s) = L(graph(s_prime)) + c, for some constant c that is not returned. Works only for quadratic APN functions since it is based on the ortho-derivative.

Parameters:
  • s – an S-boxable object corresponding to a quadratic APN function

  • s_prime – an S-boxable object corresponding to a quadratic APN function

  • n_threads – the number of threads to use. Defaults to MAX_N_THREADS.

Returns:

A list of F2AffineMaps L_i such that the graph of s is, up to a constant addition, the same as the image of the graph of s_prime under the linear permutation L_i.

sboxU.apn.cython_functions.enumerate_ea_classes_apn_quadratic()
sboxU.apn.cython_functions.get_WalshZeroesSpaces_quadratic_apn()
sboxU.apn.cython_functions.non_trivial_sn()
sboxU.apn.cython_functions.ortho_derivative()

Returns the ortho-derivative of the function corresponding to the S_boxable object q, as defined e.g. in [TiT:CanCouPer22].

Parameters:

q – an S_boxable object corresponding to an APN function.

Returns:

An S_box instance containing the ortho-derivative of q. If the ortho-derivative of q is actually not defined (e.g. if it is not a quadratic APN), then returns an empty S_box.

sboxU.apn.cython_functions.ortho_integral()

Returns the ortho-integral of the function corresponding to the S_boxable object s, as defined in a paper that is yet to be put anywhere (work in progress).

Parameters:

s – an S_boxable object.

Returns:

An S_box instance containing the ortho-integral of s, that is, to a quadratic APN function that has s as its ortho-derivative. If there is no such function, returns the empty S-box.

sboxU.apn.cython_functions.sigma_multiplicities()

sboxU.apn.database module

class sboxU.apn.database.APNFunctions(db_file)[source]

Bases: FunctionsDB

This class is expected to be bundled with a literal TinySQL database file called “apn_functions.db”, and allows an easy interaction with it.

It builds upon the FunctionDB class, and contains additional logic to handle the specifics of APN functions, and in particular of their CCZ-equivalence class. Here, “functions” should be thought of much more as “extended affine equivalence class representative” rather than function.

This class provides another table containing the bases of all the spaces of dimension n contained with the Walsh zeroes of a function. In order to both save space and store the structure of a CCZ-equivalence, each APN function is stored along with the identifier of the Walsh spaces of its CCZ-equivalence class, and the FastLinearMapping that must be applied to it to obtain its own Walsh Zeroes.

insert_full_ccz_equivalence_class(s, bibliography)[source]
is_new(s, degree_spec=None, abs_walsh_spec=None, sigma_mult=None, thk_spec=None, ccz_id=None)[source]

# !TODO! docstring

parse_function_from_row(row)[source]
class sboxU.apn.database.APNQuadraticFunctions_ccz_only(db_file)[source]

Bases: FunctionsDB

This class is expected to be bundled with a literal TinySQL database file called “apn_functions.db”, and allows an easy interaction with it.

It builds upon the FunctionDB class, and contains additional logic to handle the specifics of APN functions, and in particular of their CCZ-equivalence class. Here, “functions” should be thought of much more as “extended affine equivalence class representative” rather than function.

This class is a compact version of APNFunctions to use when there are too many functions when we include EA-classes.

insert_many_functions(entries)[source]
insert_quadratic_ccz_representative(s)[source]

In this version, we only insert a ccz representative

is_new(s, mug=None)[source]

# !TODO! docstring

parse_function_from_row(row)[source]