Datasheet

Table Of Contents
nu1ModBase nu1 I Crypto RAM u2ModLength + 4 Base of
modulus P
Base of modulus
P
nu1CnsBase nu1 I Crypto RAM u2ModLength + 8 Base of Cns Base of Cns
u2ModLength u2 I Length of
modulus P
Length of
modulus P
nu1PointBase nu1 I Crypto RAM 3*u2ModLength + 12 Input point unchanged
nu1AParam nu1 I Crypto RAM u2ModLength + 4 The parameter
a
The parameter a
nu1BParam nu1 I Crypto RAM u2ModLength + 4 The parameter
b
The parameter b
nu1Workspace nu1 I Crypto RAM 4*u2ModLength + 28 Workspace
43.3.6.10.5 Code Example
PUKCL_PARAM PUKCLParam;
PPUKCL_PARAM pvPUKCLParam = &PUKCLParam;
PUKCL (u2Option) = 0;
PUKCL _ZpEcPointIsOnCurve(nu1ModBase) = <Base of the ram location of P>;
PUKCL _ZpEcPointIsOnCurve(u2ModLength) = <Byte length of P>;
PUKCL _ZpEcPointIsOnCurve(nu1CnsBase) = <Base of the ram location of Cns>;
PUKCL _ZpEcPointIsOnCurve(nu1AParam) = <Base of the ram location of the parameter a>;
PUKCL _ZpEcPointIsOnCurve(nu1BParam) = <Base of the ram location of the parameter b>;
PUKCL _ZpEcPointIsOnCurve(nu1PointBase) = <Base of the ram location of the point>;
PUKCL _ZpEcPointIsOnCurve(nu1Workspace) = <Base of the ram location of the workspace>;
...
// vPUKCL_Process() is a macro command, which populates the service name
// and then calls the library...
vPUKCL_Process(ZpEcPointIsOnCurve,&PUKCLParam);
if (PUKCL (u2Status) == PUKCL_OK)
{
...
}
else // Manage the error
43.3.6.10.6 Constraints
No overlapping between either input and output are allowed. The following conditions must be avoided to
ensure that the service works correctly:
nu1ModBase, nu1CnsBase, nu1PointABase, nu1AParam, nu1BParam, nu1Workspace are not
aligned on 32-bit boundaries
{nu1ModBase, u2ModLength+4}, {nu1CnsBase, u2ModLength+8}, {nu1PointABase, 3*u2ModLength
+12}, {nu1AParam, u2ModLength + 4}, {nu1BParam, u2ModLength + 4}, {nu1Workspace,
<WorkspaceLength>} are not in Crypto RAM.
u2ModLength is either: < 12, > 0xffc or not a 32-bit length.
All overlapping between {nu1ModBase, u2ModLength+4}, {nu1CnsBase,u2ModLength+8},
{nu1PointABase, 3*u2ModLength+12}, {nu1AParam, u2ModLength+4}, {nu1AParam, u2ModLength
+ 4} and {nu1Workspace, 4*u2ModLength+28}.
SAM D5x/E5x Family Data Sheet
Public Key Cryptography Controller (PUKCC)
© 2019 Microchip Technology Inc.
Datasheet
DS60001507E-page 1530