Datasheet

Table Of Contents
...........continued
Parameter Type Direction Location Data Length Before
Executing
the Service
After
Executing
the Service
nu1CnsBase nu1 I Crypto
RAM
u2ScalarLength
+ 12
Base of Cns Base of Cns
u2ModLength u2 I Length of
modulus P
Length of
modulus P
nu1OrderPointBase nu1 I Crypto
RAM
u2ScalarLength
+ 4
Order of the
Point A in the
elliptic curve
Unchanged
nu1PointSignature nu1 I Crypto
RAM
2*u2ScalarLength
+ 8
Signature(r,
s)
Corrupted
nu1HashBase (see
Note 1)
nu1 I Crypto
RAM
u2ScalarLength
+ 4
Base of the
hash value
resulting from
the previous
SHA
Corrupted
u2ScalarLength u2 I Length of
scalar
Length of
scalar
nu1PointABase nu1 I/O Crypto
RAM
3*u2ModLength
+ 12
Generator
point
Corrupted
nu1PointPublicKeyGen nu1 I/O Crypto
RAM
3*u2ModLength
+ 12
Public point Corrupted
nu1ABase nu1 I Crypto
RAM
u2ModLength + 4 Parameter a
of the elliptic
curve
Unchanged
nu1Workspace nu1 I Crypto
RAM
8*u2ModLength
+ 44
Corrupted
workspace
Note: 
1. The hash value calculus is defined by the ECDSA norm and depends on the elliptic curve domain
parameters. To construct the input parameter, the 4 Most Significant Bytes must be set to zero.
43.3.6.12.5 Code Example
PUKCL_PARAM PUKCLParam;
PPUKCL_PARAM pvPUKCLParam = &PUKCLParam;
// ! The Random Number Generator must be initialized and started
// ! following the directives given for the RNG on the chip
PUKCL(u2Option) = 0;
// Depending on the option specified, not all fields should be filled
PUKCL_ZpEcDsaVerify(nu1ModBase) = <Base of the ram location of P>;
PUKCL_ZpEcDsaVerify(u2ModLength) = <Byte length of P>;
PUKCL_ZpEcDsaVerify(nu1CnsBase) = <Base of the ram location of Cns>;
PUKCL_ZpEcDsaVerify(nu1PointABase) = <Base of the A point>;
PUKCL_ZpEcDsaVerify(nu1PrivateKey) = <Base of the Private Key>;
SAM D5x/E5x Family Data Sheet
Public Key Cryptography Controller (PUKCC)
© 2019 Microchip Technology Inc.
Datasheet
DS60001507E-page 1536