PublicKeyCredentialRequestOptions.h [plain text]
#pragma once
#if ENABLE(WEB_AUTHN)
#include "BufferSource.h"
#include "PublicKeyCredentialDescriptor.h"
#include "UserVerificationRequirement.h"
#include <wtf/Forward.h>
namespace WebCore {
struct PublicKeyCredentialRequestOptions {
BufferSource challenge;
Optional<unsigned> timeout;
mutable String rpId;
Vector<PublicKeyCredentialDescriptor> allowCredentials;
UserVerificationRequirement userVerification { UserVerificationRequirement::Preferred };
template<class Encoder> void encode(Encoder&) const;
template<class Decoder> static Optional<PublicKeyCredentialRequestOptions> decode(Decoder&);
};
template<class Encoder>
void PublicKeyCredentialRequestOptions::encode(Encoder& encoder) const
{
encoder << timeout << rpId << allowCredentials << userVerification;
}
template<class Decoder>
Optional<PublicKeyCredentialRequestOptions> PublicKeyCredentialRequestOptions::decode(Decoder& decoder)
{
PublicKeyCredentialRequestOptions result;
Optional<Optional<unsigned>> timeout;
decoder >> timeout;
if (!timeout)
return WTF::nullopt;
result.timeout = WTFMove(*timeout);
if (!decoder.decode(result.rpId))
return WTF::nullopt;
if (!decoder.decode(result.allowCredentials))
return WTF::nullopt;
Optional<UserVerificationRequirement> userVerification;
decoder >> userVerification;
if (!userVerification)
return WTF::nullopt;
result.userVerification = WTFMove(*userVerification);
return result;
}
}
#endif // ENABLE(WEB_AUTHN)