massReencrypt method
- String deviceId, {
- int retries = 3,
- int retrieveBatchSize = 1000,
- Duration waitBetweenRetries = const Duration(seconds: 3),
- bool waitProvisioning = true,
- Duration waitProvisioningTime = const Duration(seconds: 5),
- Duration waitProvisioningTimeMax = const Duration(seconds: 10),
- Duration waitProvisioningTimeStep = const Duration(seconds: 1),
- int waitProvisioningRetries = 100,
- bool forceLocalAccountUpdate = false,
Retrieve, re-encrypt, and add missing keys for a certain device.
deviceId - The ID of the device for which to re-rencrypt.
retries - Number of times to retry. Defaults to 3.
retrieveBatchSize - Defaults to 1000.
waitBetweenRetries - Time to wait between retries. Defaults to 3 seconds.
waitProvisioning - Whether to wait for provisioning (new behaviour) or not. true to wait, false to not wait. Defaults to true.
waitProvisioningTime - Time to wait if device is not provisioned on the server yet. The actual wait time will be increased on subsequent tries, by waitProvisioningTimeStep, up to waitProvisioningTimeMax. Defaults to 5 seconds.
waitProvisioningTimeMax - Maximum time to wait if device is not provisioned on the server yet. Defaults to 10 seconds.
waitProvisioningTimeStep - Amount to increase the time to wait if device is not provisioned on the server yet. Defaults to 1 second.
waitProvisioningRetries - Maximum number of tries to check if the device is provisioned yet. Defaults to 100.
forceLocalAccountUpdate - Whether to update the local account before trying the reencryption. true to update, false to not update. Defaults to false.
Returns a SealdMassReencryptResponse instance, which will be populated with the number of re-encrypted keys, and the number of keys for which re-encryption failed.
Implementation
SealdMassReencryptResponse massReencrypt(String deviceId,
{int retries = 3,
int retrieveBatchSize = 1000,
Duration waitBetweenRetries = const Duration(seconds: 3),
bool waitProvisioning = true,
Duration waitProvisioningTime = const Duration(seconds: 5),
Duration waitProvisioningTimeMax = const Duration(seconds: 10),
Duration waitProvisioningTimeStep = const Duration(seconds: 1),
int waitProvisioningRetries = 100,
bool forceLocalAccountUpdate = false}) {
if (_closed) {
throw SealdException(
code: "INSTANCE_CLOSED",
id: "FLUTTER_INSTANCE_CLOSED",
description: "Instance already closed.");
}
final Pointer<Utf8> nativeDeviceId = deviceId.toNativeUtf8();
final Pointer<NativeSealdMassReencryptOptions> options =
calloc<NativeSealdMassReencryptOptions>();
options.ref
..Retries = retries
..RetrieveBatchSize = retrieveBatchSize
..WaitBetweenRetries = waitBetweenRetries.inMilliseconds
..WaitProvisioning = waitProvisioning ? 1 : 0
..WaitProvisioningTime = waitProvisioningTime.inMilliseconds
..WaitProvisioningTimeMax = waitProvisioningTimeMax.inMilliseconds
..WaitProvisioningTimeStep = waitProvisioningTimeStep.inMilliseconds
..WaitProvisioningRetries = waitProvisioningRetries
..ForceLocalAccountUpdate = forceLocalAccountUpdate ? 1 : 0;
final Pointer<NativeSealdMassReencryptResponse> result =
calloc<NativeSealdMassReencryptResponse>();
final Pointer<Pointer<NativeSealdError>> err =
calloc<Pointer<NativeSealdError>>();
final int resultCode = _bindings.SealdSdk_MassReencrypt(
_ptr.pointer(), nativeDeviceId, options.ref, result, err);
calloc.free(nativeDeviceId);
calloc.free(options);
if (resultCode != 0) {
calloc.free(result);
throw SealdException._fromCPtr(err);
} else {
final SealdMassReencryptResponse response =
SealdMassReencryptResponse._fromC(result);
calloc.free(err);
return response;
}
}