AuthenticatorResponse.h [plain text]
#pragma once
#if ENABLE(WEB_AUTHN)
#include "AuthenticationExtensionsClientOutputs.h"
#include "IDLTypes.h"
#include <wtf/RefCounted.h>
#include <wtf/TypeCasts.h>
namespace WebCore {
struct AuthenticatorResponseData;
class AuthenticatorResponse : public RefCounted<AuthenticatorResponse> {
public:
enum class Type {
Assertion,
Attestation
};
static RefPtr<AuthenticatorResponse> tryCreate(AuthenticatorResponseData&&);
virtual ~AuthenticatorResponse() = default;
virtual Type type() const = 0;
virtual AuthenticatorResponseData data() const;
WEBCORE_EXPORT ArrayBuffer* rawId() const;
WEBCORE_EXPORT void setExtensions(AuthenticationExtensionsClientOutputs&&);
AuthenticationExtensionsClientOutputs extensions() const;
void setClientDataJSON(Ref<ArrayBuffer>&&);
ArrayBuffer* clientDataJSON() const;
protected:
AuthenticatorResponse(Ref<ArrayBuffer>&&);
private:
Ref<ArrayBuffer> m_rawId;
AuthenticationExtensionsClientOutputs m_extensions;
RefPtr<ArrayBuffer> m_clientDataJSON;
};
}
#define SPECIALIZE_TYPE_TRAITS_AUTHENTICATOR_RESPONSE(ToClassName, Type) \
SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::ToClassName) \
static bool isType(const WebCore::AuthenticatorResponse& response) { return response.type() == WebCore::Type; } \
SPECIALIZE_TYPE_TRAITS_END()
#endif // ENABLE(WEB_AUTHN)