Datasheet

Table Of Contents
...........continued
Parameter Type Direction Location Data Length Before
Executing
the Service
After
Executing
the Service
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
2*u2ModLength
+ 8
Parameter a
and b 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.10.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
_GF2NEcDsaVerify(nu1ModBase) = <Base of the ram location of P>;
PUKCL _GF2NEcDsaVerify(u2ModLength) = <Byte length of P>;
PUKCL _GF2NEcDsaVerify(nu1CnsBase) = <Base of the ram location of Cns>;
PUKCL _GF2NEcDsaVerify(nu1PointABase) = <Base of the A point>;
PUKCL _GF2NEcDsaVerify(nu1PrivateKey) = <Base of the Private Key>;
PUKCL _GF2NEcDsaVerify(nu1ScalarNumber) = <Base of the ScalarNumber>;
PUKCL _GF2NEcDsaVerify(nu1OrderPointBase) = <Base of the order of A point>;
PUKCL _GF2NEcDsaVerify(nu1ABase) = <Base of the a parameter of the curve>; PUKCL
_GF2NEcDsaVerify(nu1Workspace) = <Base of the workspace>;
PUKCL _GF2NEcDsaVerify(nu1HashBase) = <Base of the SHA resulting hash>;
...
// vPUKCL_Process() is a macro command, which populates the service name
// and then calls the library...
vPUKCL_Process(GF2NEcDsaVerifyFast, &PUKCLParam);
if (PUKCL (u2Status) == PUKCL_OK)
{
...
SAM D5x/E5x Family Data Sheet
Public Key Cryptography Controller (PUKCC)
© 2019 Microchip Technology Inc.
Datasheet
DS60001507E-page 1565