Datasheet

Table Of Contents
...........continued
Parameter Type Direction Location Data Length Before
Executing the
Service
After
Executing
the Service
nu1ScalarNumber nu1 I Crypto
RAM
u2ScalarLength
+ 4
Scalar Number
used to multiply
the point A
Unchanged
nu1OrderPointBase nu1 I Crypto
RAM
u2ScalarLength
+ 4
Order of the
Point A in the
elliptic curve
Unchanged
nu1PrivateKey nu1 I/O Crypto
RAM
u2ScalarLength
+ 4
Base of the
Private Key
Unchanged
nu1HashBase (see
Note 1)
nu1 I Crypto
RAM
u2ScalarLength
+ 4
Base of the
hash value
resulting from
the previous
SHA
Unchanged
u2ScalarLength u2 I Length of scalar
(same length as
the length of
order)
Length of
scalar
nu1PointABase nu1 I/O Crypto
RAM
3*u2ModLength
+ 12
Input point A
(three
coordinates
(X,Y) affine and
Z = 1)
Resulting
signature
(R,S,0)
nu1ABase nu1 I Crypto
RAM
2*u2ModLength
+ 8
Parameter a of
the elliptic curve
Unchanged
nu1Workspace nu1 I Crypto
RAM
8*u2ModLength
+ 44
Corrupted
workspace
Note: 
1. Whatever the chosen SHA, the resulting hash value may have a length inferior or equal to the
modulo length and be padded with zeros until its total length is u2ModLength + 4.
43.3.7.9.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 _GF2NEcDsaGenerate(nu1ModBase) = <Base of the ram location of P>;
PUKCL _GF2NEcDsaGenerate(u2ModLength) = <Byte length of P>;
PUKCL _GF2NEcDsaGenerate(nu1CnsBase) = <Base of the ram location of Cns>;
PUKCL _GF2NEcDsaGenerate(nu1PointABase) = <Base of the A point>;
PUKCL _GF2NEcDsaGenerate(nu1PrivateKey) = <Base of the Private Key>;
SAM D5x/E5x Family Data Sheet
Public Key Cryptography Controller (PUKCC)
© 2019 Microchip Technology Inc.
Datasheet
DS60001507E-page 1562