Skip to content

Commit 35f7522

Browse files
committed
distinguish impl
1 parent 0e1dfd6 commit 35f7522

File tree

3 files changed

+24
-12
lines changed

3 files changed

+24
-12
lines changed

src/DataProtection/DataProtection/src/KeyManagement/KeyRingBasedDataProtectionProvider.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using System;
5+
using Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption;
56
using Microsoft.AspNetCore.DataProtection.KeyManagement.Internal;
67
using Microsoft.AspNetCore.Shared;
78
using Microsoft.Extensions.Logging;
@@ -23,6 +24,17 @@ public IDataProtector CreateProtector(string purpose)
2324
{
2425
ArgumentNullThrowHelper.ThrowIfNull(purpose);
2526

27+
var currentKeyRing = _keyRingProvider.GetCurrentKeyRing();
28+
var encryptor = currentKeyRing.DefaultAuthenticatedEncryptor;
29+
if (encryptor is ISpanAuthenticatedEncryptor)
30+
{
31+
return new KeyRingBasedSpanDataProtector(
32+
logger: _logger,
33+
keyRingProvider: _keyRingProvider,
34+
originalPurposes: null,
35+
newPurpose: purpose);
36+
}
37+
2638
return new KeyRingBasedDataProtector(
2739
logger: _logger,
2840
keyRingProvider: _keyRingProvider,

src/DataProtection/DataProtection/src/KeyManagement/KeyRingBasedDataProtector.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,21 @@ private static string[] ConcatPurposes(string[]? originalPurposes, string newPur
6262
}
6363
}
6464

65-
public virtual IDataProtector CreateProtector(string purpose)
65+
public IDataProtector CreateProtector(string purpose)
6666
{
6767
ArgumentNullThrowHelper.ThrowIfNull(purpose);
6868

69+
var currentKeyRing = _keyRingProvider.GetCurrentKeyRing();
70+
var encryptor = currentKeyRing.DefaultAuthenticatedEncryptor;
71+
if (encryptor is ISpanAuthenticatedEncryptor)
72+
{
73+
return new KeyRingBasedSpanDataProtector(
74+
logger: _logger,
75+
keyRingProvider: _keyRingProvider,
76+
originalPurposes: Purposes,
77+
newPurpose: purpose);
78+
}
79+
6980
return new KeyRingBasedDataProtector(
7081
logger: _logger,
7182
keyRingProvider: _keyRingProvider,

src/DataProtection/DataProtection/src/KeyManagement/KeyRingBasedSpanDataProtector.cs

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,6 @@ public KeyRingBasedSpanDataProtector(IKeyRingProvider keyRingProvider, ILogger?
1919
{
2020
}
2121

22-
public override IDataProtector CreateProtector(string purpose)
23-
{
24-
ArgumentNullThrowHelper.ThrowIfNull(purpose);
25-
26-
return new KeyRingBasedDataProtector(
27-
logger: _logger,
28-
keyRingProvider: _keyRingProvider,
29-
originalPurposes: Purposes,
30-
newPurpose: purpose);
31-
}
32-
3322
public int GetProtectedSize(ReadOnlySpan<byte> plainText)
3423
{
3524
// Get the current key ring to access the encryptor

0 commit comments

Comments
 (0)