package org.apereo.cas.adaptors.u2f.storage;
import com.yubico.u2f.data.DeviceRegistration;
import java.util.Collection;
/**
* This is {@link U2FDeviceRepository}.
*
* @author Misagh Moayyed
* @since 5.1.0
*/
public interface U2FDeviceRepository {
/**
* Gets registrations.
*
* @param username the username
* @return the registrations
*/
Collection<DeviceRegistration> getRegisteredDevices(String username);
/**
* Add registration.
*
* @param username the username
* @param registration the registration
*/
void registerDevice(String username, DeviceRegistration registration);
/**
* Deliver authenticated device upon successful authentication events.
*
* @param username the username
* @param registration the registration
*/
void authenticateDevice(String username, DeviceRegistration registration);
/**
* Is registered ?
*
* @param username the username
* @return the boolean
*/
boolean isDeviceRegisteredFor(String username);
/**
* Gets device registration request.
*
* @param requestId the request id
* @param username the username
* @return the device registration request in JSON
*/
String getDeviceRegistrationRequest(String requestId, String username);
/**
* Gets device authentication request.
*
* @param requestId the request id
* @param username the username
* @return the device authentication request
*/
String getDeviceAuthenticationRequest(String requestId, String username);
/**
* Request device registration.
*
* @param requestId the request id
* @param username the username
* @param registrationJsonData the registration json data
*/
void requestDeviceRegistration(String requestId, String username, String registrationJsonData);
/**
* Request device authentication.
*
* @param requestId the request id
* @param username the username
* @param registrationJsonData the registration json data
*/
void requestDeviceAuthentication(String requestId, String username, String registrationJsonData);
}