using System.Runtime.InteropServices;
using ProtonVPN.OperatingSystems.WebAuthn.Enums;
using ProtonVPN.OperatingSystems.WebAuthn.Interop.Marshalers;
using ProtonVPN.OperatingSystems.WebAuthn.Interop.StructVersions;
namespace ProtonVPN.OperatingSystems.WebAuthn.Interop.Structs.PreviousVersions;
///
/// This structure comes from an older version of the API and should only be used by Marshal.Sizeof().
///
///
/// Corresponds to WEBAUTHN_ASSERTION.
[StructLayout(LayoutKind.Sequential)]
public sealed class AssertionV3
{
/// This field has been present since WEBAUTHN_ASSERTION_VERSION_1.
private AssertionVersion _version;
/// This field has been present since WEBAUTHN_ASSERTION_VERSION_1.
private int _authenticatorDataLength;
/// This field has been present since WEBAUTHN_ASSERTION_VERSION_1.
private ByteArrayOut _authenticatorData;
/// This field has been present since WEBAUTHN_ASSERTION_VERSION_1.
private int _signatureLength;
/// This field has been present since WEBAUTHN_ASSERTION_VERSION_1.
private ByteArrayOut _signature;
/// This field has been present since WEBAUTHN_ASSERTION_VERSION_1.
private CredentialOut _credential;
/// This field has been present since WEBAUTHN_ASSERTION_VERSION_1.
private int _userIdLength;
/// This field has been present since WEBAUTHN_ASSERTION_VERSION_1.
private ByteArrayOut _userId;
/// This field has been added in WEBAUTHN_ASSERTION_VERSION_2.
private ExtensionsOut _extensions;
/// This field has been added in WEBAUTHN_ASSERTION_VERSION_2.
private int _largeBlobLength;
/// This field has been added in WEBAUTHN_ASSERTION_VERSION_2.
private ByteArrayOut _largeBlob;
/// This field has been added in WEBAUTHN_ASSERTION_VERSION_2.
private CredentialLargeBlobStatus _largeBlobStatus;
/// This field has been added in WEBAUTHN_ASSERTION_VERSION_3.
private nint _hmacSecret;
///
/// The instantiation of this class is blocked by this private constructor.
///
private AssertionV3() { }
}