Datasheet

Table Of Contents
_PUKCL_SELFTEST PUKCL_SelfTest;
_PUKCL_SMULT PUKCL_Smult;
_PUKCL_SQUARE PUKCL_Square;
_PUKCL_SWAP PUKCL_Swap;
// ECC
_PUKCL_ZPECCADD PUKCL_ZpEccAdd;
_PUKCL_ZPECCDBL PUKCL_ZpEccDbl;
_PUKCL_ZPECCADDSUB PUKCL_ZpEccAddSub;
_PUKCL_ZPECCMUL PUKCL_ZpEccMul;
_PUKCL_ZPECDSAGENERATE PUKCL_ZpEcDsaGenerate;
_PUKCL_ZPECDSAVERIFY PUKCL_ZpEcDsaVerify;
_PUKCL_ZPECDSAQUICKVERIFY PUKCL_ZpEcDsaQuickVerify;
_PUKCL_ZPECCQUICKDUALMUL PUKCL_ZpEccQuickDualMul;
_PUKCL_ZPECCONVPROJTOAFFINE PUKCL_ZpEcConvProjToAffine;
_PUKCL_ZPECCONVAFFINETOPROJECTIVE PUKCL_ZpEcConvAffineToProjective;
_PUKCL_ZPECRANDOMIZECOORDINATE PUKCL_ZpEcRandomiseCoordinate;
_PUKCL_ZPECPOINTISONCURVE PUKCL_ZpEcPointIsOnCurve;
// ECC
_PUKCL_GF2NECCADD PUKCL_GF2NEccAdd;
_PUKCL_GF2NECCDBL PUKCL_GF2NEccDbl;
_PUKCL_GF2NECCMUL PUKCL_GF2NEccMul;
_PUKCL_GF2NECDSAGENERATE PUKCL_GF2NEcDsaGenerate;
_PUKCL_GF2NECDSAVERIFY PUKCL_GF2NEcDsaVerify;
_PUKCL_GF2NECCONVPROJTOAFFINE PUKCL_GF2NEcConvProjToAffine;
_PUKCL_GF2NECCONVAFFINETOPROJECTIVE PUKCL_GF2NEcConvAffineToProjective;
_PUKCL_GF2NECRANDOMIZECOORDINATE PUKCL_GF2NEcRandomiseCoordinate;
_PUKCL_GF2NECPOINTISONCURVE PUKCL_GF2NEcPointIsOnCurve;
} P;
} PUKCL_PARAM,
43.3.3.2.1 PUKCL_HEADER Structure
The PUKCL_HEADER is common for all services of the library. This header includes standard fields to
indicate the requested service, sub-service, options, return status, and so on, as shown in the following
tables.
Different terms used in the below description to be understood, are as follows:
Parameter – Represents a variable used by the PUKCL. Every parameter belongs to either
PUKCL_HEADER or PUKCL Service Specific Header
Type – Indicates the data type. For details on data type, please refer to
CryptoLib_typedef_pb.h file in the library
Dir – Direction. Indicates whether PUKCL considers the variable as input or output. Input means that
the application passes data to the PUKCL using the variable. Output means that the PUKCL uses the
variable to pass data to the application.
Location – Suggests whether the parameter need to be stored in Crypto RAM or device SRAM. The
PUKCL driver has macros for placing parameters into Crypto RAM, so that the user does not have to
worry about the addresses
Data Length – If a parameter is a pointer variable, the Data Length column shows the size of the data
pointed by the pointer
Table 43-1. PUKCL_HEADER Structure
Parameter
Type Direction Location Data Length Before Executing the
Service
After Executing the
Service
u1Service u1 I Required service Executed service
u1SubService u1 I Required sub-service Executed sub-service
u2Option u2 I Required option Executed option
Specific PUKCL_STATUS I/O See Table 43-2 See Table 43-2
SAM D5x/E5x Family Data Sheet
Public Key Cryptography Controller (PUKCC)
© 2019 Microchip Technology Inc.
Datasheet
DS60001507E-page 1446