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": [],