Private/Verify-ADFSTkSigningCert.ps1
function Verify-ADFSTkSigningCert { param ( [string]$signingCertString ) [void][reflection.assembly]::LoadWithPartialName("System.IO") $memoryStream = new-object System.IO.MemoryStream $signCertificate = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 try { $signCertificateBytes = [system.Text.Encoding]::UTF8.GetBytes($signingCertString) $signCertificate.Import($signCertificateBytes) } catch { Write-ADFSTkVerboseLog "Could not convert signingCertString to X509 certificate" -MajorFault } $signCertificateHash = Get-FileHash -InputStream ([System.IO.MemoryStream]$signCertificate.RawData) #Get Signing Certificate Hash from config if ([string]::IsNullOrEmpty($Settings.configuration.signCertFingerprint)) { Write-ADFSTkVerboseLog "Certificate Fingerprint from configuration was null" -MajorFault } else { # This string may contain colons from other output like openssl and if it does, we will strip them as the comparison below requires them to be absent $signCertificateHashCompare = $Settings.configuration.signCertFingerprint -replace ":" } Write-ADFSTkLog "Comparing aggregate certificate hash of: $signCertificateHash.Hash to $signCertificateHashCompare" -EntryType Information return ($signCertificateHash.Hash -eq $signCertificateHashCompare) } |