From 8048cf592859305137275de14197bbbafa845042 Mon Sep 17 00:00:00 2001 From: Kevin Jones Date: Wed, 19 Jan 2022 23:22:38 +0000 Subject: [PATCH] Use the built-in CSPRNG GetInt32 --- .../Default/NumericUserCodeGenerator.cs | 22 +------------------ 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/src/IdentityServer/Services/Default/NumericUserCodeGenerator.cs b/src/IdentityServer/Services/Default/NumericUserCodeGenerator.cs index 370063bb1..573a9c878 100644 --- a/src/IdentityServer/Services/Default/NumericUserCodeGenerator.cs +++ b/src/IdentityServer/Services/Default/NumericUserCodeGenerator.cs @@ -36,27 +36,7 @@ public class NumericUserCodeGenerator : IUserCodeGenerator /// public Task GenerateAsync() { - var next = Next(100000000, 999999999); + var next = RandomNumberGenerator.GetInt32(100000000, 1000000000); return Task.FromResult(next.ToString()); } - - private int Next(int minValue, int maxValue) - { - if (minValue > maxValue) throw new ArgumentOutOfRangeException(nameof(minValue)); - if (minValue == maxValue) return minValue; - long diff = maxValue - minValue; - - while (true) - { - var uint32Buffer = RandomNumberGenerator.GetBytes(8); - var rand = BitConverter.ToUInt32(uint32Buffer, 0); - - const long max = 1 + (long) uint.MaxValue; - var remainder = max % diff; - if (rand < max - remainder) - { - return (int) (minValue + rand % diff); - } - } - } } \ No newline at end of file