Datasheet

Table Of Contents
43.3.4.7.2 How to Use the Service
43.3.4.7.3 Description
This service processes the following operation (if not computing a modular reduction of the result):
R = [Z] ± (MulValue × X + CarryOperand)
Or (if computing a modular reduction of the result):
R = ([Z] ± (MulValue × X + CarryOperand))mod N
The service name for this operation is Smult.
The result of the Small Multiply Operation is stored on u2RLength bytes, so the choice of this length
compared to u2XLength may lead to:
A truncation if the result is too big to be stored on u2RLengthbytes.
A padding on the MSB side if the result does not take all the u2RLengthbytes.
However, in all cases this rule must be followed:
Important:  The length of R must be greater than or equal to the length of X.
In these computations, the following parameters need to be provided:
R the result (pointed by{nu1RBase,u2Rlength})
X one input number or GF(2
n
) polynomial (pointed by{nu1XBase,u2XLength})
Z one optional input number or GF(2
n
) polynomial (pointed by{nu1ZBase,u2Rlength}).
MulValue one input number or GF(2
n
)polynomial on one word (provided in u4MulValue)
CarryOperand (provided through the CarryOptions and Carry values).
Important:  Even if neither accumulation nor subtraction is specified, the nu1ZBase must
always be filled and point to a Crypto RAM space. It this case, nu1ZBase can point to the
same space as the nu1RBase.
If using the modular reduction option, the Multiply operation is followed by a reduction (see 43.3.5.1
Modular Reduction) and the following parameters must be additionally provided:
N—the modulus (pointed by {nu1ModBase,u2Modlength +4})
Cns—the reduction constant
In case of Big reduction, Cns is pointed by {nu1CnsBase,64bytes}.
In case of Fast or Normalized reduction, Cns is pointed by {nu1CnsBase,u2ModLength +8}
SAM D5x/E5x Family Data Sheet
Public Key Cryptography Controller (PUKCC)
© 2019 Microchip Technology Inc.
Datasheet
DS60001507E-page 1458