Handle UTOC signature error?

IPlatformFilePak.cpp has ways to be notified on PAK file signature validation failure (e.g. FPakChunkSignatureCheckFailedHandler), but despite there being code to detect signature issues for UTOC files, I can’t find a way to hook into delegates fired when the failure occurs. Is there a system to hook into when these errors are detected, or do I have to add my own through engine divergences?

Hey Nathan,

as a quick test, could you try starting the game with the “-checkpak” parameter?

This should enable signature verifications on .utoc containers and call into the same FPakChunkSignatureCheckFailedHandler that is used for regular paks if they fail.

I’m not sure why this is gated by the extra parameter and disabled by default. I’m still investigating why that is the case or if there’s something else that is supposed to perform the regular signature checks, so I’ll get back to you with more information once I have it.

Kind Regards,

Sebastian

The handler for I/O store container signature errors is located in FIoDispatcher::OnSignatureError. This delegate is connected to the PAK signature error delegate, ensuring that any signature errors from container files are propagated through the PAK file system.

This is expected to work for all asset signature errors when the container file is signed.

Is this expected to work for all instances of signature validation errors in 5.4? I will continue investigating the differences between 5.4 and newer versions, but even with the use of -checkpak, I don’t believe all instances of the error are captured.

Is the signature validation something that can/should be run at all times - even when players boot the game? I want to make sure I’m not adding time to boot/initialization if I can avoid it, and I don’t know if there’s a way to signal to the engine that a previous crash was caused by asset loading failure for that to then prompt signature validation.