Skip to content

Commit

Permalink
Merge pull request #158
Browse files Browse the repository at this point in the history
Ensure IsSkySeries property is carried forward for 'merged' devices
  • Loading branch information
DennisDyallo authored Nov 8, 2024
2 parents 57d8c3f + b6d9cbf commit 655d893
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 0 deletions.
1 change: 1 addition & 0 deletions Yubico.YubiKey/src/Yubico/YubiKey/YubiKeyDeviceInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,7 @@ internal YubiKeyDeviceInfo Merge(YubiKeyDeviceInfo? second)
ResetBlocked = ResetBlocked | second.ResetBlocked,
SerialNumber = SerialNumber ?? second.SerialNumber,
IsFipsSeries = IsFipsSeries || second.IsFipsSeries,
IsSkySeries = IsSkySeries || second.IsSkySeries,

FormFactor = FormFactor != FormFactor.Unknown
? FormFactor
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
// Copyright 2024 Yubico AB
//
// Licensed under the Apache License, Version 2.0 (the "License").
// You may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

using System;
using System.Threading;
using Xunit;
using Yubico.PlatformInterop;
using Yubico.YubiKey.TestUtilities;

namespace Yubico.YubiKey
{
[Trait(TraitTypes.Category, TestCategories.Elevated)]
public class YubiKeyDeviceListenerTests
{
private IYubiKeyDevice WaitForDevice()
{
IYubiKeyDevice? device = null;

AutoResetEvent reset = new AutoResetEvent(false);
EventHandler<YubiKeyDeviceEventArgs> handler = (sender, args) =>
{
device = args.Device;
reset.Set();
};

YubiKeyDeviceListener.Instance.Arrived += handler;
reset.WaitOne();
YubiKeyDeviceListener.Instance.Arrived -= handler;

Assert.NotNull(device);
return device;
}

[Fact]
public void KeyArrived_SkyEe_IsSkySeriesIsTrue()
{
// Needs to run elevated so the listener finds and enumerates any hidFido
// devices else no Merge will happen, and it won't be a valid test
// See https://github.com/Yubico/Yubico.NET.SDK/issues/156
Assert.True(SdkPlatformInfo.IsElevated);

IYubiKeyDevice device = WaitForDevice();

Assert.True(device.IsSkySeries);
}
}
}

0 comments on commit 655d893

Please sign in to comment.