Fix sha tests

This commit is contained in:
Ryan Brandenburg 2019-02-14 14:16:42 -08:00 committed by Artak
parent f8dea0e7f9
commit a47139f033
1 changed files with 6 additions and 4 deletions

View File

@ -41,14 +41,16 @@ namespace Microsoft.AspNetCore.Identity.Test
[MemberData(nameof(ScriptWithIntegrityData))] [MemberData(nameof(ScriptWithIntegrityData))]
public async Task IdentityUI_ScriptTags_SubresourceIntegrityCheck(ScriptTag scriptTag) public async Task IdentityUI_ScriptTags_SubresourceIntegrityCheck(ScriptTag scriptTag)
{ {
var sha256Integrity = await GetShaIntegrity(scriptTag, SHA256.Create(), "sha256"); var integrity = await GetShaIntegrity(scriptTag);
Assert.Equal(scriptTag.Integrity, sha256Integrity); Assert.Equal(scriptTag.Integrity, integrity);
} }
private async Task<string> GetShaIntegrity(ScriptTag scriptTag, HashAlgorithm algorithm, string prefix) private async Task<string> GetShaIntegrity(ScriptTag scriptTag)
{ {
var isSha256 = scriptTag.Integrity.StartsWith("sha256");
var prefix = isSha256 ? "sha256" : "sha384";
using (var respStream = await _httpClient.GetStreamAsync(scriptTag.Src)) using (var respStream = await _httpClient.GetStreamAsync(scriptTag.Src))
using (var alg = SHA256.Create()) using (var alg = isSha256 ? SHA256.Create() : SHA384.Create())
{ {
var hash = alg.ComputeHash(respStream); var hash = alg.ComputeHash(respStream);
return $"{prefix}-" + Convert.ToBase64String(hash); return $"{prefix}-" + Convert.ToBase64String(hash);