Public/HP.Client.Update/Private/Test-HPUpdatePackage.ps1

function Test-HPUpdatePackage {
    param(
        [Parameter(Mandatory)][string]$Path,
        [Parameter(Mandatory)][string]$ExpectedSha256
    )

    $actualDigest = (Get-FileHash -LiteralPath $Path -Algorithm SHA256 -ErrorAction Stop).Hash
    if ($actualDigest -ine $ExpectedSha256) { throw "Catalog SHA-256 validation failed for '$Path'." }
    $signature = Get-AuthenticodeSignature -LiteralPath $Path -ErrorAction Stop
    $trustedHPSigner = $signature.SignerCertificate -and $signature.SignerCertificate.Subject -match '(?i)(?:^|,\s*)(?:O=HP Inc\.|O=Hewlett-Packard Company)(?:,|$)'
    if ($signature.Status -ne [System.Management.Automation.SignatureStatus]::Valid -or -not $trustedHPSigner) { throw "Authenticode signature validation failed for '$Path': $($signature.StatusMessage)" }
    $true
}