Table of Contents

Class ChallengeResponseCommand

Namespace
Yubico.YubiKey.Otp.Commands
Assembly
Yubico.YubiKey.dll

Issues a challenge to the YubiKey. The slot must be configured in challenge-response mode for this command's response to be valid.

public class ChallengeResponseCommand : IYubiKeyCommand<ChallengeResponseResponse>
Inheritance
object
ChallengeResponseCommand
Implements

Constructors

ChallengeResponseCommand(Slot, ChallengeResponseAlgorithm, ReadOnlyMemory<byte>)

Constructs a new instance of the ChallengeResponseCommand class with the challenge and slot information supplied.

public ChallengeResponseCommand(Slot slot, ChallengeResponseAlgorithm algorithm, ReadOnlyMemory<byte> challenge)

Parameters

slot Slot

The OTP slot to issue the challenge.

algorithm ChallengeResponseAlgorithm

The algorithm the YubiKey should use when generating the response.

challenge ReadOnlyMemory<byte>

The challenge to send to the YubiKey. For the YubicoOtp algorithm, the challenge must be exactly 6 bytes. If the algorithm is HmacSha1, the challenge must be 64 bytes, or 0-63 bytes if the HmacLessThan64Bytes is set on this slot's configuration.

Properties

Algorithm

The algorithm the YubiKey should use when generating the response.

public ChallengeResponseAlgorithm Algorithm { get; }

Property Value

ChallengeResponseAlgorithm

Application

Gets the YubiKeyApplication (e.g. PIV, OATH, etc.) to which this command applies.

public YubiKeyApplication Application { get; }

Property Value

YubiKeyApplication

YubiKeyApplication.Otp, YubiKeyApplication.Piv, etc.

OtpSlot

The OTP slot to issue the challenge.

public Slot OtpSlot { get; }

Property Value

Slot

Methods

CreateCommandApdu()

Creates a well-formed CommandApdu to send to the YubiKey.

public CommandApdu CreateCommandApdu()

Returns

CommandApdu

A valid CommandApdu that is ready to be sent to the YubiKey, or passed along to additional encoders for further processing.

Remarks

This method will first perform validation on all of the parameters and data provided to it. The CommandAPDU it creates should contain all of the data payload for the command, even if it exceeds 65,535 bytes as specified by the ISO 7816-4 specification. The APDU will be properly chained by the device connection prior to being sent to the YubiKey, and the responses will collapsed into a single result.

CreateResponseForApdu(ResponseApdu)

Creates the corresponding IYubiKeyResponse implementation for the current command.

public ChallengeResponseResponse CreateResponseForApdu(ResponseApdu responseApdu)

Parameters

responseApdu ResponseApdu

The ResponseApdu returned by the YubiKey.

Returns

ChallengeResponseResponse

The implementation of IYubiKeyResponse that parses and presents ths response APDU.