DeviceInformation

public struct DeviceInformation : Codable

The object containing information of the device where the SDK is running.

For nevisFIDO to be able to generate encrypted out-of-band payloads that can only be decrypted by your application, a DeviceInformation must be provided during registration. During registration you must provide the name and optionally the fcmRegistrationToken. The other information exposed by the DeviceInformation (deviceId and idUsernamePairs) are generated by the SDK and are not required during registration.

For nevisFIDO to be able to dispatch tokens using the Firebase Cloud Messaging infrastructure, the device information fcmRegistrationToken must be filled with the token (as defined by Firebase). This registration token is associated with the mobile device receiving the push notifications.

There is a single DeviceInformation for all accounts. It is created when the first successful registration is completed, and it is deleted when the last authenticator (and thus the last account) is removed (using the Deregistration or deleteAuthenticator(username:aaid:). When a DeviceInformation is provided in a registration operation, and a DeviceInformation is already defined (that is, there is already a registered authenticator), the provided DeviceInformation will be ignored. The device information contents (name and FCM registration token) can be changed using a DeviceInformationChange.

The DeviceInformation data is stored in nevisIDM as generic credentials. For each account registered, a generic credential will be created in nevisIDM containing the device information. These generic credentials are named dispatch targets in the nevisFIDO terminology.

The following example creates a DeviceInformation using a phone description (that can be provided by the end user, since this is used for the end user to identify the mobile device) and a Firebase registration token:

func createDeviceInformation(phoneDescription: String,
                             firebaseRegistrationToken: String) -> DeviceInformation {
    DeviceInformation(name: phoneDescription,
                      fcmRegistrationToken: firebaseRegistrationToken)
}
  • The DeviceInformation is stored a set of generic credentials representing dispatch targets in nevisIDM. For each account there is a generic credential in nevisIDM. This object exposes the value of the Identification attribute of each of the generic credentials for each account.

    See more

    Declaration

    Swift

    public struct IdUsernamePair : Hashable, Codable
  • A user-friendly name to identify this device. The name can be modified using DeviceInformationChange.

    Note that the name of the DeviceInformation must be unique for a given user (i.e. a user cannot have two DeviceInformations with the same name in the server). Trying to use an existing name for a DeviceInformation during registration results in a OperationError error. If an existing name is provided when invoking DeviceInformationChange/execute(), then a DeviceInformationChangeError with a NameAlreadyExists(cause:) is returned as error.

    The name is stored in nevisIDM in the fidouaf_name attribute of the generic credentials containing the dispatch target information.

    Declaration

    Swift

    public let name: String
  • The Firebase Cloud Messaging“ registration token. Since the Firebase registration token can change, this can be modified using DeviceInformationChange.

    If push notification is disabled, (for instance when all the out-of-band is done using QR codes or deep links) no Firebase Cloud Messaging registration token value is required.

    The Firebase Cloud Messaging registration token is stored in nevisIDM in the fidouaf_target attribute of the generic credentials containing the dispatch target information.

    Declaration

    Swift

    public let fcmRegistrationToken: String?
  • The identifier that is generated for the device during registration. It is a String that is used in the backend to associate FIDO UAF credentials with a device.

    This property gives back an empty String by default, because its value is not required when DeviceInformation is provided during registration. The DeviceInformation returned deviceInformation contains a valid device identifier.

    The device ID is stored in nevisIDM in the fidouaf_device_id attribute of the generic credentials containing the dispatch target information.

    Declaration

    Swift

    public let deviceId: String
  • The identifiers of the generic credentials containing the dispatch target information in nevisIDM and the associated username.

    Declaration

    Swift

    public let idUsernamePairs: Set<IdUsernamePair>
  • Creates a new DeviceInformation instance.

    Declaration

    Swift

    public init(name: String, fcmRegistrationToken: String? = nil)

    Parameters

    name

    A user-friendly name to identify this device.

    fcmRegistrationToken

    An optional Firebase Cloud Messaging registration token.