Datasheet

Table Of Contents
...........continued
Parameter Type Direction Location Data Length Before
Executing the
Service
After Executing
the Service
u4MulValue u4 I Value of
MulValue
Value of MulValue
untouched
Note: 
1. If a reduction option is specified, the area X will be, if necessary, extended to u2ModLength + 4
bytes.
2. If Smult is without reduction, X is untouched. If Smult is with reduction, X is filled with the final
result.
3. If Smult is without reduction, R is filled with the final result. If Smult is with reduction, R is corrupted.
43.3.4.7.5 Available Options
The options are set by the u2Options input parameter, which is composed of:
the mandatory Small Multiplication operation option described in Table 43-19
the mandatory CarryOperand option described in Table 43-20 and Table 43-21
the facultative Modular Reduction option (see 43.3.5.1 Modular Reduction). If the Modular Reduction
is not requested, this option is absent.
The u2Options number is calculated by an “Inclusive OR” of the options. Some examples in C language
are:
Operation: Small Multiply only without carry and without Modular Reduction
PUKCL(u2Options) = SET_MULTIPLIEROPTION(PUKCL_SMULT_ONLY) |
SET_CARRYOPTION(CARRY_NONE);
Operation: Small Multiply with addition with Specific/CarryIn addition and with Fast Modular
Reduction
PUKCL(u2Options) =SET_MULTIPLIEROPTION(PUKCL_SMULT_ADD) |
SET_CARRYOPTION(ADD_CARRY) | PUKCL_REDMOD_REDUCTION |
PUKCL_REDMOD_USING_FASTRED;
The following table lists all of the necessary parameters for the Small Multiply option. When the Addition
or Subtraction option is not chosen, it is not necessary to fill in the nu1ZBase parameter.
Table 43-19. Smult Service Operation Options
Option Purpose Required Parameters
SET_MULTIPLIEROPTION(PUKCL_SMULT_
ONLY)
Perform R =
MulValue*X +
CarryOperand
nu1RBase, u2RLength,
nu1XBase, u2XLength,
u4MulValue
SET_MULTIPLIEROPTION(PUKCL_SMULT_
ADD)
Perform R = Z +
MulValue*X +
CarryOperand
nu1RBase, u2RLength,
nu1ZBase, nu1XBase,
u2XLength,u4MulValue
SET_MULTIPLIEROPTION(PUKCL_SMULT_
SUB)
Perform R = Z -
(MulValue*X +
CarryOperand)
nu1RBase, u2RLength,
nu1ZBase, nu1XBase,
u2XLength,u4MulValue
SAM D5x/E5x Family Data Sheet
Public Key Cryptography Controller (PUKCC)
© 2019 Microchip Technology Inc.
Datasheet
DS60001507E-page 1460