Datasheet

Table Of Contents
Table 43-76. ZpEccQuickDualMulFast Service System RAM Scalar Options
Option Purpose
PUKCL_ZPECCMUL_SCAL_IN_CLASSIC_RAM The scalars can be located in Crypto RAM or in
system RAM.
If both scalars are entirely in system RAM with no
part in Crypto RAM this can be signaled by using this
option . In all other cases this option must not be
used.
43.3.6.6.6 Code Example
PUKCL_PARAM PUKCLParam;
PPUKCL_PARAM pvPUKCLParam = &PUKCLParam;
PUKCL(u2Option) = <Configure scalar numbers location and windows sizes>;
PUKCL_ZpEccQuickDualMulFast(pu1ModCnsBase) = <Base of the ram location of P and Cns>;
PUKCL_ZpEccQuickDualMulFast(u2ModLength) = <Byte length of P>;
PUKCL_ZpEccQuickDualMulFast(u2KLength) = <Byte length of scalars>;
PUKCL_ZpEccQuickDualMulFast(pu1PointABase) = <Base of the ram location of the A point>;
PUKCL_ZpEccQuickDualMulFast(pu1PointBBase) = <Base of the ram location of the B point>;
PUKCL_ZpEccQuickDualMulFast(pu1AWorkBase) = <Base of the ram location of the parameter A of
the elliptic curve and workspace>;
PUKCL_ZpEccQuickDualMulFast(pu1KABBase) = <Base of the ram location of the scalar numbers KA
and KB>;
...
// vPUKCL_Process() is a macro command, which populates the service name
// and then calls the library...
vPUKCL_Process(ZpEccQuickDualMulFast, pvPUKCLParam);
if (PUKCL(u2Status) == PUKCL_OK)
{
...
}
else // Manage the error
43.3.6.6.7 Constraints
No overlapping between either input and output are allowed. The following conditions must be avoided to
ensure that the service works correctly:
pu1ModCnsBase,pu1PointABase, pu1PointBBase, pu1AWorkBase, pu1KABBase are not aligned on
32-bit boundaries
{pu1ModCnsBase, 2*u2ModLength + 16}, {pu1PointABase, (3*(u2ModLength + 4)) *(2
(WA-2)
)},
{pu1PointBBase, (3*(u2ModLength + 4)) * (2
(WB-2)
)} or { pu1AWorkBase, 9*u2ModLength + 48} are
not in PUKCC RAM
u2ModLength is either: < 12, > 0xffc or not a 32-bit length
Alloverlapping between {pu1ModCnsBase, 2*u2ModLength + 16}, {pu1PointABase,
(3*(u2ModLength + 4)) * (2
(WA-2)
)}, {pu1PointBBase, (3*(u2ModLength + 4)) * (2
(WB-2)
)} or
{pu1AWorkBase, 9*u2ModLength + 48}.
43.3.6.6.8 Parameters Placement
The parameters’ placement is described in the following figures.
SAM D5x/E5x Family Data Sheet
Public Key Cryptography Controller (PUKCC)
© 2019 Microchip Technology Inc.
Datasheet
DS60001507E-page 1521