GetPinTokenCommand Constructor
GetPinTokenCommand(PinUvAuthProtocolBase, ReadOnlyMemory<Byte>)
Constructs a new instance of GetPinTokenCommand.
public GetPinTokenCommand(PinUvAuthProtocolBase pinProtocol, ReadOnlyMemory<byte> currentPin)
Parameters
Type | Name | Description |
---|---|---|
PinUvAuthProtocolBase | pinProtocol | An object defining the PIN protocol the command will use. The Encapsulate(CoseKey) method must have been successfully executed before passing it to this constructor. |
System.ReadOnlyMemory<System.Byte> | currentPin | The PIN. This is a byte array with the PIN provided as the UTF-8 encoding of Unicode characters in Normalization Form C. |
Exceptions
Type | Condition |
---|---|
System.ArgumentNullException | The |
System.ArgumentException | The PIN is an incorrect length. |
System.InvalidOperationException | The |
Remarks
The caller must specify which PIN protocol the command will use. This
is done by passing in a subclass of PinUvAuthProtocolBase.
This constructor requires the
Encapsulate(CoseKey) method to have been called
before passing it in. Note that the Encapsulate
method
requires the YubiKey's public key, which is obtained by executing the
GetKeyAgreementCommand.
In order to get the PIN token, the caller must supply the new PIN at
construction. In this class, the PIN is supplied as
ReadOnlyMemory<byte>
. It is possible to pass a
byte[]
, because it will be automatically cast.
This class will encrypt the PIN and will not copy a reference. That means you can overwrite the PIN in your byte array after calling the constructor.