diff --git a/README.md b/README.md index efb696b..2eb4ebe 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ CaptchaKit is an ASP.NET Core CAPTCHA foundation with server-side, one-time validation and pluggable generators and storage. -`CaptchaKit.Core` has provider-neutral contracts. `CaptchaKit.AspNetCore` supplies a SkiaSharp text-image generator and `IDistributedCache` storage. +`CaptchaKit.Core` has provider-neutral contracts. `CaptchaKit.AspNetCore` supplies randomized text-image, selection, and one-click challenges with `IDistributedCache` storage. The package does not claim that image CAPTCHA alone defeats determined automation. Deploy it with rate limits, account lockout, and appropriate risk controls. @@ -27,7 +27,7 @@ builder.Services.AddCaptchaKit(options => }); ``` -An endpoint can obtain an image challenge and return it in the format used by its UI: +An endpoint can obtain a challenge and return its type, prompt, choices, and optional image in the format used by its UI: ```csharp var challenge = await captcha.CreateAsync(cancellationToken); diff --git a/artifacts/CaptchaKit.AspNetCore.0.1.0-preview.1.nupkg b/artifacts/CaptchaKit.AspNetCore.0.1.0-preview.1.nupkg index 4404d58..66ccf08 100644 Binary files a/artifacts/CaptchaKit.AspNetCore.0.1.0-preview.1.nupkg and b/artifacts/CaptchaKit.AspNetCore.0.1.0-preview.1.nupkg differ diff --git a/artifacts/CaptchaKit.AspNetCore.0.1.0-preview.2.nupkg b/artifacts/CaptchaKit.AspNetCore.0.1.0-preview.2.nupkg new file mode 100644 index 0000000..4a7c668 Binary files /dev/null and b/artifacts/CaptchaKit.AspNetCore.0.1.0-preview.2.nupkg differ diff --git a/artifacts/CaptchaKit.Core.0.1.0-preview.1.nupkg b/artifacts/CaptchaKit.Core.0.1.0-preview.1.nupkg index a242d48..6670080 100644 Binary files a/artifacts/CaptchaKit.Core.0.1.0-preview.1.nupkg and b/artifacts/CaptchaKit.Core.0.1.0-preview.1.nupkg differ diff --git a/artifacts/CaptchaKit.Core.0.1.0-preview.2.nupkg b/artifacts/CaptchaKit.Core.0.1.0-preview.2.nupkg new file mode 100644 index 0000000..154645b Binary files /dev/null and b/artifacts/CaptchaKit.Core.0.1.0-preview.2.nupkg differ diff --git a/src/CaptchaKit.AspNetCore/CaptchaKit.AspNetCore.csproj b/src/CaptchaKit.AspNetCore/CaptchaKit.AspNetCore.csproj index 612b588..04dac06 100644 --- a/src/CaptchaKit.AspNetCore/CaptchaKit.AspNetCore.csproj +++ b/src/CaptchaKit.AspNetCore/CaptchaKit.AspNetCore.csproj @@ -5,7 +5,7 @@ enable false CaptchaKit.AspNetCore - 0.1.0-preview.1 + 0.1.0-preview.2 CaptchaKit Contributors ASP.NET Core and distributed-cache integration for CaptchaKit. MIT diff --git a/src/CaptchaKit.AspNetCore/CaptchaKitService.cs b/src/CaptchaKit.AspNetCore/CaptchaKitService.cs index f0af069..8451ebd 100644 --- a/src/CaptchaKit.AspNetCore/CaptchaKitService.cs +++ b/src/CaptchaKit.AspNetCore/CaptchaKitService.cs @@ -12,12 +12,15 @@ public sealed class CaptchaKitOptions public int CodeLength { get; set; } = 5; public TimeSpan Lifetime { get; set; } = TimeSpan.FromMinutes(2); public string CacheKeyPrefix { get; set; } = "captchakit:"; + public bool RequireBrowserProof { get; set; } + public bool EnableOneClickChallenge { get; set; } = true; + public bool EnableSelectionChallenge { get; set; } = true; } public interface ICaptchaKitService { - Task CreateAsync(CancellationToken cancellationToken = default); - Task VerifyAsync(string id, string answer, CancellationToken cancellationToken = default); + Task CreateAsync(CaptchaRequestContext? context = null, CancellationToken cancellationToken = default); + Task VerifyAsync(string id, string answer, CaptchaRequestContext? context = null, CancellationToken cancellationToken = default); } public sealed class CaptchaKitService( @@ -25,28 +28,35 @@ public sealed class CaptchaKitService( ICaptchaChallengeStore store, CaptchaKitOptions options) : ICaptchaKitService { - public async Task CreateAsync(CancellationToken cancellationToken = default) + public async Task CreateAsync(CaptchaRequestContext? context = null, CancellationToken cancellationToken = default) { + if (options.RequireBrowserProof && !HasBrowserProof(context)) + throw new ArgumentException("A browser proof is required for this captcha challenge.", nameof(context)); var id = Convert.ToHexString(RandomNumberGenerator.GetBytes(24)); var expiresAt = DateTimeOffset.UtcNow.Add(options.Lifetime); var generated = generator.Generate(new CaptchaGenerationRequest(id, expiresAt, options.CodeLength)); if (!string.Equals(generated.Challenge.Id, id, StringComparison.Ordinal)) throw new InvalidOperationException("The captcha generator must preserve the requested challenge ID."); - await store.StoreAsync(id, Hash(id, Normalize(generated.Answer)), expiresAt, cancellationToken); + await store.StoreAsync(id, Hash(id, Normalize(generated.Answer), BrowserBinding(context)), expiresAt, cancellationToken); return generated.Challenge; } - public async Task VerifyAsync(string id, string answer, CancellationToken cancellationToken = default) + public async Task VerifyAsync(string id, string answer, CaptchaRequestContext? context = null, CancellationToken cancellationToken = default) { - if (string.IsNullOrWhiteSpace(id) || string.IsNullOrWhiteSpace(answer)) + if (string.IsNullOrWhiteSpace(id) || string.IsNullOrWhiteSpace(answer) || + (options.RequireBrowserProof && !HasBrowserProof(context))) return false; var expected = await store.TakeAsync(id, cancellationToken); - return expected is not null && FixedEquals(expected, Hash(id, Normalize(answer))); + return expected is not null && FixedEquals(expected, Hash(id, Normalize(answer), BrowserBinding(context))); } private static string Normalize(string value) => value.Trim().ToUpperInvariant(); - private static string Hash(string id, string answer) => - Convert.ToHexString(SHA256.HashData(Encoding.UTF8.GetBytes($"{id}:{answer}"))); + private static bool HasBrowserProof(CaptchaRequestContext? context) => + !string.IsNullOrWhiteSpace(context?.BrowserProof) && context.BrowserProof.Length <= 256; + private static string BrowserBinding(CaptchaRequestContext? context) => + HasBrowserProof(context) ? Hash(context!.BrowserProof!, "browser", "") : "unbound"; + private static string Hash(string id, string answer, string browserBinding) => + Convert.ToHexString(SHA256.HashData(Encoding.UTF8.GetBytes($"{id}:{answer}:{browserBinding}"))); private static bool FixedEquals(string left, string right) => CryptographicOperations.FixedTimeEquals(Encoding.UTF8.GetBytes(left), Encoding.UTF8.GetBytes(right)); } @@ -72,6 +82,41 @@ public sealed class DistributedCaptchaChallengeStore( private string Key(string id) => options.CacheKeyPrefix + id; } +public sealed class RandomCaptchaGenerator(CaptchaKitOptions options) : ICaptchaGenerator +{ + private readonly SkiaTextCaptchaGenerator _text = new(); + + public GeneratedCaptcha Generate(CaptchaGenerationRequest request) + { + var roll = RandomNumberGenerator.GetInt32(100); + if (options.EnableOneClickChallenge && roll < 15) + { + return new GeneratedCaptcha( + new CaptchaChallenge(request.Id, CaptchaChallengeType.OneClick, request.ExpiresAt, + "请点击确认按钮继续登录"), + "CONFIRM"); + } + if (options.EnableSelectionChallenge && roll < 45) + { + var correct = RandomNumberGenerator.GetInt32(2, 10).ToString(); + var candidates = Enumerable.Range(1, 9) + .Where(x => x.ToString() != correct) + .OrderBy(_ => RandomNumberGenerator.GetInt32(int.MaxValue)) + .Take(3) + .Append(int.Parse(correct)) + .OrderBy(_ => RandomNumberGenerator.GetInt32(int.MaxValue)) + .Select(x => new CaptchaChoice($"choice-{x}", x.ToString())) + .ToList(); + var answer = candidates.Single(x => x.Label == correct).Id; + return new GeneratedCaptcha( + new CaptchaChallenge(request.Id, CaptchaChallengeType.Selection, request.ExpiresAt, + $"请选择数字 {correct}", candidates), + answer); + } + return _text.Generate(request); + } +} + public sealed class SkiaTextCaptchaGenerator : ICaptchaGenerator { private const string Alphabet = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789"; @@ -99,7 +144,8 @@ public sealed class SkiaTextCaptchaGenerator : ICaptchaGenerator DrawNoise(canvas, 160, 54, 8); using var image = SKImage.FromBitmap(bitmap); using var data = image.Encode(SKEncodedImageFormat.Png, 100); - var challenge = new CaptchaChallenge(request.Id, "image/png", data.ToArray(), request.ExpiresAt); + var challenge = new CaptchaChallenge(request.Id, CaptchaChallengeType.TextImage, request.ExpiresAt, + "请输入图中的字符", null, "image/png", data.ToArray()); return new GeneratedCaptcha(challenge, answer); } @@ -133,7 +179,7 @@ public static class CaptchaKitServiceCollectionExtensions options.Lifetime > TimeSpan.FromMinutes(10)) throw new ArgumentOutOfRangeException(nameof(configure), "Code length must be 4–8 and lifetime must be 30 seconds–10 minutes."); services.AddSingleton(options); - services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); return services; diff --git a/src/CaptchaKit.AspNetCore/bin/Debug/net10.0/CaptchaKit.AspNetCore.dll b/src/CaptchaKit.AspNetCore/bin/Debug/net10.0/CaptchaKit.AspNetCore.dll index c811e88..0a6392b 100644 Binary files a/src/CaptchaKit.AspNetCore/bin/Debug/net10.0/CaptchaKit.AspNetCore.dll and b/src/CaptchaKit.AspNetCore/bin/Debug/net10.0/CaptchaKit.AspNetCore.dll differ diff --git a/src/CaptchaKit.AspNetCore/bin/Debug/net10.0/CaptchaKit.AspNetCore.pdb b/src/CaptchaKit.AspNetCore/bin/Debug/net10.0/CaptchaKit.AspNetCore.pdb index c646003..5b47a3d 100644 Binary files a/src/CaptchaKit.AspNetCore/bin/Debug/net10.0/CaptchaKit.AspNetCore.pdb and b/src/CaptchaKit.AspNetCore/bin/Debug/net10.0/CaptchaKit.AspNetCore.pdb differ diff --git a/src/CaptchaKit.AspNetCore/bin/Debug/net10.0/CaptchaKit.Core.dll b/src/CaptchaKit.AspNetCore/bin/Debug/net10.0/CaptchaKit.Core.dll index d073b38..4141e32 100644 Binary files a/src/CaptchaKit.AspNetCore/bin/Debug/net10.0/CaptchaKit.Core.dll and b/src/CaptchaKit.AspNetCore/bin/Debug/net10.0/CaptchaKit.Core.dll differ diff --git a/src/CaptchaKit.AspNetCore/bin/Debug/net10.0/CaptchaKit.Core.pdb b/src/CaptchaKit.AspNetCore/bin/Debug/net10.0/CaptchaKit.Core.pdb index 4f2084a..ba1cdc2 100644 Binary files a/src/CaptchaKit.AspNetCore/bin/Debug/net10.0/CaptchaKit.Core.pdb and b/src/CaptchaKit.AspNetCore/bin/Debug/net10.0/CaptchaKit.Core.pdb differ diff --git a/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.AspNetCore.deps.json b/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.AspNetCore.deps.json index eae64b8..2c81ca8 100644 --- a/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.AspNetCore.deps.json +++ b/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.AspNetCore.deps.json @@ -6,9 +6,9 @@ "compilationOptions": {}, "targets": { ".NETCoreApp,Version=v10.0": { - "CaptchaKit.AspNetCore/0.1.0-preview.1": { + "CaptchaKit.AspNetCore/0.1.0-preview.2": { "dependencies": { - "CaptchaKit.Core": "0.1.0-preview.1", + "CaptchaKit.Core": "0.1.0-preview.2", "SkiaSharp": "4.151.1" }, "runtime": { @@ -70,7 +70,7 @@ } } }, - "CaptchaKit.Core/0.1.0-preview.1": { + "CaptchaKit.Core/0.1.0-preview.2": { "runtime": { "CaptchaKit.Core.dll": { "assemblyVersion": "0.1.0.0", @@ -81,7 +81,7 @@ } }, "libraries": { - "CaptchaKit.AspNetCore/0.1.0-preview.1": { + "CaptchaKit.AspNetCore/0.1.0-preview.2": { "type": "project", "serviceable": false, "sha512": "" @@ -107,7 +107,7 @@ "path": "skiasharp.nativeassets.win32/4.151.1", "hashPath": "skiasharp.nativeassets.win32.4.151.1.nupkg.sha512" }, - "CaptchaKit.Core/0.1.0-preview.1": { + "CaptchaKit.Core/0.1.0-preview.2": { "type": "project", "serviceable": false, "sha512": "" diff --git a/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.AspNetCore.dll b/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.AspNetCore.dll index 60966b6..6258d2f 100644 Binary files a/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.AspNetCore.dll and b/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.AspNetCore.dll differ diff --git a/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.AspNetCore.pdb b/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.AspNetCore.pdb index 00afd26..f144c0d 100644 Binary files a/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.AspNetCore.pdb and b/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.AspNetCore.pdb differ diff --git a/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.Core.dll b/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.Core.dll index 287b455..26ed172 100644 Binary files a/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.Core.dll and b/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.Core.dll differ diff --git a/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.Core.pdb b/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.Core.pdb index 305b8a2..e013d72 100644 Binary files a/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.Core.pdb and b/src/CaptchaKit.AspNetCore/bin/Release/net10.0/CaptchaKit.Core.pdb differ diff --git a/src/CaptchaKit.AspNetCore/obj/CaptchaKit.AspNetCore.csproj.nuget.dgspec.json b/src/CaptchaKit.AspNetCore/obj/CaptchaKit.AspNetCore.csproj.nuget.dgspec.json index 1c464d3..e546083 100644 --- a/src/CaptchaKit.AspNetCore/obj/CaptchaKit.AspNetCore.csproj.nuget.dgspec.json +++ b/src/CaptchaKit.AspNetCore/obj/CaptchaKit.AspNetCore.csproj.nuget.dgspec.json @@ -5,7 +5,7 @@ }, "projects": { "E:\\jiaowu\\packages\\CaptchaKit\\src\\CaptchaKit.AspNetCore\\CaptchaKit.AspNetCore.csproj": { - "version": "0.1.0-preview.1", + "version": "0.1.0-preview.2", "restore": { "projectUniqueName": "E:\\jiaowu\\packages\\CaptchaKit\\src\\CaptchaKit.AspNetCore\\CaptchaKit.AspNetCore.csproj", "projectName": "CaptchaKit.AspNetCore", @@ -499,7 +499,7 @@ } }, "E:\\jiaowu\\packages\\CaptchaKit\\src\\CaptchaKit.Core\\CaptchaKit.Core.csproj": { - "version": "0.1.0-preview.1", + "version": "0.1.0-preview.2", "restore": { "projectUniqueName": "E:\\jiaowu\\packages\\CaptchaKit\\src\\CaptchaKit.Core\\CaptchaKit.Core.csproj", "projectName": "CaptchaKit.Core", diff --git a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaK.95F6C895.Up2Date b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaK.95F6C895.Up2Date new file mode 100644 index 0000000..e69de29 diff --git a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.AssemblyInfo.cs b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.AssemblyInfo.cs index 4db6e3d..0ef68a6 100644 --- a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.AssemblyInfo.cs +++ b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyDescriptionAttribute("ASP.NET Core and distributed-cache integration for CaptchaKit.")] [assembly: System.Reflection.AssemblyFileVersionAttribute("0.1.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("0.1.0-preview.1+149eb66890ce8ac96fae9a9b7e7f6c09bb0d0269")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("0.1.0-preview.1+0631f17bf5ed33b67f1af0648d13aedcff701607")] [assembly: System.Reflection.AssemblyProductAttribute("CaptchaKit.AspNetCore")] [assembly: System.Reflection.AssemblyTitleAttribute("CaptchaKit.AspNetCore")] [assembly: System.Reflection.AssemblyVersionAttribute("0.1.0.0")] diff --git a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.AssemblyInfoInputs.cache b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.AssemblyInfoInputs.cache index be9d0dd..7e81afb 100644 --- a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.AssemblyInfoInputs.cache +++ b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.AssemblyInfoInputs.cache @@ -1 +1 @@ -537ddc0f8d2ca50e3ea8f9f64f468e1cc194e9f8e17e5bb91599d54391e9590b +e0e1a101a5bf9266179dfaa4693799b6aec33b74eda7a9c395265d0b418e6cdd diff --git a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.csproj.AssemblyReference.cache b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.csproj.AssemblyReference.cache index b5ac953..7377ec9 100644 Binary files a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.csproj.AssemblyReference.cache and b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.csproj.AssemblyReference.cache differ diff --git a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.csproj.CoreCompileInputs.cache b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.csproj.CoreCompileInputs.cache index 2ccf8b3..a2bbd85 100644 --- a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.csproj.CoreCompileInputs.cache +++ b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -0c7c2a6c84005509d528061b6942c0bb9ce2e60d71dab9e22200b03fd7c21da5 +a9cd86d154c1dd12ce63cf92bc82a118465809fcb7fc20afa460cf9f0d6724c0 diff --git a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.csproj.FileListAbsolute.txt b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.csproj.FileListAbsolute.txt index e5b241e..de27bea 100644 --- a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.csproj.FileListAbsolute.txt +++ b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.csproj.FileListAbsolute.txt @@ -16,3 +16,6 @@ E:\jiaowu\packages\CaptchaKit\src\CaptchaKit.AspNetCore\obj\Debug\net10.0\Captch E:\jiaowu\packages\CaptchaKit\src\CaptchaKit.AspNetCore\obj\Debug\net10.0\refint\CaptchaKit.AspNetCore.dll E:\jiaowu\packages\CaptchaKit\src\CaptchaKit.AspNetCore\obj\Debug\net10.0\CaptchaKit.AspNetCore.pdb E:\jiaowu\packages\CaptchaKit\src\CaptchaKit.AspNetCore\obj\Debug\net10.0\ref\CaptchaKit.AspNetCore.dll +E:\jiaowu\.codex-build\captcha-types\Debug\net10.0\CaptchaKit.AspNetCore.deps.json +E:\jiaowu\.codex-build\captcha-types\Debug\net10.0\CaptchaKit.AspNetCore.dll +E:\jiaowu\.codex-build\captcha-types\Debug\net10.0\CaptchaKit.AspNetCore.pdb diff --git a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.dll b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.dll index a67447f..3be5f37 100644 Binary files a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.dll and b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.dll differ diff --git a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.pdb b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.pdb index 479d532..342a9c4 100644 Binary files a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.pdb and b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/CaptchaKit.AspNetCore.pdb differ diff --git a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/ref/CaptchaKit.AspNetCore.dll b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/ref/CaptchaKit.AspNetCore.dll index 4194c7b..b099e72 100644 Binary files a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/ref/CaptchaKit.AspNetCore.dll and b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/ref/CaptchaKit.AspNetCore.dll differ diff --git a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/refint/CaptchaKit.AspNetCore.dll b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/refint/CaptchaKit.AspNetCore.dll index 4194c7b..b099e72 100644 Binary files a/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/refint/CaptchaKit.AspNetCore.dll and b/src/CaptchaKit.AspNetCore/obj/Debug/net10.0/refint/CaptchaKit.AspNetCore.dll differ diff --git a/src/CaptchaKit.AspNetCore/obj/Release/CaptchaKit.AspNetCore.0.1.0-preview.1.nuspec b/src/CaptchaKit.AspNetCore/obj/Release/CaptchaKit.AspNetCore.0.1.0-preview.1.nuspec index 5421b90..e55143e 100644 --- a/src/CaptchaKit.AspNetCore/obj/Release/CaptchaKit.AspNetCore.0.1.0-preview.1.nuspec +++ b/src/CaptchaKit.AspNetCore/obj/Release/CaptchaKit.AspNetCore.0.1.0-preview.1.nuspec @@ -9,7 +9,7 @@ README.md ASP.NET Core and distributed-cache integration for CaptchaKit. captcha security bot-protection aspnetcore - + diff --git a/src/CaptchaKit.AspNetCore/obj/Release/CaptchaKit.AspNetCore.0.1.0-preview.2.nuspec b/src/CaptchaKit.AspNetCore/obj/Release/CaptchaKit.AspNetCore.0.1.0-preview.2.nuspec new file mode 100644 index 0000000..f297b7f --- /dev/null +++ b/src/CaptchaKit.AspNetCore/obj/Release/CaptchaKit.AspNetCore.0.1.0-preview.2.nuspec @@ -0,0 +1,30 @@ + + + + CaptchaKit.AspNetCore + 0.1.0-preview.2 + CaptchaKit Contributors + MIT + https://licenses.nuget.org/MIT + README.md + ASP.NET Core and distributed-cache integration for CaptchaKit. + captcha security bot-protection aspnetcore + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.AssemblyInfo.cs b/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.AssemblyInfo.cs index dfb984d..798bedc 100644 --- a/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.AssemblyInfo.cs +++ b/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyDescriptionAttribute("ASP.NET Core and distributed-cache integration for CaptchaKit.")] [assembly: System.Reflection.AssemblyFileVersionAttribute("0.1.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("0.1.0-preview.1+149eb66890ce8ac96fae9a9b7e7f6c09bb0d0269")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("0.1.0-preview.2+0631f17bf5ed33b67f1af0648d13aedcff701607")] [assembly: System.Reflection.AssemblyProductAttribute("CaptchaKit.AspNetCore")] [assembly: System.Reflection.AssemblyTitleAttribute("CaptchaKit.AspNetCore")] [assembly: System.Reflection.AssemblyVersionAttribute("0.1.0.0")] diff --git a/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.AssemblyInfoInputs.cache b/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.AssemblyInfoInputs.cache index a1a9db0..927e347 100644 --- a/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.AssemblyInfoInputs.cache +++ b/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.AssemblyInfoInputs.cache @@ -1 +1 @@ -5a49e578d7a15eae0f7993f7aa6de454d706a857e5e9dce58e6f3480258f8aa1 +977d81336550e4fd826b23bfebdb87d6abd1ce1abcf6fe7a67fd6ddcadc17e33 diff --git a/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.csproj.AssemblyReference.cache b/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.csproj.AssemblyReference.cache index b54d075..d63d8e8 100644 Binary files a/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.csproj.AssemblyReference.cache and b/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.csproj.AssemblyReference.cache differ diff --git a/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.dll b/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.dll index 60966b6..6258d2f 100644 Binary files a/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.dll and b/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.dll differ diff --git a/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.pdb b/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.pdb index 00afd26..f144c0d 100644 Binary files a/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.pdb and b/src/CaptchaKit.AspNetCore/obj/Release/net10.0/CaptchaKit.AspNetCore.pdb differ diff --git a/src/CaptchaKit.AspNetCore/obj/Release/net10.0/ref/CaptchaKit.AspNetCore.dll b/src/CaptchaKit.AspNetCore/obj/Release/net10.0/ref/CaptchaKit.AspNetCore.dll index 492bd6f..2a598ab 100644 Binary files a/src/CaptchaKit.AspNetCore/obj/Release/net10.0/ref/CaptchaKit.AspNetCore.dll and b/src/CaptchaKit.AspNetCore/obj/Release/net10.0/ref/CaptchaKit.AspNetCore.dll differ diff --git a/src/CaptchaKit.AspNetCore/obj/Release/net10.0/refint/CaptchaKit.AspNetCore.dll b/src/CaptchaKit.AspNetCore/obj/Release/net10.0/refint/CaptchaKit.AspNetCore.dll index 492bd6f..2a598ab 100644 Binary files a/src/CaptchaKit.AspNetCore/obj/Release/net10.0/refint/CaptchaKit.AspNetCore.dll and b/src/CaptchaKit.AspNetCore/obj/Release/net10.0/refint/CaptchaKit.AspNetCore.dll differ diff --git a/src/CaptchaKit.AspNetCore/obj/project.assets.json b/src/CaptchaKit.AspNetCore/obj/project.assets.json index c002d16..e880699 100644 --- a/src/CaptchaKit.AspNetCore/obj/project.assets.json +++ b/src/CaptchaKit.AspNetCore/obj/project.assets.json @@ -67,7 +67,7 @@ } } }, - "CaptchaKit.Core/0.1.0-preview.1": { + "CaptchaKit.Core/0.1.0-preview.2": { "type": "project", "framework": ".NETCoreApp,Version=v10.0", "compile": { @@ -227,7 +227,7 @@ "skiasharp.nativeassets.win32.nuspec" ] }, - "CaptchaKit.Core/0.1.0-preview.1": { + "CaptchaKit.Core/0.1.0-preview.2": { "type": "project", "path": "../CaptchaKit.Core/CaptchaKit.Core.csproj", "msbuildProject": "../CaptchaKit.Core/CaptchaKit.Core.csproj" @@ -235,7 +235,7 @@ }, "projectFileDependencyGroups": { "net10.0": [ - "CaptchaKit.Core >= 0.1.0-preview.1", + "CaptchaKit.Core >= 0.1.0-preview.2", "SkiaSharp >= 4.151.1" ] }, @@ -244,7 +244,7 @@ "D:\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} }, "project": { - "version": "0.1.0-preview.1", + "version": "0.1.0-preview.2", "restore": { "projectUniqueName": "E:\\jiaowu\\packages\\CaptchaKit\\src\\CaptchaKit.AspNetCore\\CaptchaKit.AspNetCore.csproj", "projectName": "CaptchaKit.AspNetCore", diff --git a/src/CaptchaKit.AspNetCore/obj/project.nuget.cache b/src/CaptchaKit.AspNetCore/obj/project.nuget.cache index eb05013..b24dcf8 100644 --- a/src/CaptchaKit.AspNetCore/obj/project.nuget.cache +++ b/src/CaptchaKit.AspNetCore/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "u7gy0hXdqX8=", + "dgSpecHash": "ARNDBHvT8jU=", "success": true, "projectFilePath": "E:\\jiaowu\\packages\\CaptchaKit\\src\\CaptchaKit.AspNetCore\\CaptchaKit.AspNetCore.csproj", "expectedPackageFiles": [ diff --git a/src/CaptchaKit.Core/CaptchaContracts.cs b/src/CaptchaKit.Core/CaptchaContracts.cs index aa6891c..f63f342 100644 --- a/src/CaptchaKit.Core/CaptchaContracts.cs +++ b/src/CaptchaKit.Core/CaptchaContracts.cs @@ -1,10 +1,22 @@ namespace CaptchaKit; +public enum CaptchaChallengeType +{ + TextImage, + Selection, + OneClick +} + +public sealed record CaptchaChoice(string Id, string Label); + public sealed record CaptchaChallenge( string Id, - string ContentType, - byte[] ImageBytes, - DateTimeOffset ExpiresAt); + CaptchaChallengeType Type, + DateTimeOffset ExpiresAt, + string? Prompt = null, + IReadOnlyList? Choices = null, + string? ContentType = null, + byte[]? ImageBytes = null); public sealed record CaptchaGenerationRequest( string Id, @@ -15,6 +27,9 @@ public sealed record GeneratedCaptcha( CaptchaChallenge Challenge, string Answer); +/// Opaque, client-generated browser evidence for binding a challenge to its requester. +public sealed record CaptchaRequestContext(string? BrowserProof = null); + public interface ICaptchaGenerator { GeneratedCaptcha Generate(CaptchaGenerationRequest request); diff --git a/src/CaptchaKit.Core/CaptchaKit.Core.csproj b/src/CaptchaKit.Core/CaptchaKit.Core.csproj index 3db18c4..4d71f40 100644 --- a/src/CaptchaKit.Core/CaptchaKit.Core.csproj +++ b/src/CaptchaKit.Core/CaptchaKit.Core.csproj @@ -5,7 +5,7 @@ enable false CaptchaKit.Core - 0.1.0-preview.1 + 0.1.0-preview.2 CaptchaKit Contributors Provider-neutral, server-validated CAPTCHA challenge contracts. MIT diff --git a/src/CaptchaKit.Core/bin/Debug/net10.0/CaptchaKit.Core.dll b/src/CaptchaKit.Core/bin/Debug/net10.0/CaptchaKit.Core.dll index d073b38..4141e32 100644 Binary files a/src/CaptchaKit.Core/bin/Debug/net10.0/CaptchaKit.Core.dll and b/src/CaptchaKit.Core/bin/Debug/net10.0/CaptchaKit.Core.dll differ diff --git a/src/CaptchaKit.Core/bin/Debug/net10.0/CaptchaKit.Core.pdb b/src/CaptchaKit.Core/bin/Debug/net10.0/CaptchaKit.Core.pdb index 4f2084a..ba1cdc2 100644 Binary files a/src/CaptchaKit.Core/bin/Debug/net10.0/CaptchaKit.Core.pdb and b/src/CaptchaKit.Core/bin/Debug/net10.0/CaptchaKit.Core.pdb differ diff --git a/src/CaptchaKit.Core/bin/Release/net10.0/CaptchaKit.Core.deps.json b/src/CaptchaKit.Core/bin/Release/net10.0/CaptchaKit.Core.deps.json index fe0c142..86ca2cc 100644 --- a/src/CaptchaKit.Core/bin/Release/net10.0/CaptchaKit.Core.deps.json +++ b/src/CaptchaKit.Core/bin/Release/net10.0/CaptchaKit.Core.deps.json @@ -6,7 +6,7 @@ "compilationOptions": {}, "targets": { ".NETCoreApp,Version=v10.0": { - "CaptchaKit.Core/0.1.0-preview.1": { + "CaptchaKit.Core/0.1.0-preview.2": { "runtime": { "CaptchaKit.Core.dll": {} } @@ -14,7 +14,7 @@ } }, "libraries": { - "CaptchaKit.Core/0.1.0-preview.1": { + "CaptchaKit.Core/0.1.0-preview.2": { "type": "project", "serviceable": false, "sha512": "" diff --git a/src/CaptchaKit.Core/bin/Release/net10.0/CaptchaKit.Core.dll b/src/CaptchaKit.Core/bin/Release/net10.0/CaptchaKit.Core.dll index 287b455..26ed172 100644 Binary files a/src/CaptchaKit.Core/bin/Release/net10.0/CaptchaKit.Core.dll and b/src/CaptchaKit.Core/bin/Release/net10.0/CaptchaKit.Core.dll differ diff --git a/src/CaptchaKit.Core/bin/Release/net10.0/CaptchaKit.Core.pdb b/src/CaptchaKit.Core/bin/Release/net10.0/CaptchaKit.Core.pdb index 305b8a2..e013d72 100644 Binary files a/src/CaptchaKit.Core/bin/Release/net10.0/CaptchaKit.Core.pdb and b/src/CaptchaKit.Core/bin/Release/net10.0/CaptchaKit.Core.pdb differ diff --git a/src/CaptchaKit.Core/obj/CaptchaKit.Core.csproj.nuget.dgspec.json b/src/CaptchaKit.Core/obj/CaptchaKit.Core.csproj.nuget.dgspec.json index bf92128..d908f37 100644 --- a/src/CaptchaKit.Core/obj/CaptchaKit.Core.csproj.nuget.dgspec.json +++ b/src/CaptchaKit.Core/obj/CaptchaKit.Core.csproj.nuget.dgspec.json @@ -5,7 +5,7 @@ }, "projects": { "E:\\jiaowu\\packages\\CaptchaKit\\src\\CaptchaKit.Core\\CaptchaKit.Core.csproj": { - "version": "0.1.0-preview.1", + "version": "0.1.0-preview.2", "restore": { "projectUniqueName": "E:\\jiaowu\\packages\\CaptchaKit\\src\\CaptchaKit.Core\\CaptchaKit.Core.csproj", "projectName": "CaptchaKit.Core", diff --git a/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.AssemblyInfo.cs b/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.AssemblyInfo.cs index 79ff4c3..7241f4b 100644 --- a/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.AssemblyInfo.cs +++ b/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyDescriptionAttribute("Provider-neutral, server-validated CAPTCHA challenge contracts.")] [assembly: System.Reflection.AssemblyFileVersionAttribute("0.1.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("0.1.0-preview.1+149eb66890ce8ac96fae9a9b7e7f6c09bb0d0269")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("0.1.0-preview.1+0631f17bf5ed33b67f1af0648d13aedcff701607")] [assembly: System.Reflection.AssemblyProductAttribute("CaptchaKit.Core")] [assembly: System.Reflection.AssemblyTitleAttribute("CaptchaKit.Core")] [assembly: System.Reflection.AssemblyVersionAttribute("0.1.0.0")] diff --git a/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.AssemblyInfoInputs.cache b/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.AssemblyInfoInputs.cache index 4423211..7365933 100644 --- a/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.AssemblyInfoInputs.cache +++ b/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.AssemblyInfoInputs.cache @@ -1 +1 @@ -e6e151a16c76134fdb273bc2637b41a772b28355ecdf40a8e3d03bcba4922ce3 +9c76bbacb071eed86264625c8c182905601fc858fd36c6c66682006282d3aaff diff --git a/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.csproj.FileListAbsolute.txt b/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.csproj.FileListAbsolute.txt index 0f87450..328e38c 100644 --- a/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.csproj.FileListAbsolute.txt +++ b/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.csproj.FileListAbsolute.txt @@ -12,3 +12,6 @@ E:\jiaowu\packages\CaptchaKit\src\CaptchaKit.Core\obj\Debug\net10.0\CaptchaKit.C E:\jiaowu\packages\CaptchaKit\src\CaptchaKit.Core\obj\Debug\net10.0\refint\CaptchaKit.Core.dll E:\jiaowu\packages\CaptchaKit\src\CaptchaKit.Core\obj\Debug\net10.0\CaptchaKit.Core.pdb E:\jiaowu\packages\CaptchaKit\src\CaptchaKit.Core\obj\Debug\net10.0\ref\CaptchaKit.Core.dll +E:\jiaowu\.codex-build\captcha-types\Debug\net10.0\CaptchaKit.Core.deps.json +E:\jiaowu\.codex-build\captcha-types\Debug\net10.0\CaptchaKit.Core.dll +E:\jiaowu\.codex-build\captcha-types\Debug\net10.0\CaptchaKit.Core.pdb diff --git a/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.dll b/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.dll index d073b38..1239d1e 100644 Binary files a/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.dll and b/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.dll differ diff --git a/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.pdb b/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.pdb index 4f2084a..5222e8a 100644 Binary files a/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.pdb and b/src/CaptchaKit.Core/obj/Debug/net10.0/CaptchaKit.Core.pdb differ diff --git a/src/CaptchaKit.Core/obj/Debug/net10.0/ref/CaptchaKit.Core.dll b/src/CaptchaKit.Core/obj/Debug/net10.0/ref/CaptchaKit.Core.dll index 4f43b50..4e3fbee 100644 Binary files a/src/CaptchaKit.Core/obj/Debug/net10.0/ref/CaptchaKit.Core.dll and b/src/CaptchaKit.Core/obj/Debug/net10.0/ref/CaptchaKit.Core.dll differ diff --git a/src/CaptchaKit.Core/obj/Debug/net10.0/refint/CaptchaKit.Core.dll b/src/CaptchaKit.Core/obj/Debug/net10.0/refint/CaptchaKit.Core.dll index 4f43b50..4e3fbee 100644 Binary files a/src/CaptchaKit.Core/obj/Debug/net10.0/refint/CaptchaKit.Core.dll and b/src/CaptchaKit.Core/obj/Debug/net10.0/refint/CaptchaKit.Core.dll differ diff --git a/src/CaptchaKit.Core/obj/Release/CaptchaKit.Core.0.1.0-preview.1.nuspec b/src/CaptchaKit.Core/obj/Release/CaptchaKit.Core.0.1.0-preview.1.nuspec index c701fc4..bd69b12 100644 --- a/src/CaptchaKit.Core/obj/Release/CaptchaKit.Core.0.1.0-preview.1.nuspec +++ b/src/CaptchaKit.Core/obj/Release/CaptchaKit.Core.0.1.0-preview.1.nuspec @@ -9,7 +9,7 @@ README.md Provider-neutral, server-validated CAPTCHA challenge contracts. captcha security bot-protection aspnetcore - + diff --git a/src/CaptchaKit.Core/obj/Release/CaptchaKit.Core.0.1.0-preview.2.nuspec b/src/CaptchaKit.Core/obj/Release/CaptchaKit.Core.0.1.0-preview.2.nuspec new file mode 100644 index 0000000..b378bf1 --- /dev/null +++ b/src/CaptchaKit.Core/obj/Release/CaptchaKit.Core.0.1.0-preview.2.nuspec @@ -0,0 +1,22 @@ + + + + CaptchaKit.Core + 0.1.0-preview.2 + CaptchaKit Contributors + MIT + https://licenses.nuget.org/MIT + README.md + Provider-neutral, server-validated CAPTCHA challenge contracts. + captcha security bot-protection aspnetcore + + + + + + + + + + + \ No newline at end of file diff --git a/src/CaptchaKit.Core/obj/Release/net10.0/CaptchaKit.Core.AssemblyInfo.cs b/src/CaptchaKit.Core/obj/Release/net10.0/CaptchaKit.Core.AssemblyInfo.cs index 95e3ca1..2de54bc 100644 --- a/src/CaptchaKit.Core/obj/Release/net10.0/CaptchaKit.Core.AssemblyInfo.cs +++ b/src/CaptchaKit.Core/obj/Release/net10.0/CaptchaKit.Core.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyDescriptionAttribute("Provider-neutral, server-validated CAPTCHA challenge contracts.")] [assembly: System.Reflection.AssemblyFileVersionAttribute("0.1.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("0.1.0-preview.1+149eb66890ce8ac96fae9a9b7e7f6c09bb0d0269")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("0.1.0-preview.2+0631f17bf5ed33b67f1af0648d13aedcff701607")] [assembly: System.Reflection.AssemblyProductAttribute("CaptchaKit.Core")] [assembly: System.Reflection.AssemblyTitleAttribute("CaptchaKit.Core")] [assembly: System.Reflection.AssemblyVersionAttribute("0.1.0.0")] diff --git a/src/CaptchaKit.Core/obj/Release/net10.0/CaptchaKit.Core.AssemblyInfoInputs.cache b/src/CaptchaKit.Core/obj/Release/net10.0/CaptchaKit.Core.AssemblyInfoInputs.cache index 44f358c..5db14d5 100644 --- a/src/CaptchaKit.Core/obj/Release/net10.0/CaptchaKit.Core.AssemblyInfoInputs.cache +++ b/src/CaptchaKit.Core/obj/Release/net10.0/CaptchaKit.Core.AssemblyInfoInputs.cache @@ -1 +1 @@ -f5e5ed532953f371305e8c777d286c88bdbb56873842007cb8191b6a3891c151 +fdb26d0863ff3967916fc8431513437e13058a70628aea97b54750c0adb63519 diff --git a/src/CaptchaKit.Core/obj/Release/net10.0/CaptchaKit.Core.dll b/src/CaptchaKit.Core/obj/Release/net10.0/CaptchaKit.Core.dll index 287b455..26ed172 100644 Binary files a/src/CaptchaKit.Core/obj/Release/net10.0/CaptchaKit.Core.dll and b/src/CaptchaKit.Core/obj/Release/net10.0/CaptchaKit.Core.dll differ diff --git a/src/CaptchaKit.Core/obj/Release/net10.0/CaptchaKit.Core.pdb b/src/CaptchaKit.Core/obj/Release/net10.0/CaptchaKit.Core.pdb index 305b8a2..e013d72 100644 Binary files a/src/CaptchaKit.Core/obj/Release/net10.0/CaptchaKit.Core.pdb and b/src/CaptchaKit.Core/obj/Release/net10.0/CaptchaKit.Core.pdb differ diff --git a/src/CaptchaKit.Core/obj/Release/net10.0/ref/CaptchaKit.Core.dll b/src/CaptchaKit.Core/obj/Release/net10.0/ref/CaptchaKit.Core.dll index 78ea412..7e5152e 100644 Binary files a/src/CaptchaKit.Core/obj/Release/net10.0/ref/CaptchaKit.Core.dll and b/src/CaptchaKit.Core/obj/Release/net10.0/ref/CaptchaKit.Core.dll differ diff --git a/src/CaptchaKit.Core/obj/Release/net10.0/refint/CaptchaKit.Core.dll b/src/CaptchaKit.Core/obj/Release/net10.0/refint/CaptchaKit.Core.dll index 78ea412..7e5152e 100644 Binary files a/src/CaptchaKit.Core/obj/Release/net10.0/refint/CaptchaKit.Core.dll and b/src/CaptchaKit.Core/obj/Release/net10.0/refint/CaptchaKit.Core.dll differ diff --git a/src/CaptchaKit.Core/obj/project.assets.json b/src/CaptchaKit.Core/obj/project.assets.json index 66f3581..5f889ea 100644 --- a/src/CaptchaKit.Core/obj/project.assets.json +++ b/src/CaptchaKit.Core/obj/project.assets.json @@ -12,7 +12,7 @@ "D:\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} }, "project": { - "version": "0.1.0-preview.1", + "version": "0.1.0-preview.2", "restore": { "projectUniqueName": "E:\\jiaowu\\packages\\CaptchaKit\\src\\CaptchaKit.Core\\CaptchaKit.Core.csproj", "projectName": "CaptchaKit.Core", diff --git a/src/CaptchaKit.Core/obj/project.nuget.cache b/src/CaptchaKit.Core/obj/project.nuget.cache index 332faef..572c0a4 100644 --- a/src/CaptchaKit.Core/obj/project.nuget.cache +++ b/src/CaptchaKit.Core/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "QStWuwhtXkM=", + "dgSpecHash": "BM4FEkFefHE=", "success": true, "projectFilePath": "E:\\jiaowu\\packages\\CaptchaKit\\src\\CaptchaKit.Core\\CaptchaKit.Core.csproj", "expectedPackageFiles": [],