Intel® Agilex™ Device Security User Guide

ID 683823
Date 1/20/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

4.10. Converting Owner Root Key, AES Root Key Certificates, and Fuse files to Jam STAPL File Formats

You may use the quartus_pfg command-line command to convert .qky, AES root key .ccert, and .fuse files to Jam* STAPL Format File (.jam) and Jam Byte Code Format File (.jbc). You can use these files to program Intel FPGAs using the Jam STAPL Player and the Jam STAPL Byte-Code Player, respectively.
A single .jam or .jbc contains several functions including a firmware helper image configuration and program, blank check, and verification of key and fuse programming.
CAUTION:
When you convert the AES root key .ccert file to .jam format, the .jam file contains the AES key in plaintext but obfuscated form. Consequently, you must protect the .jam file when storing the AES key. You can do this by provisioning the AES key in a secure environment.

Here are examples of quartus_pfg conversion commands:

quartus_pfg -c -o helper_device=AFGB014R24A \
"root0.qky;root1.qky;root2.qky" RootKey.jam 
quartus_pfg -c -o helper_device=AFGB014R24A \
"root0.qky;root1.qky;root2.qky" RootKey.jbc 
quartus_pfg -c -o helper_device=AFGB014R24A aes.ccert aes_ccert.jam 
quartus_pfg -c -o helper_device=AFGB014R24A aes.ccert aes_ccert.jbc 
quartus_pfg -c -o helper_device=AFGB014R24A settings.fuse settings_fuse.jam 
quartus_pfg -c -o helper_device=AFGB014R24A settings.fuse settings_fuse.jbc

For more information about the using the Jam STAPL Player for device programming refer to AN 425: Using the Command-Line Jam STAPL Solution for Device Programming.

Run the following commands to program the owner root public key and AES encryption key:

// To load the helper bitstream into the FPGA.
// The helper bitstream include provision firmware
quartus_jli -c 1 -a CONFIGURE RootKey.jam
// To program the owner root public key into virtual eFuses
quartus_jli -c 1 -a PUBKEY_PROGRAM RootKey.jam
//To program the owner root public key into physical eFuses
quartus_jli -c 1 -a PUBKEY_PROGRAM -e DO_UNI_ACT_DO_EFUSES_FLAG RootKey.jam
//To program the PR owner root public key into virtual eFuses
quartus_jli -c 1 -a PUBKEY_PROGRAM -e DO_UNI_ACT_DO_PR_PUBKEY_FLAG pr_rootkey.jam
//To program the PR owner root public key into physical eFuses
quartus_jli -c 1 -a PUBKEY_PROGRAM -e DO_UNI_ACT_DO_PR_PUBKEY_FLAG \
-e DO_UNI_ACT_DO_EFUSES_FLAG pr_rootkey.jam
//To program the AES encryption key CCERT into BBRAM
quartus_jli -c 1 -a CCERT_PROGRAM EncKeyBBRAM.jam
// To program the AES encryption key CCERT into physical eFuses
quartus_jli -c 1 -a CCERT_PROGRAM -e DO_UNI_ACT_DO_EFUSES_FLAG EncKeyEFuse.jam