Format-SecureBootUEFI

Format-SecureBootUEFI

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

Syntax

Parameter Set: __AllParameterSets
Format-SecureBootUEFI -Name <String> [-SignableFilePath <String> ] [-Time <String> ] [ <CommonParameters>]

Parameter Set: FormatForCertificates
Format-SecureBootUEFI -CertificateFilePath <String[]> -SignatureOwner <Guid> [-AppendWrite] [-ContentFilePath <String> ] [-FormatWithCert] [ <CommonParameters>]

Parameter Set: FormatForDelete
Format-SecureBootUEFI -Delete [ <CommonParameters>]

Parameter Set: FormatForHashes
Format-SecureBootUEFI -Algorithm <String> -Hash <String[]> -SignatureOwner <Guid> [-AppendWrite] [-ContentFilePath <String> ] [ <CommonParameters>]

Detailed 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.

Parameters

-Algorithm<String>

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

Aliases

none

Required?

true

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-AppendWrite

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

Aliases

none

Required?

false

Position?

named

Default Value

false

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-CertificateFilePath<String[]>

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.

Aliases

none

Required?

true

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-ContentFilePath<String>

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

Aliases

none

Required?

false

Position?

named

Default Value

none

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.

Aliases

none

Required?

true

Position?

named

Default Value

False

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.

Aliases

none

Required?

false

Position?

named

Default Value

false

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-Hash<String[]>

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

Aliases

none

Required?

true

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-Name<String>

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

Aliases

none

Required?

true

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByValue)

Accept Wildcard Characters?

false

-SignableFilePath<String>

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.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-SignatureOwner<Guid>

Specifies the GUID of the signature owner.

Aliases

none

Required?

true

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-Time<String>

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"

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

<CommonParameters>

This cmdlet supports the common parameters: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, and -OutVariable. For more information, see    about_CommonParameters (https://go.microsoft.com/fwlink/p/?LinkID=113216).

Inputs

The input type is the type of the objects that you can pipe to the cmdlet.

  • System.String

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

Outputs

The output type is the type of the objects that the cmdlet emits.

  • 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.

Examples

EXAMPLE 1

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

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

EXAMPLE 2

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

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

EXAMPLE 3

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

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

Confirm-SecureBootUEFI

Get-SecureBootPolicy

Get-SecureBootUEFI

Set-SecureBootUEFI