Format-SecureBootUEFI

Formats certificates or hashes into a content object that is returned and creates a file that is ready to be signed.

Syntax

Format-SecureBootUEFI
      -Name <String>
      -SignatureOwner <Guid>
      -CertificateFilePath <String[]>
      [-FormatWithCert]
      [-SignableFilePath <String>]
      [-Time <String>]
      [-AppendWrite]
      [-ContentFilePath <String>]
      [<CommonParameters>]
Format-SecureBootUEFI
      -Name <String>
      -SignatureOwner <Guid>
      -Hash <String[]>
      -Algorithm <String>
      [-SignableFilePath <String>]
      [-Time <String>]
      [-AppendWrite]
      [-ContentFilePath <String>]
      [<CommonParameters>]
Format-SecureBootUEFI
      -Name <String>
      [-Delete]
      [-SignableFilePath <String>]
      [-Time <String>]
      [<CommonParameters>]

Description

The Format-SecureBootUEFI cmdlet receives certificates or hashes as input and formats the input into a content object that is returned. This returned object will be used by the Set-SecureBootUEFI cmdlet for actually updating the variable. If a signable file is specified, then this cmdlet creates a file with the specified name that needs to be signed.

This cmdlet will run on both UEFI and BIOS (non-UEFI) computers.

Examples

EXAMPLE 1

PS C:\> Format-SecureBootUefi -Name PK -SignatureOwner 12345678-1234-1234-1234-123456789abc -CertificateFilePath PK.cer -SignableFilePath GeneratedFileToSign.bin -Time 2011-11-01T13:30:00Z | Format-List
Name        : PK 
Time        : 2011-11-01T13:30:00Z 
AppendWrite : False 
Content     : {232, 102, 87, 60...}

This example formats the private key in PK.cer being piped into the Set-SecureBootUEFI cmdlet.

EXAMPLE 2

PS C:\> Format-SecureBootUEFI -Name DBX -SignatureOwner 12345678-1234-1234-1234-123456789abc -Algorithm SHA256 -Hash 0011223344556677889900112233445566778899001122334455667788990011 -SignableFilePath GeneratedFileToSign.bin -Time 2011-11-01T13:30:00Z -AppendWrite | Format-List
Name        : dbx 
Time        : 2011-11-01T13:30:00Z 
AppendWrite : True 
Content     : {18, 165, 108, 130...}

This example formats the hash being appended to the DBX UEFI variable when piped into the Set-SecureBootUEFI cmdlet.

EXAMPLE 3

PS C:\> Format-SecureBootUEFI -Name KEK -Delete -SignableFilePath GeneratedFileToSign.bin -Time 2011-11-01T13:30:00Z | Format-List
Name        : KEK 
Time        : 2011-11-01T13:30:00Z 
AppendWrite : False 
Content     :

This example formats the KEK UEFI variable being deleted when piped into the Set-SecureBootUEFI cmdlet.

Parameters

-Algorithm

Specifies, if this cmdlet is formatting hashes, which algorithm is being used. The acceptable values for this parameter are: SHA1, SHA256, SHA384, or SHA512.

Type:String
Aliases:alg
Accepted values:sha1, sha256, sha384, sha512
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-AppendWrite

Indicates that the contents of the current variable is appended instead of overwritten.

Type:SwitchParameter
Aliases:append
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CertificateFilePath

Specifies a list of one or more files each containing a certificate that is used to generate the content object.

If only the name is specified, then the file must be in the current working directory; otherwise the full path of the file must be specified.

Type:String[]
Aliases:c
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ContentFilePath

Specifies the name of the file that is created and contains the information for the content object that is generated by this cmdlet.

Type:String
Aliases:f
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Delete

Indicates that the content object, as well as the appropriate sign-able file, is created that deletes the variable.

Type:SwitchParameter
Aliases:del
Position:Named
Default value:False
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-FormatWithCert

Indicates whether the certificate will be stored or just the public key. If this parameter is set, then the entire certificate is stored in the content object.

Type:SwitchParameter
Aliases:cert
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Hash

Specifies a list of hashes that are used to generate the content.

Type:String[]
Aliases:h
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Name

Specifies the name of the UEFI environment variable. The acceptable values for this parameter are: PK, KEK, DB, or DBX.

Type:String
Aliases:n
Accepted values:PK, KEK, db, dbx
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-SignableFilePath

Specifies the file that contains the contents of the data that is ready to be signed.

If only the name is specified, then the file must be in the current working directory; otherwise the full path of the file must be specified.

Type:String
Aliases:s
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SignatureOwner

Specifies the GUID of the signature owner.

Type:Guid
Aliases:g
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Time

Specifies the timestamp that is used in the signature. This parameter value should be formatted as follows so that it will be accepted by the DateTime object. "2011-11-01T13:30:00Z"

Type:String
Aliases:t
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Inputs

String

The String object represents the UEFI variable name that may be output from the Get-SecureBootUEFI cmdlet.

Outputs

Microsoft.SecureBoot.Commands.UEFIFormattedVariable

The UEFIFormattedVariable object contains information about the package that is built up to be set. The following members are part of the UEFIFormattedVariable object.

-- A string named Name.

-- A string named Time.

-- A boolean named AppendWrite.

-- An array of bytes named Content.

The UEFIFormattedVariable object can be used to pipe into the Set-SecureBootUEFIcmdlet.