Automotive Diagnostic Command Set Toolkit Help

ndUDSRequestSeed

  • Updated2024-08-07
  • 1 minute(s) read

ndUDSRequestSeed

Purpose

Executes the UDS SecurityAccess service to retrieve a seed from the ECU.

Format

long ndUDSRequestSeed(
       TD1 *diagRef,
       unsigned char accessMode,
       unsigned char seedOut[],
       long *len,
       LVBoolean *success);

Input

diagRef

Specifies the diagnostic session handle, obtained from ndOpenDiagnosticOnCANFD or ndOpenDiagnosticOnIPStack and passed to subsequent diagnostic functions. Normally, it is not necessary to manually manipulate the elements of this struct.

accessMode

Indicates the security level to be granted. The values are application specific. This is an odd number, usually 1.

Output

seedOut

Returns the seed from the ECU.

len

On input, len must contain the seedOut array length. On return, it contains the number of valid data bytes in the seedOut array.

success

Indicates successful receipt of a positive response message for this diagnostic service.

Return Value

The return value indicates the function call status as a signed 32-bit integer. Zero means the function executed successfully. A negative value specifies an error, which means the function did not perform the expected behavior. A positive value specifies a warning, which means the function performed as expected, but a condition arose that may require attention.

Use the ndStatusToString function to obtain a descriptive string for the return value.

Description

The usual procedure for getting a security access to the ECU is as follows:

  1. Request a seed from the ECU using ndUDSRequestSeed with access mode = n.
  2. From the seed, compute a key for the ECU on the host.
  3. Send the key to the ECU using ndUDSSendKey with access mode = n + 1.
  4. The security access is granted if the ECU validates the key sent. Otherwise, an error is returned.

Log in to get a better experience