Customizing

Global C4E_ARCH_DIGIT2_ASGN

Customize the method to construct a C4eArchDigit2 from two C4eArchDigit (representing least/most significant part) on demand.

Global C4E_ARCH_DIGIT2_LSD

Sometimes it is faster (but less portable) to use C4eArchDigit based array index access regarding defines C4E_ARCH_LITTLE_ENDIAN/C4E_ARCH_BIG_ENDIAN.

Global C4E_ARCH_DIGIT2_MSD

Sometimes it is faster (but less portable) to use a C4eArchDigit based array index access regarding defines C4E_ARCH_LITTLE_ENDIAN/C4E_ARCH_BIG_ENDIAN.

Global C4E_ARCH_DIGIT_SIZE

In case the configure script is not used to generate c4e_config.h then you (possibly) have to adopt define C4E_ARCH_DIGIT_SIZE by hand.

Global C4E_ARCH_ROM

Variables declared with this macro are constants and therefore can be located in ROM. Customize this macro depending on your compiler/linker and platform.

Global C4E_ASSERT

Customize to fit your special needs when debugging

Global C4E_DLC_GF_BYTES_MAX
Simply undefine C4E_DLC_GF_BYTES_MAX to support longer (unlimited) modulus sizes. Modify it if you want to limit the size of a modulus to this value (recommended for static memory reservation).

Global C4E_EC_GF_BYTES_MAX
Simply undefine C4E_EC_GF_BYTES_MAX to support longer (unlimited) field sizes. Modify it if you want to limit the size of EC modulus to this value (recommended for static memory reservation).

Global C4eArchDigit

This type must be an unsigned integer type, for which basic arithmetic is provided. Typically it targets the architecture register width. All arithmetic on this type must be modulo 256^C4E_ARCH_DIGIT_SIZE, means saturation arithmetic is not allowed. In case the configure script is not used to generate c4e_config.h then you (possibly) have to adopt define C4E_ARCH_DIGIT_SIZE by hand.

Global C4eArchDigit2

This type must have twice the size of one C4eArchDigit. Division by a C4eArchDigit must be supported. Saturation arithmetic is not allowed.

Global C4eArchSize
Customize this type equivalent to size_t or C4eArchUint (if width enough).

Global C4eArchUint

This type typically targets the architecture register width. It must be unsigned, typically declared as unsigned int. In case the configure script is not used to generate c4e_config.h then you (possibly) have to adopt define C4E_ARCH_UINT_SIZE by hand.

Global C4eArchUint8

Customize this type equivalent to unsigned char, resp. the ISO C99 (POSIX) type uint8_t.