Datasheet

Table Of Contents
Generally, u2ScalarLength is equal to (u2ModLength) or (u2ModLength + 4)
Important: 
For the ECDSA signature generation be sure to follow the directives given for the RNG on the
chip you use (particularly initialization, seeding) and compulsorily start the RNG.
The scalar number k must be selected at random. This random must be generated before the
call of the ECDSA signature. For this random generation be sure to follow the directives given
for the RNG on the chip you use (particularly initialization, seeding) and compulsorily start the
RNG.
The operation performed is:
Compute the ECDSA (R,S) as described in FIPS 186-2, but leaving the user the role of computing
the input Hash Value, thus leaving the freedom of using any other algorithm than SHA-1.
Compute a R value using the input A point and the scalar number.
Compute a S value using R, the scalar number, the private key and the provided hash value. Note
that the resulting signature (R,S) is stored at the place of the input A point.
If all is correct and S is different from zero, the status is set to PUKCL_OK. If all is correct and S
equals zero,the status is set to PUKCL_WRONG_SELECT_NUMBER. If an error occurs, the status
is set to the corresponding error value (see Status Returned Values below).
The service name for this operation is ZpEcDsaGenerateFast. This service uses Fast mode and Fast
Modular Reduction for computation.
The signature (R,S), when resulting from a computation is given back at address of the A point:
R output is at offset 0 and has length (u2ScalarLength + 4)bytes.
S output is at offset (u2ScalarLength + 4) bytes and has length (u2ScalarLength + 4) bytes.
The MSB 4 zero bytes may be suppressed to get the R and S values on u2ScalarLength bytes
SAM D5x/E5x Family Data Sheet
Public Key Cryptography Controller (PUKCC)
© 2019 Microchip Technology Inc.
Datasheet
DS60001507E-page 1532