MAX32665-MAX32668 User Guide
Maxim Integrated Page 440 of 457
The MAA features include:
• Supports up to a 2048-bit operand size
• Performs up to 2048-bit modular exponentiation (ae mod m)
• Performs up to 2048-bit modular multiplication (a*b mod m)
• Performs up to 2048-bit modular square (b2 mod m)
• Performs up to 2048-bit modular square followed by modular multiply ((b2 mod m) * a mod m)
• Performs up to 2048-bit modular addition (a+b mod m)
• Performs up to 2048-bit modular subtraction (a-b mod m)
• Optimized calculation mode to maximize speed
• Non-optimized calculation mode to maximize security
These operations can be combined to perform modular inversion and modular reduction.
The MAA operates independently from the processor except when the processor is reading or writing the control register,
or when it is used to load/unload the data in the specified data memory segment.
Operands and parameters are stored in a dedicated 768x16 data memory segment.
The MAA does not use the CMDA engine.
23.6.1 Operation
The MAA control register MAA_CTRL provides option control on arithmetic operations, data partition, and status bits for
start/busy. This starting address of most parameters is configurable within the memory instance is configurable using the
Memory Assignment (AMA, BMA, RMA and TMA) fields. Per FIPS’ big-endian data convention, the most significant byte or
sub-word of a multi-byte word is loaded first and stored at the lowest storage location.
Table 23-4. Cryptographic Memory Segments
The Modular Accelerator Word Size field MAA_MAWS.msgsz defines the calculation size of a modular operation. The
content of the register presents the number of bits for the modular operation. For example, to perform a 1007-bit (03EFh)
modular operation, you would need to set this register to 03EFh prior to setting STC.
Valid word size is from 1 to 2048. The accelerator does not start if MAA_MAWS.msgsz is invalid.
The CRYPTO_CTRL.maa_done bit is set to 1 after the completion of an MAA operation or when an error occurs. An interrupt
is generated if CRYPTO_CTRL.int is set. Software clears the bit by writing a 0.
23.6.2 MAA Memory
A dedicated, 1535-byte MAA memory begins at offset 0x0100. This memory holds the operands and intermediate values for
MAA calculations. The memory space is subdivided into logical segments based on the size of the calculation.
The MAA memory makes a distinction between memory instances and memory segments when assigning parameter
location. The following restrictions apply when storing parameters in the MAA memory.
Only one parameter can be located in each memory instance.