AuthenticatorSupportedOptions.cpp [plain text]
#include "config.h"
#include "AuthenticatorSupportedOptions.h"
#if ENABLE(WEB_AUTHN)
#include "FidoConstants.h"
namespace fido {
AuthenticatorSupportedOptions& AuthenticatorSupportedOptions::setSupportsResidentKey(bool supportsResidentKey)
{
m_supportsResidentKey = supportsResidentKey;
return *this;
}
AuthenticatorSupportedOptions& AuthenticatorSupportedOptions::setUserVerificationAvailability(UserVerificationAvailability userVerificationAvailability)
{
m_userVerificationAvailability = userVerificationAvailability;
return *this;
}
AuthenticatorSupportedOptions& AuthenticatorSupportedOptions::setUserPresenceRequired(bool userPresenceRequired)
{
m_userPresenceRequired = userPresenceRequired;
return *this;
}
AuthenticatorSupportedOptions& AuthenticatorSupportedOptions::setClientPinAvailability(ClientPinAvailability clientPinAvailability)
{
m_clientPinAvailability = clientPinAvailability;
return *this;
}
AuthenticatorSupportedOptions& AuthenticatorSupportedOptions::setIsPlatformDevice(bool isPlatformDevice)
{
m_isPlatformDevice = isPlatformDevice;
return *this;
}
cbor::CBORValue convertToCBOR(const AuthenticatorSupportedOptions& options)
{
using namespace cbor;
CBORValue::MapValue optionMap;
optionMap.emplace(CBORValue(kResidentKeyMapKey), CBORValue(options.supportsResidentKey()));
optionMap.emplace(CBORValue(kUserPresenceMapKey), CBORValue(options.userPresenceRequired()));
optionMap.emplace(CBORValue(kPlatformDeviceMapKey), CBORValue(options.isPlatformDevice()));
using UvAvailability = AuthenticatorSupportedOptions::UserVerificationAvailability;
switch (options.userVerificationAvailability()) {
case UvAvailability::kSupportedAndConfigured:
optionMap.emplace(CBORValue(kUserVerificationMapKey), CBORValue(true));
break;
case UvAvailability::kSupportedButNotConfigured:
optionMap.emplace(CBORValue(kUserVerificationMapKey), CBORValue(false));
break;
case UvAvailability::kNotSupported:
break;
}
using ClientPinAvailability = AuthenticatorSupportedOptions::ClientPinAvailability;
switch (options.clientPinAvailability()) {
case ClientPinAvailability::kSupportedAndPinSet:
optionMap.emplace(CBORValue(kClientPinMapKey), CBORValue(true));
break;
case ClientPinAvailability::kSupportedButPinNotSet:
optionMap.emplace(CBORValue(kClientPinMapKey), CBORValue(false));
break;
case ClientPinAvailability::kNotSupported:
break;
}
return CBORValue(WTFMove(optionMap));
}
}
#endif // ENABLE(WEB_AUTHN)