Skip to content

Commit 29b68ad

Browse files
author
Greg Domzalski
authored
Merge pull request #639 from Yubico/upgrade-deps
Upgrade dependencies and make necessary updates.
2 parents 56f2389 + 9878e28 commit 29b68ad

27 files changed

+66
-109
lines changed

Yubico.Core/src/Yubico.Core.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,9 @@ limitations under the License. -->
107107

108108

109109
<ItemGroup>
110-
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.1" />
110+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="7.0.1" />
111111
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All" />
112-
<PackageReference Include="System.Memory" Version="4.5.4" />
112+
<PackageReference Include="System.Memory" Version="4.5.5" />
113113
<PackageReference Include="System.Security.Principal.Windows" Version="5.0.0" />
114114
<PackageReference Include="Yubico.NativeShims" Version="1.*-*" />
115115
<ProjectReference Include="..\..\Yubico.DotNetPolyfills\src\Yubico.DotNetPolyfills.csproj" />

Yubico.Core/src/Yubico/Core/Devices/Hid/MacOSHidDevice.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public MacOSHidDevice(long entryId) :
5050
public static IEnumerable<HidDevice> GetList()
5151
{
5252
Logger log = Log.GetLogger();
53-
using IDisposable logScope = log.BeginScope("MacOSHidDevice.GetList()");
53+
using IDisposable? logScope = log.BeginScope("MacOSHidDevice.GetList()");
5454

5555
IntPtr manager = IntPtr.Zero;
5656
IntPtr deviceSet = IntPtr.Zero;

Yubico.Core/src/Yubico/Core/Devices/Hid/MacOSHidDeviceListener.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ private void StopListening()
6868
private void ListeningThread()
6969
{
7070
const int runLoopTimeout = 10; // 10 seconds is arbitrary, pulled from Apple sample code
71-
using IDisposable logScope = _log.BeginScope("MacOSHidDeviceListener.StartListening()");
71+
using IDisposable? logScope = _log.BeginScope("MacOSHidDeviceListener.StartListening()");
7272

7373
_log.LogInformation("HID listener thread started. ThreadID is {ThreadID}.", Environment.CurrentManagedThreadId);
7474

Yubico.Core/src/Yubico/Core/Devices/SmartCard/DesktopSmartCardConnection.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ private class TransactionScope : IDisposable
3333
{
3434
private readonly Logger _log = Log.GetLogger();
3535
private readonly DesktopSmartCardConnection _thisConnection;
36-
private readonly IDisposable _logScope;
36+
private readonly IDisposable? _logScope;
3737
private bool _disposedValue;
3838

3939
public TransactionScope(DesktopSmartCardConnection thisConnection)
@@ -58,7 +58,7 @@ protected virtual void Dispose(bool disposing)
5858

5959
if (disposing)
6060
{
61-
_logScope.Dispose();
61+
_logScope?.Dispose();
6262
}
6363
}
6464

Yubico.Core/src/Yubico/Core/Devices/SmartCard/DesktopSmartCardDevice.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ internal class DesktopSmartCardDevice : SmartCardDevice
3232
public static IReadOnlyList<ISmartCardDevice> GetList()
3333
{
3434
Logger log = Log.GetLogger();
35-
using IDisposable logScope = log.BeginScope("SmartCardDevice.GetList()");
35+
using IDisposable? logScope = log.BeginScope("SmartCardDevice.GetList()");
3636

3737
uint result = SCardEstablishContext(SCARD_SCOPE.USER, out SCardContext context);
3838
log.SCardApiCall(nameof(SCardEstablishContext), result);

Yubico.Core/src/Yubico/Core/Devices/SmartCard/SmartCardLoggerExtensions.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace Yubico.Core.Devices.SmartCard
88
{
99
internal static class SmartCardLoggerExtensions
1010
{
11-
public static IDisposable BeginTransactionScope(this Logger logger, IDisposable transactionScope) =>
11+
public static IDisposable? BeginTransactionScope(this Logger logger, IDisposable transactionScope) =>
1212
logger.BeginScope("Transaction[{TransactionID}]", transactionScope.GetHashCode());
1313

1414
public static void SCardApiCall(this Logger logger, string apiName, uint result)

Yubico.Core/src/Yubico/Core/Logging/Logger.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,6 @@ public void Log<TState>(
122122
/// <returns>
123123
/// A disposable object that ends the logical operation scope on dispose.
124124
/// </returns>
125-
public IDisposable BeginScope<TState>(TState state) => _logger.BeginScope(state);
125+
public IDisposable? BeginScope<TState>(TState state) where TState : notnull => _logger.BeginScope(state);
126126
}
127127
}

Yubico.Core/src/Yubico/Core/Logging/LoggerExtensions.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -934,7 +934,7 @@ public static void SensitiveLog(this Logger logger, LogLevel logLevel, EventId e
934934
/// {
935935
/// }
936936
/// </example>
937-
public static IDisposable BeginScope(
937+
public static IDisposable? BeginScope(
938938
this Logger logger,
939939
string messageFormat,
940940
params object?[] args) =>

Yubico.Core/tests/Yubico.Core.UnitTests.csproj

+5
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ limitations under the License. -->
4444
</PropertyGroup>
4545
<ItemGroup>
4646
<ProjectReference Include="..\src\Yubico.Core.csproj" />
47+
<PackageReference Include="coverlet.collector" Version="6.0.0" PrivateAssets="all" IncludeAssets="runtime; build; native; contentfiles; analyzers; buildtransitive" />
48+
<PackageReference Include="xunit" Version="2.6.1" />
49+
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3" PrivateAssets="all" IncludeAssets="runtime; build; native; contentfiles; analyzers; buildtransitive" />
50+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
51+
<PackageReference Include="Moq" Version="4.16.1" />
4752
</ItemGroup>
4853

4954
</Project>

Yubico.Core/tests/Yubico/Core/Devices/Hid/HidTranslatorTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ public void GetChar_GivenHidCode_ReturnsCorrectChar(KeyboardLayout layout, (char
156156
}
157157
#endif
158158

159-
private static IEnumerable<object> GetTestData()
159+
public static IEnumerable<object[]> GetTestData()
160160
{
161161
// Originally, I hard-coded these, but I decided that it should do
162162
// this dynamically so that newly added keyboard layouts aren't left

Yubico.Core/tests/Yubico/Core/Iso7816/ResponseApduTests.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public void SW1_GivenResponseApdu_MatchesUpperByteOfSW()
4646

4747
var responseApdu = new ResponseApdu(new byte[] { SW1, SW2 });
4848

49-
Assert.Equal(responseApdu.SW >> 8, SW1);
49+
Assert.Equal(SW1, responseApdu.SW >> 8);
5050
}
5151

5252
[Fact]
@@ -68,7 +68,7 @@ public void SW2_GivenResponseApdu_MatchesLowerByteOfSW()
6868

6969
var responseApdu = new ResponseApdu(new byte[] { SW1, SW2 });
7070

71-
Assert.Equal(responseApdu.SW & 0xFF, SW2);
71+
Assert.Equal(SW2, responseApdu.SW & 0xFF);
7272
}
7373

7474
[Fact]

Yubico.DotNetPolyfills/src/Yubico.DotNetPolyfills.csproj

+1-5
Original file line numberDiff line numberDiff line change
@@ -53,18 +53,14 @@ limitations under the License. -->
5353
</None>
5454
</ItemGroup>
5555

56-
<Target Name="CopyPackage" AfterTargets="Pack">
57-
<Copy SourceFiles="$(PackageOutputPath)$(PackageId).$(PackageVersion).nupkg" DestinationFolder="$(MSBuildProjectDirectory)\..\..\build\latestpackages" />
58-
</Target>
59-
6056
<ItemGroup>
6157
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All"/>
6258
</ItemGroup>
6359

6460
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
6561

6662
<PackageReference Include="Microsoft.Bcl.HashCode" Version="1.1.1" />
67-
<PackageReference Include="System.Memory" Version="4.5.4" />
63+
<PackageReference Include="System.Memory" Version="4.5.5" />
6864

6965
</ItemGroup>
7066

Yubico.NET.SDK.sln

-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{778EE2C1
7575
build\CompilerSettings.props = build\CompilerSettings.props
7676
build\Directory.Build.props = build\Directory.Build.props
7777
build\Directory.Build.targets = build\Directory.Build.targets
78-
build\PackageReferences.props = build\PackageReferences.props
7978
build\ProjectTypes.props = build\ProjectTypes.props
8079
build\Versions.props = build\Versions.props
8180
EndProjectSection

Yubico.YubiKey/tests/integration/Yubico.YubiKey.IntegrationTests.csproj

+10-7
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,18 @@ limitations under the License. -->
3434
<ProjectReference Include="..\..\src\Yubico.YubiKey.csproj" />
3535
<ProjectReference Include="..\unit\Yubico.YubiKey.UnitTests.csproj" />
3636
<ProjectReference Include="..\utilities\Yubico.YubiKey.TestUtilities.csproj" />
37+
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
38+
<PackageReference Include="Serilog" Version="3.1.1" />
39+
<PackageReference Include="Serilog.Extensions.Logging" Version="7.0.0" />
40+
<PackageReference Include="Serilog.Sinks.Console" Version="5.0.0" />
41+
<PackageReference Include="coverlet.collector" Version="6.0.0" PrivateAssets="all" IncludeAssets="runtime; build; native; contentfiles; analyzers; buildtransitive" />
42+
<PackageReference Include="xunit" Version="2.6.1" />
43+
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3" PrivateAssets="all" IncludeAssets="runtime; build; native; contentfiles; analyzers; buildtransitive" />
44+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
45+
<PackageReference Include="Moq" Version="4.16.1" />
46+
3747
<None Update="xunit.runner.json">
3848
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
3949
</None>
4050
</ItemGroup>
41-
42-
<ItemGroup>
43-
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="5.0.0" />
44-
<PackageReference Include="Serilog" Version="2.10.0" />
45-
<PackageReference Include="Serilog.Extensions.Logging" Version="3.1.0" />
46-
<PackageReference Include="Serilog.Sinks.Console" Version="4.0.1" />
47-
</ItemGroup>
4851
</Project>

Yubico.YubiKey/tests/integration/Yubico/YubiKey/Fido2/BioEnrollTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public void EnrollFingerprint_Succeeds()
7575
TemplateInfo templateInfo = fido2Session.EnrollFingerprint(firstName, 5000);
7676

7777
Assert.NotNull(templateInfo.FriendlyName);
78-
Assert.True(templateInfo.FriendlyName.Equals(firstName, StringComparison.Ordinal));
78+
Assert.Equal(firstName, templateInfo.FriendlyName);
7979
Assert.NotEmpty(templateInfo.TemplateId.ToArray());
8080

8181
fido2Session.SetBioTemplateFriendlyName(templateInfo.TemplateId, secondName);

Yubico.YubiKey/tests/integration/Yubico/YubiKey/Fido2/Commands/BioEnrollmentCommandTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ public void EnumerateEnrollmentsCommand_Succeeds()
128128
Assert.Equal(ResponseStatus.Success, rsp.Status);
129129

130130
IReadOnlyList<TemplateInfo> templateInfos = rsp.GetData();
131-
Assert.Equal(1, templateInfos.Count);
131+
_ = Assert.Single(templateInfos);
132132
}
133133

134134
[Fact]

Yubico.YubiKey/tests/integration/Yubico/YubiKey/Fido2/CredMgmtTests.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ public void UpdateUserInfo_Succeeds()
131131

132132
IReadOnlyList<CredentialUserInfo> credList =
133133
fido2Session.EnumerateCredentialsForRelyingParty(_bioFido2Fixture.RpInfoList[0].RelyingParty);
134-
Assert.NotEqual(0, credList.Count);
134+
Assert.NotEmpty(credList);
135135

136136
fido2Session.ClearAuthToken();
137137
fido2Session.AddPermissions(PinUvAuthTokenPermissions.AuthenticatorConfiguration, null);
@@ -144,7 +144,7 @@ public void UpdateUserInfo_Succeeds()
144144
credList = fido2Session.EnumerateCredentialsForRelyingParty(_bioFido2Fixture.RpInfoList[0].RelyingParty);
145145

146146
string displayName = credList[0].User.DisplayName??"";
147-
Assert.True(displayName.Equals(updatedDisplayName));
147+
Assert.Equal(updatedDisplayName, displayName);
148148
}
149149
}
150150
}

Yubico.YubiKey/tests/integration/Yubico/YubiKey/Fido2/MakeCredentialGetAssertionTests.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ public void MakeCredential_NonDiscoverable_GetAssertion_Succeeds()
6666

6767
IReadOnlyList<GetAssertionData> assertions = fido2.GetAssertions(gaParams);
6868

69-
Assert.Equal(1, assertions.Count);
70-
Assert.Equal(1, assertions[0].NumberOfCredentials);
69+
GetAssertionData assertion = Assert.Single(assertions);
70+
Assert.Equal(1, assertion.NumberOfCredentials);
7171
}
7272
}
7373

@@ -103,7 +103,7 @@ public void MakeCredential_NoName_GetAssertion_Succeeds()
103103

104104
IReadOnlyList<GetAssertionData> assertions = fido2.GetAssertions(gaParams);
105105

106-
Assert.Equal(1, assertions.Count);
106+
_ = Assert.Single(assertions);
107107
}
108108
}
109109

Yubico.YubiKey/tests/integration/Yubico/YubiKey/Oath/NoCollectorPasswordTests.cs

+14-14
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@ public void SetPassword_Succeeds()
4545
Assert.False(oathSession.IsPasswordProtected);
4646

4747
IList<Credential> credentialList = oathSession.GetCredentials();
48-
Assert.Equal(1, credentialList.Count);
48+
_ = Assert.Single(credentialList);
4949

5050
Credential cred = credentialList[0];
51-
Assert.NotNull(cred.Algorithm);
51+
_ = Assert.NotNull(cred.Algorithm);
5252
if (!(cred.Algorithm is null))
5353
{
5454
Assert.Equal(HashAlgorithm.Sha256, cred.Algorithm);
@@ -65,7 +65,7 @@ public void SetPassword_Succeeds()
6565
Assert.True(oathSession.IsPasswordProtected);
6666

6767
IList<Credential> credentialList = oathSession.GetCredentials();
68-
Assert.Equal(1, credentialList.Count);
68+
_ = Assert.Single(credentialList);
6969
}
7070

7171
using (var oathSession = new OathSession(yubiKeyDevice))
@@ -84,10 +84,10 @@ public void SetPassword_Succeeds()
8484
Assert.True(isVerified);
8585

8686
IList<Credential> credentialList = oathSession.GetCredentials();
87-
Assert.Equal(1, credentialList.Count);
87+
_ = Assert.Single(credentialList);
8888

8989
Credential cred = credentialList[0];
90-
Assert.NotNull(cred.Algorithm);
90+
_ = Assert.NotNull(cred.Algorithm);
9191
if (!(cred.Algorithm is null))
9292
{
9393
Assert.Equal(HashAlgorithm.Sha256, cred.Algorithm);
@@ -121,7 +121,7 @@ public void SetPassword_Succeeds()
121121
Assert.False(isSet);
122122

123123
IList<Credential> credentialList = oathSession.GetCredentials();
124-
Assert.Equal(1, credentialList.Count);
124+
_ = Assert.Single(credentialList);
125125
}
126126

127127
using (var oathSession = new OathSession(yubiKeyDevice))
@@ -138,7 +138,7 @@ public void SetPassword_Succeeds()
138138
Assert.False(isSet);
139139

140140
IList<Credential> credentialList = oathSession.GetCredentials();
141-
Assert.Equal(1, credentialList.Count);
141+
_ = Assert.Single(credentialList);
142142

143143
oathSession.ResetApplication();
144144
}
@@ -184,16 +184,16 @@ public void UnsetPassword_Succeeds()
184184
Assert.False(oathSession.IsPasswordProtected);
185185

186186
IList<Credential> credentialList = oathSession.GetCredentials();
187-
Assert.Equal(1, credentialList.Count);
187+
_ = Assert.Single(credentialList);
188188
}
189189

190190
using (var oathSession = new OathSession(yubiKeyDevice))
191191
{
192192
IList<Credential> credentialList = oathSession.GetCredentials();
193-
Assert.Equal(1, credentialList.Count);
193+
_ = Assert.Single(credentialList);
194194

195195
Credential cred = credentialList[0];
196-
Assert.NotNull(cred.Algorithm);
196+
_ = Assert.NotNull(cred.Algorithm);
197197
if (!(cred.Algorithm is null))
198198
{
199199
Assert.Equal(HashAlgorithm.Sha256, cred.Algorithm);
@@ -295,16 +295,16 @@ public void VerifyPassword_UnsetNoCurrent_Succeeds()
295295
Assert.False(oathSession.IsPasswordProtected);
296296

297297
IList<Credential> credentialList = oathSession.GetCredentials();
298-
Assert.Equal(1, credentialList.Count);
298+
_ = Assert.Single(credentialList);
299299
}
300300

301301
using (var oathSession = new OathSession(yubiKeyDevice))
302302
{
303303
IList<Credential> credentialList = oathSession.GetCredentials();
304-
Assert.Equal(1, credentialList.Count);
304+
_ = Assert.Single(credentialList);
305305

306306
Credential cred = credentialList[0];
307-
Assert.NotNull(cred.Algorithm);
307+
_ = Assert.NotNull(cred.Algorithm);
308308
if (!(cred.Algorithm is null))
309309
{
310310
Assert.Equal(HashAlgorithm.Sha256, cred.Algorithm);
@@ -340,7 +340,7 @@ public void PasswordNotSet_Verify_ReturnsFalse()
340340
Assert.False(oathSession.IsPasswordProtected);
341341

342342
IList<Credential> credentialList = oathSession.GetCredentials();
343-
Assert.Equal(1, credentialList.Count);
343+
_ = Assert.Single(credentialList);
344344

345345
oathSession.ResetApplication();
346346
}

Yubico.YubiKey/tests/sandbox/Yubico.YubiKey.TestApp.csproj

+5-5
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ limitations under the License. -->
3434
</PropertyGroup>
3535

3636
<ItemGroup>
37-
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="5.0.0" />
38-
<PackageReference Include="Serilog" Version="2.10.0" />
39-
<PackageReference Include="Serilog.Extensions.Logging" Version="3.1.0" />
40-
<PackageReference Include="Serilog.Sinks.Console" Version="4.0.1" />
41-
<PackageReference Include="System.Configuration.ConfigurationManager" Version="5.0.0" />
37+
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
38+
<PackageReference Include="Serilog" Version="3.1.1" />
39+
<PackageReference Include="Serilog.Extensions.Logging" Version="7.0.0" />
40+
<PackageReference Include="Serilog.Sinks.Console" Version="5.0.0" />
41+
<PackageReference Include="System.Configuration.ConfigurationManager" Version="7.0.0" />
4242
<PackageReference Include="System.Security.Principal.Windows" Version="5.0.0" />
4343
</ItemGroup>
4444

Yubico.YubiKey/tests/unit/Yubico.YubiKey.UnitTests.csproj

+5
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,10 @@ limitations under the License. -->
3333
<ItemGroup>
3434
<ProjectReference Include="..\..\src\Yubico.YubiKey.csproj" />
3535
<ProjectReference Include="..\utilities\Yubico.YubiKey.TestUtilities.csproj" />
36+
<PackageReference Include="coverlet.collector" Version="6.0.0" PrivateAssets="all" IncludeAssets="runtime; build; native; contentfiles; analyzers; buildtransitive" />
37+
<PackageReference Include="xunit" Version="2.6.1" />
38+
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3" PrivateAssets="all" IncludeAssets="runtime; build; native; contentfiles; analyzers; buildtransitive" />
39+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
40+
<PackageReference Include="Moq" Version="4.16.1" />
3641
</ItemGroup>
3742
</Project>

Yubico.YubiKey/tests/unit/Yubico/YubiKey/Oath/Commands/CalculateCredentialResponseTests .cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public void SuccessResponseApdu_NoCredential_ListCredentialsCorrectly()
3131
const byte sw2 = unchecked((byte)SWConstants.Success);
3232

3333
var responseApdu = new ResponseApdu(new byte[] { sw1, sw2 });
34-
34+
3535
var calculateCredentialResponse = new CalculateCredentialResponse(responseApdu, credential);
3636

3737
Assert.Equal(SWConstants.Success, calculateCredentialResponse.StatusWord);
@@ -80,6 +80,7 @@ public void Constructor_SuccessResponseApdu_FullResponse_ReturnResponseCorrectly
8080
var data = calculateCredentialResponse.GetData();
8181

8282
Assert.Equal(SWConstants.Success, calculateCredentialResponse.StatusWord);
83+
Assert.NotNull(data.Value);
8384
Assert.NotEmpty(data.Value);
8485
}
8586

@@ -98,6 +99,7 @@ public void Constructor_SuccessResponseApdu_TruncatedResponse_ReturnResponseCorr
9899
var data = calculateCredentialResponse.GetData();
99100

100101
Assert.Equal(SWConstants.Success, calculateCredentialResponse.StatusWord);
102+
Assert.NotNull(data.Value);
101103
Assert.NotEmpty(data.Value);
102104
}
103105

Yubico.YubiKey/tests/unit/Yubico/YubiKey/U2f/Commands/ResetCommandTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public void CreateCommandApdu_GetNcProperty_ReturnsCorrectLength()
6969
var command = new ResetCommand();
7070
CommandApdu commandApdu = command.CreateCommandApdu();
7171

72-
Assert.Equal(commandApdu.Nc, lengthHeader);
72+
Assert.Equal(lengthHeader, commandApdu.Nc);
7373
}
7474

7575
[Fact]

0 commit comments

Comments
 (0)