In Versal devices, the SHA-3 hash is signed with the private RSA/ECDSA key to generate a signature and is placed into the Versal device image. Upon boot, the SHA-3 hash is calculated on the image, and the signature stored in the image is passed into the RSA/ECDSA engine using the public key. If both the calculated SHA-3 hash and the verified signature match, the image is valid.
There are two public key types used in Versal devices: the primary public key (PPK) and the secondary public key (SPK). Each image is assigned its own or the same SPK. For example, the PLM could be assigned to use SPK0 and an application for the Cortex-A72 could be assigned the same SPK0 or its own SPK such as SPK1.
Versal devices have storage for three or five PPK hashes in the eFUSE memory: PPK0, PPK1, PPK2, and optionally PPK3 and PPK4. If you program any of the PPK eFUSE bits, the A-HWRoT is forced at boot time, and therefore, all software needs to be authenticated before it is loaded into the Versal device. The asymmetric key pair can be either RSA 4096 or ECDSA–P384 curve. For the three or five PPK choices, a combination of RSA and ECDSA hash values are allowed to be programmed.