Secure Boot Customization Guide - Technical whitepaper
Technical whitepaper
© Copyright 2017 HP Development Company, L.P.
2 Setting up a customized Secure Boot environment 14
Format-SecureBootUEFI Command Line Parameter
Meaning
-Name PK Indicates that you are working with the Platform Key (PK)
-SignatureOwner DEF16466-F946-4E71-BE22-CF8B1B7B36A0 The hexadecimal number is a GUID that uniquely identifies you
to the platform. You can generate a GUID using the Microsoft
GuidGen.exe tool, among other means.
-ContentFilePath .\PK_SigList.bin This file is created to hold the content that is generated by
Format-SecureBootUEFI, i.e. the formatted content.
-FormatWithCert Tells Format-SecureBootUEFI to integrate the entire certificate
into the formatted content.
-Certificate .\PK.CER Indicates the path to the desired certificate, in this case, the PK
certificate.
-SignableFilePath .\PK_SigList_Serialization_for_PK.bin Specifies the file that should be signed after formatting.
-Time 2016-02-01T13:30:00Z Specifies the current date and time, which must be specified.
Table 1 List of switches useful for Format-SecureBootUEFI command to format the Platform Key (PK)
If successful, the command should produce output similar to the following:
Figure 12 Successful PK format
It is the SignableFilePath file, in this case, PK_SigList_Serialization_for_PK.bin, which is submitted to your HSM solution for
signing. This file should be signed using the private key for your new PK. A proper signing command for
PK_SigList_Serialization_for_PK.bin, if using a PFX file
2
, is as follows. In this case, signtool must be in your path:
Figure 13 Command line to create signed PK
Replace <password> with the actual private key password for your PFX file. The result of the above command is a signed PK
serialized into a file called PK_SigList_Serialization_for_PK.bin.p7. You should, of course, use the signed file that provided
by your HSM provider.
Once you have the signed PK, it is ready for import to your platform. Importing is done with the Set-SecureBootUEFI
command inside Windows PowerShell. There are two steps possible here. The first step simply creates a valid time-
authenticated variable package which could be imported using a simple UEFI SetVariable() command. This package is then
saved to a file called PK_NewKey_Import_PK.bin. This step is worth running even if you plan to use Windows tools to import
2
This would be the approach if you used self-signing certificates, but it is strongly recommended that you perform the same action in the
context of your own HSM provider.
signtool.exe sign /fd sha256 /p7 .\ /p7co 1.2.840.113549.1.7.1 /p7ce DetachedSignedData
/a /f .\PK.PFX /p <password> PK_SigList_Serialization_for_PK.bin