Datasheet

Table Of Contents
43.3.6.10.7 Status Returned Values
Table 43-84. ZpEcPointIsOnCurve Service Return Codes
Returned Status Importance Meaning
PUKCL_OK The point is on the curve.
PUKCL_POINT_IS_NOT_ON_
CURVE
Warning The point is not on the curve.
PUKCL_POINT_AT_INFINITY Warning The input point has its Z equal to zero, so it’s a
representation of the infinite point.
43.3.6.11 Generating an ECDSA Signature (Compliant with FIPS 186-2)
43.3.6.11.1 Purpose
This service is used to generate an ECDSA signature following the FIPS 186-2. It performs the second
step of the Signature Generation. A hash value (HashVal) must be provided as input, it has to be
previously computed from the message to be signed using a secure hash algorithm.
A scalar number must be provided too as described in the FIPS 186-2. The result (R,S) is computed by
this service.
43.3.6.11.2 How to Use the Service
43.3.6.11.3 Description
The operation performed is:
(R, S) = EcDsaSign(Pt
A
, HashVal, k, CurveParameters, PrivateKey)
This service processes the following checks:
If the Scalar Number k is out of the range [1, PointOrder -1], the calculus is stopped and the status is
set to PUKCL_WRONG_SELECT_NUMBER.
If R equals zero, the calculus is stopped and the status is set to
PUKCL_WRONG_SELECT_NUMBER.
If S equals zero, the calculus is stopped and the status is set to
PUKCL_WRONG_SELECT_NUMBER.
In this computation, the following parameters need to be provided:
A the input point is filled in “mixed” coordinates (X,Y) with the affine values and Z = 1 (pointed by
{nu1PointABase,3*u2ModLength + 12})
Cns the working space for the Fast Modular Constant not initialized (pointed by
{nu1CnsBase,u2ScalarLength + 8})
P the modulus filled (pointed by {nu1ModBase,u2ModLength + 4})
The workspace not initialized (pointed by {nu1WorkSpace, 8*u2ModLength + 44}
The a parameter relative to the elliptic curve (pointed by {nu1ABase, u2ModLength + 4})
The order of the Point A on the elliptic curve (pointed by {nu1OrderPointBase, u2ScalarLength + 4})
k the input Scalar Number beforehand generated and filled (pointed
by{nu1ScalarNumber,u2ScalarLength + 4})
HashVal the hash value beforehand generated and filled (pointed by {nu1HashBase, u2ScalarLength
+ 4})
The Private Key (pointed by {nu1PrivateKey, u2ScalarLength +4})
SAM D5x/E5x Family Data Sheet
Public Key Cryptography Controller (PUKCC)
© 2019 Microchip Technology Inc.
Datasheet
DS60001507E-page 1531