diff --git a/LWCredentialProvider/UsbManager.cs b/LWCredentialProvider/UsbManager.cs index 09b9af8..4144327 100644 --- a/LWCredentialProvider/UsbManager.cs +++ b/LWCredentialProvider/UsbManager.cs @@ -4,12 +4,17 @@ using System.Linq; using System.Security.Cryptography; using System.Text; +using System.Text.RegularExpressions; using System.Runtime.InteropServices; using Microsoft.Win32.SafeHandles; // namespace LWCredentialProvider // { public class USBManager { + private static readonly Regex DateRegex = new Regex(@"^\d{8}-\d{6}$", RegexOptions.Compiled); + private static readonly Regex HashRegex = new Regex(@"^[0-9A-F]{10}$", RegexOptions.Compiled); + private static readonly Regex GuidRegex = new Regex(@"^[0-9A-F]{1,32}$", RegexOptions.Compiled); + [DllImport("kernel32.dll", SetLastError = true)] private static extern bool DeviceIoControl( SafeFileHandle hDevice, @@ -138,20 +143,20 @@ public static bool CheckUSBKey(string usbKey) // Validate date format - if (!System.Text.RegularExpressions.Regex.IsMatch(date, @"^\d{8}-\d{6}$")) + if (!DateRegex.IsMatch(date)) return false; Console.WriteLine($"hash: {hash}"); // Validate hash format - if (!System.Text.RegularExpressions.Regex.IsMatch(hash, @"^[0-9A-F]{10}$")) + if (!HashRegex.IsMatch(hash)) return false; Console.WriteLine($"guid: {guid}"); // Validate GUID format - if (!System.Text.RegularExpressions.Regex.IsMatch(guid, @"^[0-9A-F]{1,32}$")) + if (!GuidRegex.IsMatch(guid)) return false;