Skip to content

Commit f95871a

Browse files
authored
docs: New docs covering YubiKey Bio MPE quirks and special considerations (#237)
* devicereset method * more bio mpe reset docs * changed setup chapter image sizes * more bio mpe content, reset info clarification * added intro paragraph * added notes on MPE reset to FIDO user manual pages * more fido reset edits * added info to deviceresetcommand docs * updated relevant PIV docs in user manual nad API guide
1 parent 76e5dd6 commit f95871a

File tree

16 files changed

+178
-8
lines changed

16 files changed

+178
-8
lines changed

Yubico.YubiKey/src/Yubico/YubiKey/Management/Commands/DeviceResetCommand.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,18 @@
1717
namespace Yubico.YubiKey.Management.Commands
1818
{
1919
/// <summary>
20-
/// Execute device reset.
20+
/// Execute the device-wide reset.
2121
/// </summary>
2222
/// <remarks>
23+
/// <para>
24+
/// Resets ALL YubiKey applications (including FIDO and PIV) on the key to factory settings. This type of reset is only available on YubiKey Bio Multi-protocol Edition keys.
25+
/// </para>
26+
/// <para>
27+
/// A reset will delete all FIDO2 credentials, fingerprints, and associated information, remove the shared PIN, delete all PIV keys and certificates from PIV slots (except the F9 attestation slot), remove any information added to the PIV data elements, and set the PIV PUK and management key back to their factory default states.
28+
/// </para>
29+
/// <para>
2330
/// This class has a corresponding partner class <see cref="DeviceResetResponse"/>
31+
/// </para>
2432
/// </remarks>
2533
public class DeviceResetCommand : IYubiKeyCommand<DeviceResetResponse>
2634
{

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ namespace Yubico.YubiKey.Piv.Commands
7777
/// CryptographicOperations.ZeroMemory(puk);
7878
/// CryptographicOperations.ZeroMemory(newPuk);
7979
/// </code>
80+
/// <para>
81+
/// Note: YubiKey Bio Multi-protocol Edition (MPE) keys do not have a PUK.
82+
/// </para>
8083
/// </remarks>
8184
public sealed class ChangeReferenceDataCommand : IYubiKeyCommand<ChangeReferenceDataResponse>
8285
{

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
namespace Yubico.YubiKey.Piv.Commands
1818
{
1919
/// <summary>
20-
/// Reset the YubiKey's PIV application
20+
/// Reset the YubiKey's PIV application.
2121
/// </summary>
2222
/// <remarks>
2323
/// The partner Response class is <see cref="ResetPivResponse"/>.
@@ -63,6 +63,9 @@ namespace Yubico.YubiKey.Piv.Commands
6363
/// // Handle error
6464
/// }
6565
/// </code>
66+
/// <para>
67+
/// This command does not work with YubiKey Bio Multi-protocol Edition (MPE) keys. For MPE keys, use <see cref="Yubico.YubiKey.Management.Commands.DeviceResetCommand"/> instead.
68+
/// </para>
6669
/// </remarks>
6770
public sealed class ResetPivCommand : IYubiKeyCommand<ResetPivResponse>
6871
{

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ namespace Yubico.YubiKey.Piv.Commands
8585
/// CryptographicOperations.ZeroMemory(puk);
8686
/// CryptographicOperations.ZeroMemory(newPin);
8787
/// </code>
88+
/// <para>
89+
/// Note: YubiKey Bio Multi-protocol Edition (MPE) keys do not have a PUK.
90+
/// </para>
8891
/// </remarks>
8992
public sealed class ResetRetryCommand : IYubiKeyCommand<ResetRetryResponse>
9093
{

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -922,6 +922,9 @@ public bool TryChangePuk()
922922
/// See the <see cref="TryChangePuk()"/> method for further documentation
923923
/// on this method.
924924
/// </para>
925+
/// <para>
926+
/// Note: YubiKey Bio Multi-protocol Edition (MPE) keys do not have a PUK.
927+
/// </para>
925928
/// </remarks>
926929
/// <exception cref="InvalidOperationException">
927930
/// There is no <c>KeyCollector</c> loaded, or the YubiKey had some other
@@ -1140,9 +1143,12 @@ public bool TryResetPin()
11401143
/// on this method.
11411144
/// </para>
11421145
/// <para>
1143-
/// If the PUK is blocked, this method will not execute. Note that if a
1146+
/// If the PUK is blocked, this method will not execute. If a
11441147
/// YubiKey is configured PIN-only, the PUK will be blocked.
11451148
/// </para>
1149+
/// <para>
1150+
/// Note: YubiKey Bio Multi-protocol Edition (MPE) keys do not have a PUK.
1151+
/// </para>
11461152
/// </remarks>
11471153
/// <exception cref="InvalidOperationException">
11481154
/// There is no <c>KeyCollector</c> loaded, or the YubiKey had some other

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ public PivBioMetadata GetBioMetadata()
364364
/// PUK, then call on the YubiKey to reset.
365365
/// </para>
366366
/// <para>
367-
/// Before attempting to reset a YubiKey Bio Multi-protocol Edition key with ResetApplication(), verify that the PIV application is not blocked from using this method by checking the <see cref="IYubiKeyDeviceInfo.ResetBlocked"/> property. If the application is blocked, use <see cref="IYubiKeyDevice.DeviceReset"/>.
367+
/// This method does not work with YubiKey Bio Multi-protocol Edition (MPE) keys. For MPE keys, use <see cref="IYubiKeyDevice.DeviceReset"/> instead.
368368
/// </para>
369369
/// </remarks>
370370
/// <exception cref="SecurityException">

docs/users-manual/application-fido2/apdu/reset.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212
See the License for the specific language governing permissions and
1313
limitations under the License. -->
1414

15-
## Get the next assertion
15+
## Reset the FIDO application
1616

1717
### Command APDU info
1818

@@ -28,6 +28,9 @@ The data consists of the CTAP Command Byte and the CBOR encoding of the
2828
command's parameters. In this case, the CTAP Command Byte is `07`,
2929
which is the command "`authenticatorReset`". There are no command parameters.
3030

31+
> [!NOTE]
32+
> The FIDO reset command APDU can be used with YubiKey Bio Multi-protocol Edition keys *only if* the FIDO application is not "blocked" (check the key's [ResetBlocked](xref:Yubico.YubiKey.YubiKeyDevice.ResetBlocked) property to confirm). Otherwise, the [device-wide reset](xref:UsersManualBioMpe#resetting-a-yubikey-bio-mpe) must be used instead.
33+
3134
### Response APDU info
3235

3336
#### Response APDU for a successful reset

docs/users-manual/application-fido2/fido2-commands.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -626,6 +626,9 @@ presence (touch).
626626

627627
All YubiKeys with the FIDO2 application.
628628

629+
> [!NOTE]
630+
> The FIDO2 ResetCommand can be used with YubiKey Bio Multi-protocol Edition keys *only if* the FIDO application is not "blocked" (check the key's [ResetBlocked](xref:Yubico.YubiKey.YubiKeyDevice.ResetBlocked) property to confirm). Otherwise, the [device-wide reset](xref:UsersManualBioMpe#resetting-a-yubikey-bio-mpe) must be used instead.
631+
629632
### SDK classes
630633

631634
[ResetCommand](xref:Yubico.YubiKey.Fido2.Commands.ResetCommand)

docs/users-manual/application-fido2/fido2-reset.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ However, there are some caveats:
2929
higer-level `Fido2Session` method for performing the entire operation. Instead, you must
3030
send a series of lower-level commands described below.
3131

32+
> [!NOTE]
33+
> The individual FIDO reset can be used with YubiKey Bio Multi-protocol Edition keys *only if* the FIDO application is not "blocked" (check the key's [ResetBlocked](xref:Yubico.YubiKey.YubiKeyDevice.ResetBlocked) property to confirm). Otherwise, the [device-wide reset](xref:UsersManualBioMpe#resetting-a-yubikey-bio-mpe) must be used instead.
34+
3235
## Steps
3336

3437
Resetting the FIDO2 application is something you hope you never need to do. Generally, the

docs/users-manual/application-piv/apdu/change-ref.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ The PIN can be composed of any ASCII character, but PUK composition depends on t
3636
The data is therefore 16 bytes, current value (possibly padded) followed by the new
3737
value (possibly padded).
3838

39+
> [!NOTE]
40+
> YubiKey Bio Multi-protocol Edition (MPE) keys [do not have a PUK](xref:UsersManualBioMpe).
41+
3942
### Response APDU Info
4043

4144
#### Response APDU for CHANGE REFERENCE DATA (success)

0 commit comments

Comments
 (0)