Datasheet

Table Of Contents
PUKCL (u2Option) = 0;
PUKCL _ZpEcConvAffineToProjective(nu1ModBase) = <Base of the ram location of P>;
PUKCL _ZpEcConvAffineToProjective(u2ModLength) = <Byte length of P>;
PUKCL _ZpEcConvAffineToProjective(nu1CnsBase) = <Base of the ram location of Cns>;
PUKCL _ZpEcConvAffineToProjective(nu1PointABase) = <Base of the ram location of the A point>;
PUKCL _ZpEcConvAffineToProjective(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(ZpEcConvAffineToProjective,&PUKCLParam);
if (PUKCL (u2Status) == PUKCL_OK)
{
...
}
else // Manage the error
43.3.6.8.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, nu1Workspace are not aligned on 32-bit boundaries
{nu1ModBase, u2ModLength + 4}, {nu1CnsBase, u2ModLength + 8}, {nu1PointABase,
3*u2ModLength+ 12}, {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}, and {nu1Workspace, 2*u2ModLength + 16}
43.3.6.8.7 Status Returned Values
Table 43-80. ZpEccConvAffineToProjective Service Return Codes
Returned Status Importance Meaning
PUKCL_OK The computation passed without problem.
43.3.6.9 Randomize a Coordinate
43.3.6.9.1 Purpose
This service is used to convert the projective representation of a point to another projective
representation.
43.3.6.9.2 How to Use the Service
43.3.6.9.3 Description
The operation performed is:
Projective(X
1
, Y
1
, Z
1
) → Projective(X
2
, Y
2
, Z
2
)
In this computation, the following parameters need to be provided:
The input point is filled in projective coordinates (X,Y,Z) (pointed by {nu1PointBase,3*u2ModLength
+ 12}). This Point must not be the point at infinity.
Cns the Fast Modular Constant filled (pointed by {nu1CnsBase,u2ModLength +8})
P the modulus filled (pointed by {nu1ModBase,u2ModLength +4})
The workspace not initialized (pointed by {nu1WorkSpace, 3*u2ModLength +28}
The random number (pointed by {nu1RandomBase, u2ModLength +4}).
The result is the point nu1PointBase with its (X,Y,Z) coordinates randomized.
The service for this operation is ZpEcRandomiseCoordinate.
SAM D5x/E5x Family Data Sheet
Public Key Cryptography Controller (PUKCC)
© 2019 Microchip Technology Inc.
Datasheet
DS60001507E-page 1527