Versal AI Edge Series Gen 2 and Versal Prime Series Gen 2 Authenticated JTAG HSM Flow - Versal AI Edge Series Gen 2 and Versal Prime Series Gen 2 Authenticated JTAG HSM Flow - 2026.1 English - UG1283

Bootgen User Guide (UG1283)

Document ID
UG1283
Release Date
2026-06-23
Version
2026.1 English

Message Format

Versal AI Edge Series Gen 2 and Versal Prime Series Gen 2 Auth JTAG Message format always includes PPK and SPK. In comparison to Versal, following is the new format for Versal AI Edge Series Gen 2 and Versal Prime Series Gen 2 devices.

Offset Size Fields Descriptions
0x00 4 B Id Word (0x58414A47 //XAJG) Magic identification word. Fixed value 0x58414A47, ASCII Fixed value 0x58414A47, ASCII "XAJG". The PLM uses this to recognise the buffer as an Auth JTAG image.
0x04 4 B Auth JTAG Message Length Total length of the entire Auth JTAG image, in bytes (0xC80 = 3200 for RSA-4096). Written by Bootgen as sizeof(AuthenticatedJtagRSA-ImageStructure).
0x08 4 B Authentication Header Authentication Certificate header word identifying the algorithm and hash. For RSA-4096 + SHA-3 it is AUTH_HDR_TELLURIDE_RSA_4096.
0x0C 4 B Total PPK Size (includes key alignment length in case, else = actual PPK Size) PPK size including any trailing alignment padding. For RSA-4096: 1028 + 12 = 1040 bytes.
0x10 4 B Actual PPK Size Raw PPK size without alignment padding. For RSA-4096: 1028 bytes (Modulus N = 512, R = 512, Exponent = 4).
0x14 4 B Total Auth JTAG Message Signature Size (includes sign alignment length in case, else = actual Hash Block Signature Size) Auth JTAG Message Signature size including any alignment padding. For RSA-4096: 512 bytes (already 16-byte aligned).
0x18 4 B Actual Auth JTAG Message Signature Size Raw Auth JTAG Message Signature size without alignment padding. For RSA-4096: 512 bytes.
0x1C 4 B Auth Jtag Message Revocation ID Partition-level revocation ID for this Auth JTAG image, taken from revoke_id in the authjtag_config { } BIF block. PLM rejects the image if the matching eFUSE revoke bit is programmed. Default 0.
0x20 4 B Attributes Bit-field of feature enables. Bit 0 (user Device DNA mask) is set when device_dna is provided in the BIF; other bits reserved.
0x24 16 B Device DNA 128-bit eFUSE Device DNA the image is bound to. Set from device_dna in the authjtag_config { } BIF block. All-zero when no DNA binding is requested.
0x34 4 B JTAG Timeout Session timeout in milliseconds, from jtag_timeout in the authjtag_config { } BIF block. A value of 0 disables the timeout (session stays open until reset).
0x38 8 B alignment Reserved padding (two 32-bit words) ensuring the PPK that follows starts on a 0x40 (64-byte) boundary. Always zero.
0x40 1028 B PPK Primary Public Key. For RSA-4096: 512-byte modulus N, 512-byte modular reduction R, 4-byte exponent E. Stored in the device-native (re-arranged) byte order.
  12 B PPK Alignment (for 16-byte alignment)
Note: PPK and SPK key and signatures lengths can vary based on algorithm.
Three 32-bit words of padding bringing the next field to a 16-byte boundary (0x450). Always zero.
  4 B Total SPK Size (includes key alignment length in case, else = actual PPK Size) SPK size including any trailing alignment padding. For RSA-4096: 1028 + 12 = 1040 bytes.
  4 B Actual SPK Size Raw SPK size without alignment padding. For RSA-4096: 1028 bytes.
  4 B Total SPK Signature Size (includes sign alignment length in case, else = actual Hash Block Signature Size) SPK Signature size including any alignment padding. For RSA-4096: 512 bytes (already 16-byte aligned).
  4 B Actual SPK Signature Size Raw SPK Signature size without alignment padding. For RSA-4096: 512 bytes.
  4 B SPK Revocation ID SPK-level revocation ID from spk_revoke_id in the authjtag_config { } BIF block. PLM rejects the image if the matching eFUSE bit is programmed. Default 0.
  12 B SPK Header Alignment Three 32-bit words of padding bringing the SPK that follows to a 16-byte boundary (0x470). Always zero.
  1028 B SPK Secondary Public Key. Same layout as PPK (512-byte N, 512-byte R, 4-byte E for RSA-4096). Stored in device-native byte order.
  12 B SPK Alignment Three 32-bit words of padding bringing the SPK Signature to a 16-byte boundary (0x880). Always zero.
  512 B SPK Signature Signature over the SPK header block (fields at offsets 0x450 through 0x87F, that is, from Total SPK Size through SPK Alignment). Generated with the PSK using RSA-PSS / SHA-384. In the HSM flow this is the signature returned for spk.<sha>..
  0 B SPK Signature Alignment Logical placeholder; no padding is required for RSA-4096 because the 512-byte SPK Signature is already 16-byte aligned. For algorithms whose signature size is not a multiple of 16 bytes (for example, ECDSA-P521), this field carries the alignment padding.
  512 B Auth JTAG Message Signature Signature over the entire image from offset 0x00 through the end of SPK Signature Alignment (offset 0xA7F for RSA-4096), that is, everything in the image except this signature itself. Generated with the SSK using RSA-PSS / SHA-384. In the HSM flow this is the signature returned for authJtag.<sha> and pointed to by the authjtag_sign attribute in the Stage 2 BIF.
Auth Header
Bits Size in bits Field Description
[31:18] 14 Reserved Reserved
[17:16] 2 PPK Key Sel

0: PPK 0 Selection in Efuse

1: PPK 1 Selection in Efuse

2: PPK 2 Selection in Efuse

3: Reserved

[15:14] 2 Authentication certificate Format 00: RSASSA-PSS
[13:12] 2 Authentication certificate Version 00: Current AC
11 1 PPK Key Type 0: Hash Key
[10:9] 2 PPK Key source 0: eFuse
8 1 SPK Enable 1: SPK Enabled
[7:4] 4 HASH Algorithm

0: SHA2-384 (not supported for TROM)

1: SHA3/384

2 to 16: Reserved for future use

[3:0] 4 Public Algorithm

0: Non-Secure

1: RSA4096

2: ECDSAp384

3: ECDSAp521 (only for PLM loadable partitions)

4: LMS with HSS

5: LMS

16 to 6: Reserved for future

Example

all:
{
  pskfile = primary.lms.prv
  ppkfile = primary.lms.pub
  sskfile = secondary.lms.prv
  spkfile = secondary.lms.pub
  authjtag_config { revoke_id = 0x23 device_dna = 112233445566778899AABBCCDDEEFF11 jtag_timeout = 0x11223344 }
}

Command: ./bootgen -arch versal_2ve_2vm -image test.bif -authenticatedjtag lms-sha256 authJtag-lms-sha256.bin -log trace.

Options available for authenticatedjtag: rsa/ ecdsa/ lms-sha256/ lms-shake256/ hss-sha256/ hss-shake256.