2.1. Creating a Signature Chain
can be converted into the equivalent call to the reference implementation as follows
quartus_sign --family=stratix10 --operation=make_root root_public.pem root.qky
pgm_py stratix10_sign.py --operation=make_root root_public.pem root.qky
Intel® Quartus® Prime Pro Edition software includes the quartus_sign, pgm_py, and stratix10_sign.py tools. You may use the Nios® II command shell tool, which automatically sets appropriate environment variables, to access the tools.
Follow these instructions to bring up a Nios® II command shell.
|Windows||On the Start menu, point to Programs > Intel FPGA > Nios II EDS > <version> and click Nios II <version> Command Shell.|
|Linux||In a command shell change to the <install_dir>/nios2eds and run the following command:
The examples in this section assume signature chain and configuration bitstream files are located in the current working directory. If you choose to follow the examples where key files are kept on the file system, those examples assume the key files are located in the current working directory. You may choose which directories to use, and the tools support relative file paths. If you choose to keep key files on the file system, you must carefully manage access permissions to those files.
Intel recommends the use of a commercially available Hardware Security Module (HSM) to store cryptographic keys and perform cryptographic operations. The quartus_sign tool and reference implementation include a Public Key Cryptography Standard #11 (PKCS #11) Application Programming Interface (API) to interact with an HSM while performing signature chain operations. The stratix10_sign.py reference implementation includes an interface abstract as well as an example interface to SoftHSM.
You may use these example interfaces to implement an interface to your HSM. Refer to the documentation from your HSM vendor for more information about implementing an interface to and operating your HSM.
SoftHSM is a software implementation of a generic cryptographic device with a PKCS #11 interface that is made available by the OpenDNSSEC® project. You may find more information, including instructions on how to download, build, and install OpenHSM, at the OpenDNSSEC project. The examples in this section utilize SoftHSM version 2.6.1. The examples in this section additionally use the pkcs11-tool utility from OpenSC to perform additional PKCS #11 operations with a SoftHSM token. You may find more information, including instructions on how to download, build, and install pkcs11-tool from OpenSC.