a
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
#Hash functions will be used for hashing results of report
|
||||
#Based on SHA-256 and SHA-512
|
||||
|
||||
function Get-SHA256Hash {
|
||||
Param (
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]
|
||||
$ClearString
|
||||
)
|
||||
|
||||
$hasher = [System.Security.Cryptography.HashAlgorithm]::Create('sha256')
|
||||
$hash = $hasher.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($ClearString))
|
||||
|
||||
$hashString = [System.BitConverter]::ToString($hash)
|
||||
$hashString.Replace('-', '')
|
||||
}
|
||||
|
||||
function GenerateHashTable{
|
||||
Param (
|
||||
[Parameter(Mandatory=$true)]
|
||||
[Report]
|
||||
$report
|
||||
)
|
||||
|
||||
#hashes for each recommendation
|
||||
$hashtable_sha256 = @{}
|
||||
foreach($recommendation in $report.Sections){
|
||||
$hash_sha256 = ""
|
||||
foreach($section in $recommendation.SubSections){
|
||||
foreach($test in $section.AuditInfos){
|
||||
#hash each test status
|
||||
$statusHash_sha256 = (Get-SHA256Hash $test.Status)
|
||||
$hash_sha256 += $statusHash_sha256
|
||||
#hash combination of tests
|
||||
$hash_sha256 = (Get-SHA256Hash $hash_sha256)
|
||||
}
|
||||
}
|
||||
#add final hash to hashlist
|
||||
$hashtable_sha256.add($recommendation.Title, $hash_sha256)
|
||||
}
|
||||
|
||||
#checksum hash for overal check
|
||||
$overallHash_sha256 = ""
|
||||
foreach($hash in $hashtable_sha256.values){
|
||||
#add recommendation hash to overall hash
|
||||
$overallHash_sha256 += $hash
|
||||
#hash this value again
|
||||
try{
|
||||
$overallHash_sha256 = Get-SHA256Hash $overallHash_sha256 -ErrorAction Stop
|
||||
}
|
||||
catch{
|
||||
Write-Warning "Hash code for report section couldn't be created."
|
||||
}
|
||||
}
|
||||
|
||||
$hashtable_sha256.add($report.Title, $overallHash_sha256)
|
||||
return $hashtable_sha256
|
||||
}
|
||||
Reference in New Issue
Block a user