Skip to content

Commit 67a4100

Browse files
authored
Merge pull request #165
Docs/1.12 updates
2 parents c15d79c + 453c20f commit 67a4100

File tree

5 files changed

+60
-27
lines changed

5 files changed

+60
-27
lines changed

Yubico.YubiKey/docs/users-manual/getting-started/whats-new.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,41 @@ limitations under the License. -->
1616

1717
Here you can find all of the updates and release notes for published versions of the SDK.
1818

19+
## 1.12.x Releases
20+
### 1.12.0
21+
22+
Release date: December 18th, 2024
23+
24+
Features:
25+
26+
- Security Domain application and Secure Channel Protocol (SCP) ([#164](https://github.com/Yubico/Yubico.NET.SDK/pull/164)):
27+
28+
- SCP11a/b/c is now supported for the PIV, OATH, OTP, and YubiHSM applications.
29+
- SCP03 support has been extended to the OATH, OTP, and YubiHSM applications (previously PIV only).
30+
- The Yubico.YubiKey.Scp namespace now provides all SCP and Security Domain functionality. This namepace replaces functionality in the Yubico.YubiKey.Scp03 namespace, which has been deprecated.
31+
- The new `SecurityDomainSession` class provides an interface for managing the Security Domain application of a YubiKey. This includes SCP configuration (managing SCP03 key sets and SCP11 asymmetric keys and certificates) and creation of an encrypted communication channel with other YubiKey applications.
32+
- New key parameter classes have been added: `ScpKeyParameters`, `Scp03KeyParameters`, `Scp11KeyParameters`, `ECKeyParameters`, `ECPrivateKeyParameters`, `ECPublicKeyParameters`.
33+
- [YubiKeyDeviceListener](xref:Yubico.YubiKey.YubiKeyDeviceListener) has been reconfigured to run the listeners in the background instead of the main thread. In addition, the listeners can now be [stopped](xref:Yubico.YubiKey.YubiKeyDeviceListener.StopListening) when needed to reclaim resources. Once stopped, the listeners can be restarted. ([#89](https://github.com/Yubico/Yubico.NET.SDK/pull/89))
34+
- Microsoft.Extensions.Logging.Console is now the default logger. To enable logging from a dependent project (e.g. unit tests, integration tests, an app), you can either add an appsettings.json to your project or use the ConfigureLoggerFactory. ([#139](https://github.com/Yubico/Yubico.NET.SDK/pull/139))
35+
- The SDK now uses inferred variable types (var) instead of explicit types in all projects except Yubico.Core. This change aims to improve code readability, reduce verbosity, and enhance developer productivity while maintaining type safety. ([#141](https://github.com/Yubico/Yubico.NET.SDK/pull/141))
36+
37+
Bug Fixes:
38+
39+
- The [PivSession.ChangeManagementKey](xref:Yubico.YubiKey.Piv.PivSession.ChangeManagementKey(Yubico.YubiKey.Piv.PivTouchPolicy)) method was incorrectly assuming Triple-DES was the default management key algorithm for FIPS keys. The SDK now verifies the management key alorithm based on key type and firmware version. ([#162](https://github.com/Yubico/Yubico.NET.SDK/pull/162))
40+
- The SDK now correctly sets the IYubiKeyDeviceInfo property [IsSkySeries](xref:Yubico.YubiKey.IYubiKeyDeviceInfo.IsSkySeries) to True for YubiKey Security Key Series Enterprise Edition keys. ([#158](https://github.com/Yubico/Yubico.NET.SDK/pull/158))
41+
- Exceptions are now caught when running [PivSession.Dispose](xref:Yubico.YubiKey.Piv.PivSession.Dispose). This fixes an issue where the Dispose method could not close the Connection in the event of a disconnected YubiKey. ([#104](https://github.com/Yubico/Yubico.NET.SDK/issues/104))
42+
- A dynamic DLL resolution based on process architecture (x86/x64) has been implemented for NativeShims.dll. This fixes a reported issue with the NativeShims.dll location for 32-bit processes. ([#154](https://github.com/Yubico/Yubico.NET.SDK/pull/154))
43+
44+
Deprecations:
45+
46+
- Yubico.YubiKey/Scp03 namespace.
47+
- All Yubico.Yubikey.StaticKeys endpoints.
48+
49+
Migration Notes:
50+
- Use the `SecurityDomainSession` for Security Domain operations.
51+
- Review your logging configuration if using custom logging.
52+
- Align with Android/Python SDK naming conventions.
53+
1954
## 1.11.x Releases
2055
### 1.11.0
2156

Yubico.YubiKey/src/Yubico/YubiKey/Piv/Commands/InitializeAuthenticateManagementKeyCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ namespace Yubico.YubiKey.Piv.Commands
3838
/// information on how to use this authentication.
3939
/// </para>
4040
/// <para>
41-
/// Upon manufacture of a YubiKey, the management key is a Triple-DES key and
41+
/// Upon manufacture of a YubiKey, the management key is either a Triple-DES key (firmware prior to 5.7) or an AES-192 key (firmware 5.7 and later), and
4242
/// it starts out as a default value:
4343
/// </para>
4444
/// <code>

Yubico.YubiKey/src/Yubico/YubiKey/Piv/PivSession.ManagementKey.cs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ private bool TryAuthenticateWithKeyCollector(bool mutualAuthentication)
300300
/// </remarks>
301301
/// <exception cref="InvalidOperationException">
302302
/// There is no <c>KeyCollector</c> loaded, the key provided was not a
303-
/// valid Triple-DES key, or the YubiKey had some other error, such as
303+
/// valid Triple-DES or AES key, or the YubiKey had some other error, such as
304304
/// unreliable connection.
305305
/// </exception>
306306
/// <exception cref="MalformedYubiKeyResponseException">
@@ -399,7 +399,7 @@ public void AuthenticateManagementKey(bool mutualAuthentication = true)
399399
/// <c>false</c> if it does not.
400400
/// </returns>
401401
/// <exception cref="InvalidOperationException">
402-
/// The key provided was not a valid Triple-DES key, or the YubiKey had
402+
/// The key provided was not a valid Triple-DES or AES key, or the YubiKey had
403403
/// some other error, such as unreliable connection.
404404
/// </exception>
405405
/// <exception cref="MalformedYubiKeyResponseException">
@@ -418,8 +418,7 @@ public bool TryAuthenticateManagementKey(ReadOnlyMemory<byte> managementKey, boo
418418
}
419419

420420
/// <summary>
421-
/// Try to change the management key. This will assume the new key is to
422-
/// be Triple-DES.
421+
/// Try to change the management key. The default management key algorithm will be used. (Firmware 5.7.x and later: AES-192. Firmware 5.6.x and earlier: TDES.)
423422
/// </summary>
424423
/// <remarks>
425424
/// Upon manufacture of a YubiKey, the PIV application begins with a
@@ -525,7 +524,7 @@ public bool TryAuthenticateManagementKey(ReadOnlyMemory<byte> managementKey, boo
525524
/// </returns>
526525
/// <exception cref="InvalidOperationException">
527526
/// There is no <c>KeyCollector</c> loaded, one of the keys provided was
528-
/// not a valid Triple-DES key, or the YubiKey had some other error, such
527+
/// not a valid Triple-DES or AES key, or the YubiKey had some other error, such
529528
/// as unreliable connection.
530529
/// </exception>
531530
/// <exception cref="MalformedYubiKeyResponseException">
@@ -704,8 +703,8 @@ public bool TryChangeManagementKey(PivTouchPolicy touchPolicy, PivAlgorithm newK
704703
}
705704

706705
/// <summary>
707-
/// Change the management key, throw an exception if the user cancels.
708-
/// The new key will be Triple-DES.
706+
/// Change the management key, throw an exception if the user cancels.
707+
/// The default management key algorithm will be used. (Firmware 5.7.x and later: AES-192. Firmware 5.6.x and earlier: TDES.)
709708
/// </summary>
710709
/// <remarks>
711710
/// This is the same as <c>TryChangeManagementKey(PivTouchPolicy)</c>,
@@ -718,7 +717,7 @@ public bool TryChangeManagementKey(PivTouchPolicy touchPolicy, PivAlgorithm newK
718717
/// </remarks>
719718
/// <exception cref="InvalidOperationException">
720719
/// There is no <c>KeyCollector</c> loaded, the key provided was not a
721-
/// valid Triple-DES key, or the YubiKey had some other error, such as
720+
/// valid Triple-DES or AES key, or the YubiKey had some other error, such as
722721
/// unreliable connection.
723722
/// </exception>
724723
/// <exception cref="MalformedYubiKeyResponseException">
@@ -752,7 +751,7 @@ public void ChangeManagementKey(PivTouchPolicy touchPolicy = PivTouchPolicy.Defa
752751
/// </remarks>
753752
/// <exception cref="InvalidOperationException">
754753
/// There is no <c>KeyCollector</c> loaded, the key provided was not a
755-
/// valid Triple-DES key, or the YubiKey had some other error, such as
754+
/// valid Triple-DES or AES key, or the YubiKey had some other error, such as
756755
/// unreliable connection.
757756
/// </exception>
758757
/// <exception cref="MalformedYubiKeyResponseException">
@@ -783,8 +782,7 @@ public void ChangeManagementKey(PivTouchPolicy touchPolicy, PivAlgorithm newKeyA
783782

784783
/// <summary>
785784
/// Try to change the management key. This method will use the
786-
/// <c>currentKey</c> and <c>newKey</c> provided. The new key's algorithm
787-
/// will be Triple-DES.
785+
/// <c>currentKey</c> and <c>newKey</c> provided.
788786
/// </summary>
789787
/// <remarks>
790788
/// Normally, an application would call the
@@ -821,7 +819,7 @@ public void ChangeManagementKey(PivTouchPolicy touchPolicy, PivAlgorithm newKeyA
821819
/// if not.
822820
/// </returns>
823821
/// <exception cref="InvalidOperationException">
824-
/// One of the keys provided was not a valid Triple-DES key, or the
822+
/// One of the keys provided was not a valid Triple-DES or AES key, or the
825823
/// YubiKey had some other error, such as unreliable connection.
826824
/// </exception>
827825
/// <exception cref="MalformedYubiKeyResponseException">
@@ -883,7 +881,7 @@ public bool TryChangeManagementKey(ReadOnlyMemory<byte> currentKey,
883881
/// if not.
884882
/// </returns>
885883
/// <exception cref="InvalidOperationException">
886-
/// One of the keys provided was not a valid Triple-DES key, or the
884+
/// One of the keys provided was not a valid Triple-DES or AES key, or the
887885
/// YubiKey had some other error, such as unreliable connection.
888886
/// </exception>
889887
/// <exception cref="MalformedYubiKeyResponseException">

Yubico.YubiKey/src/Yubico/YubiKey/Piv/PivSession.Pinonly.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -513,14 +513,14 @@ private PivPinOnlyMode GetPinDerivedStatus(
513513

514514
/// <summary>
515515
/// Set the YubiKey's PIV application to be PIN-only with a PIN-derived
516-
/// and/or PIN-Protected Triple-DES management key . This sets the
516+
/// and/or PIN-Protected Triple-DES management key. This sets the
517517
/// YubiKey to either
518518
/// <code>
519-
/// PivPinOnlyMode.PinProtected
520-
/// PivPinOnlyMode.PinDerived
521-
/// PivPinOnlyMode.PinProtected | PivPinOnlyMode.PinDerived
522-
/// PivPinOnlyMode.None
523-
/// </code>
519+
/// PivPinOnlyMode.PinProtected
520+
/// PivPinOnlyMode.PinDerived
521+
/// PivPinOnlyMode.PinProtected | PivPinOnlyMode.PinDerived
522+
/// PivPinOnlyMode.None
523+
/// </code>
524524
/// If the YubiKey is set to PinProtected, PinDerived, or both, the PUK
525525
/// will also be blocked.
526526
/// &gt; [!WARNING]
@@ -573,11 +573,11 @@ private PivPinOnlyMode GetPinDerivedStatus(
573573
/// and/or PIN-Protected management key of the specified algorithm. This
574574
/// sets the YubiKey to either
575575
/// <code>
576-
/// PivPinOnlyMode.PinProtected
577-
/// PivPinOnlyMode.PinDerived
578-
/// PivPinOnlyMode.PinProtected | PivPinOnlyMode.PinDerived
579-
/// PivPinOnlyMode.None
580-
/// </code>
576+
/// PivPinOnlyMode.PinProtected
577+
/// PivPinOnlyMode.PinDerived
578+
/// PivPinOnlyMode.PinProtected | PivPinOnlyMode.PinDerived
579+
/// PivPinOnlyMode.None
580+
/// </code>
581581
/// If the YubiKey is set to PinProtected, PinDerived, or both, the PUK
582582
/// will also be blocked.
583583
/// &gt; [!WARNING]

Yubico.YubiKey/src/Yubico/YubiKey/Piv/PivSession.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ namespace Yubico.YubiKey.Piv
139139
/// <xref href="UsersManualSensitive"> sensitive data</xref>.
140140
/// </para>
141141
/// <para>
142-
/// This class will also need a random number generator and a Triple-DES
143-
/// encryptor/decryptor. It will get them from
142+
/// This class will also need a random number generator and Triple-DES and AES
143+
/// encryptors/decryptors. It will get them from
144144
/// <see cref="CryptographyProviders" />. That class will return default
145145
/// implementations, unless you replace them. Very few applications will
146146
/// choose to replace the defaults, but if you want to, see the documentation

0 commit comments

Comments
 (0)