Some manufacturers may enable CCP seed/key security for certain CCP operations, particularly in software which is released to production. Configuring this in the application is discussed in Section 5.1.21, “CCP seed/key security (pcp_CCPSecurity)”.
CCP seed/key security requires that a Win32 DLL is built containing a function which will generate a key value from a seed value supplied by the ECU. The name and function prototype are specified in the ASAP1A and ASAP2 standards to be
BOOL SEEDKEYAPI ASAP1A_CCP_ComputeKeyFromSeed(BYTE *Seed, unsigned short SizeSeed, BYTE *Key, unsigned short MaxSizeKey, unsigned short *SizeKey); // Seed: Pointer to seed data // SizeSeed:Size of seed data (length of ‚Seed‘) // Key: Pointer, where DLL should insert the calculated key data. // MaxSizeKey: Maximum size of ‚Key‘. // SizeKey: Should be set from DLL corresponding to the number of data // inserted to ‚Key‘ (at most ‚MaxSizeKey‘) // Result: The value FALSE (= 0) indicates that the key could not be // calculated from seed data (e.g. ‚MaxSizeKey‘ is too small). // TRUE (!= 0) indicates success of key calculation.
Vision allows differently-named functions to be used, which may be convenient in cases such as supplying a single DLL containing multiple different seed/key algorithms for different strategies). Note though that this may make seed/key DLLs for Vision incompatibile with other calibrations tools which require a single function per DLL with a fixed name per the ASAP standard.