Datasheet

Table Of Contents
To check whether the version returned by the PUKCL is correct, the following code can be used.
while (pvPUKCLParam->P.PUKCL_SelfTest.u4Version != PUKCL_VERSION);
In a similar way, other returns can also be accessed.
43.3.3.3 Parameter Passing (Special Considerations)
Most of the PUKCL services work with memory area and accept pointers and lengths as parameters to
define input and output areas. Most of the time, the pointers and lengths are untouched by the services,
while the defined areas are read, filled, or overwritten. These memory areas are defined with an initial
pointer and a byte length. For most of the commands, the memory area location must be in the PUKCC
Cryptographic RAM. The Cryptographic RAM is the memory area for parameter exchange with the
PUKCL and is 4 Kbytes large. Sometimes memory areas can be located in Embedded SRAM, which is
detailed in the Location column of the parameters description tables.
When working with binary fields, polynomials in GF(2
n
) need no transformation to be written in an area:
Each bit represents a polynomial coefficient 0 or 1
The polynomials must be written Low Significant Byte First
A zero padding on the Most Significant Bytes may be added if the area is larger than the real size of
the polynomial
Important:  The Cryptographic RAM is 4 Kbytes in size and is dedicated to PUKCC. However,
to ensure correct library operation, the two last 32-bit words must not be used. Unless otherwise
specified, these memory areas contain integers in GF(p) or polynomials in GF(2
n
) with the Less
Significant Byte first.
Unless otherwise specified, the length must be a multiple of four and the pointers must be four bytes
aligned. This is because most of the services work with 32-bit words.
43.3.3.4 Aligned Significant Length
Parameters in memory areas can have any Significant Length in bytes. As the lengths in PUKCL must be
a multiple of four, a padding is processed on the Most Significant Side with zero to three bytes cleared to
zero. Now the parameter can be considered to meet the Aligned Significant Length requirement for
PUKCL.
43.3.3.5 Processing Field GF(p) and GF(2
n
)
The library can process arithmetic functions over GF(p) (or Zp integers) and GF(2
n
), when applicable.
The choice of these processing fields is made using the following rules:
If a processing field is not applicable to the function, it is not mentioned and the Specific.GF2n bit has
no effect.
If the function can support both processing fields, the choice is mentioned and the Specific.GF2n bit
must be filled according to the choice.
If the function supports only one of the processing fields, the processing field is mentioned and the
Specific.GF2n bit has no effect.
43.3.3.6 Return Codes
Each call to one of the PUKCL services returns a status code indicating whether or not the execution is
correct, which can be decoded, as shown in the following figure.
SAM D5x/E5x Family Data Sheet
Public Key Cryptography Controller (PUKCC)
© 2019 Microchip Technology Inc.
Datasheet
DS60001507E-page 1448