Skip to content

Commit 8fbb1f9

Browse files
committed
Use SHA256 on FIPS environments for job type/consumer hash generation
1 parent dd38888 commit 8fbb1f9

1 file changed

Lines changed: 28 additions & 6 deletions

File tree

src/MassTransit/JobService/JobService/JobMetadataCache.cs

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,22 @@ public static Guid GenerateJobTypeId(string queueName)
1313
{
1414
var key = GenerateJobTypeName(queueName);
1515

16-
using var hasher = MD5.Create();
16+
if (CryptoConfig.AllowOnlyFipsAlgorithms)
17+
{
18+
using var hasher = SHA256.Create();
1719

18-
var data = hasher.ComputeHash(Encoding.UTF8.GetBytes(key));
20+
var data = hasher.ComputeHash(Encoding.UTF8.GetBytes(key));
1921

20-
return new Guid(data);
22+
return new Guid(new ReadOnlySpan<byte>(data, 0, 16).ToArray());
23+
}
24+
else
25+
{
26+
using var hasher = MD5.Create();
27+
28+
var data = hasher.ComputeHash(Encoding.UTF8.GetBytes(key));
29+
30+
return new Guid(data);
31+
}
2132
}
2233

2334
public static string GenerateJobTypeName(string queueName)
@@ -39,11 +50,22 @@ public static Guid GenerateRecurringJobId(string jobName)
3950
{
4051
var key = GenerateJobTypeName(jobName);
4152

42-
using var hasher = MD5.Create();
53+
if (CryptoConfig.AllowOnlyFipsAlgorithms)
54+
{
55+
using var hasher = SHA256.Create();
56+
57+
var data = hasher.ComputeHash(Encoding.UTF8.GetBytes(key));
58+
59+
return new Guid(new ReadOnlySpan<byte>(data, 0, 16).ToArray());
60+
}
61+
else
62+
{
63+
using var hasher = MD5.Create();
4364

44-
var data = hasher.ComputeHash(Encoding.UTF8.GetBytes(key));
65+
var data = hasher.ComputeHash(Encoding.UTF8.GetBytes(key));
4566

46-
return new Guid(data);
67+
return new Guid(data);
68+
}
4769
}
4870

4971
public static string GenerateJobTypeName(string jobName)

0 commit comments

Comments
 (0)