Add a device capability for sparse post-quantum ratchet (SPQR)
This commit is contained in:
parent
ca6e5fb0a8
commit
5fc6bdd478
|
@ -20,6 +20,7 @@ public class DeviceCapabilityUtil {
|
||||||
case DEVICE_CAPABILITY_DELETE_SYNC -> DeviceCapability.DELETE_SYNC;
|
case DEVICE_CAPABILITY_DELETE_SYNC -> DeviceCapability.DELETE_SYNC;
|
||||||
case DEVICE_CAPABILITY_STORAGE_SERVICE_RECORD_KEY_ROTATION -> DeviceCapability.STORAGE_SERVICE_RECORD_KEY_ROTATION;
|
case DEVICE_CAPABILITY_STORAGE_SERVICE_RECORD_KEY_ROTATION -> DeviceCapability.STORAGE_SERVICE_RECORD_KEY_ROTATION;
|
||||||
case DEVICE_CAPABILITY_ATTACHMENT_BACKFILL -> DeviceCapability.ATTACHMENT_BACKFILL;
|
case DEVICE_CAPABILITY_ATTACHMENT_BACKFILL -> DeviceCapability.ATTACHMENT_BACKFILL;
|
||||||
|
case DEVICE_CAPABILITY_SPARSE_POST_QUANTUM_RATCHET -> DeviceCapability.SPARSE_POST_QUANTUM_RATCHET;
|
||||||
case DEVICE_CAPABILITY_UNSPECIFIED, UNRECOGNIZED -> throw Status.INVALID_ARGUMENT.withDescription("Unrecognized device capability").asRuntimeException();
|
case DEVICE_CAPABILITY_UNSPECIFIED, UNRECOGNIZED -> throw Status.INVALID_ARGUMENT.withDescription("Unrecognized device capability").asRuntimeException();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -31,6 +32,7 @@ public class DeviceCapabilityUtil {
|
||||||
case DELETE_SYNC -> org.signal.chat.common.DeviceCapability.DEVICE_CAPABILITY_DELETE_SYNC;
|
case DELETE_SYNC -> org.signal.chat.common.DeviceCapability.DEVICE_CAPABILITY_DELETE_SYNC;
|
||||||
case STORAGE_SERVICE_RECORD_KEY_ROTATION -> org.signal.chat.common.DeviceCapability.DEVICE_CAPABILITY_STORAGE_SERVICE_RECORD_KEY_ROTATION;
|
case STORAGE_SERVICE_RECORD_KEY_ROTATION -> org.signal.chat.common.DeviceCapability.DEVICE_CAPABILITY_STORAGE_SERVICE_RECORD_KEY_ROTATION;
|
||||||
case ATTACHMENT_BACKFILL -> org.signal.chat.common.DeviceCapability.DEVICE_CAPABILITY_ATTACHMENT_BACKFILL;
|
case ATTACHMENT_BACKFILL -> org.signal.chat.common.DeviceCapability.DEVICE_CAPABILITY_ATTACHMENT_BACKFILL;
|
||||||
|
case SPARSE_POST_QUANTUM_RATCHET -> org.signal.chat.common.DeviceCapability.DEVICE_CAPABILITY_SPARSE_POST_QUANTUM_RATCHET;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,8 @@ public enum DeviceCapability {
|
||||||
TRANSFER("transfer", AccountCapabilityMode.PRIMARY_DEVICE, false, false),
|
TRANSFER("transfer", AccountCapabilityMode.PRIMARY_DEVICE, false, false),
|
||||||
DELETE_SYNC("deleteSync", AccountCapabilityMode.ALL_DEVICES, true, true),
|
DELETE_SYNC("deleteSync", AccountCapabilityMode.ALL_DEVICES, true, true),
|
||||||
STORAGE_SERVICE_RECORD_KEY_ROTATION("ssre2", AccountCapabilityMode.ALL_DEVICES, true, true),
|
STORAGE_SERVICE_RECORD_KEY_ROTATION("ssre2", AccountCapabilityMode.ALL_DEVICES, true, true),
|
||||||
ATTACHMENT_BACKFILL("attachmentBackfill", AccountCapabilityMode.PRIMARY_DEVICE, false, true);
|
ATTACHMENT_BACKFILL("attachmentBackfill", AccountCapabilityMode.PRIMARY_DEVICE, false, true),
|
||||||
|
SPARSE_POST_QUANTUM_RATCHET("spqr", AccountCapabilityMode.ALL_DEVICES, true, true);
|
||||||
|
|
||||||
public enum AccountCapabilityMode {
|
public enum AccountCapabilityMode {
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -101,6 +101,7 @@ enum DeviceCapability {
|
||||||
reserved 4;
|
reserved 4;
|
||||||
DEVICE_CAPABILITY_STORAGE_SERVICE_RECORD_KEY_ROTATION = 5;
|
DEVICE_CAPABILITY_STORAGE_SERVICE_RECORD_KEY_ROTATION = 5;
|
||||||
DEVICE_CAPABILITY_ATTACHMENT_BACKFILL = 6;
|
DEVICE_CAPABILITY_ATTACHMENT_BACKFILL = 6;
|
||||||
|
DEVICE_CAPABILITY_SPARSE_POST_QUANTUM_RATCHET = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ZkCredential {
|
message ZkCredential {
|
||||||
|
|
|
@ -435,7 +435,8 @@ class DevicesGrpcServiceTest extends SimpleBaseGrpcTest<DevicesGrpcService, Devi
|
||||||
@CartesianTest.Values(booleans = {true, false}) final boolean storage,
|
@CartesianTest.Values(booleans = {true, false}) final boolean storage,
|
||||||
@CartesianTest.Values(booleans = {true, false}) final boolean transfer,
|
@CartesianTest.Values(booleans = {true, false}) final boolean transfer,
|
||||||
@CartesianTest.Values(booleans = {true, false}) final boolean deleteSync,
|
@CartesianTest.Values(booleans = {true, false}) final boolean deleteSync,
|
||||||
@CartesianTest.Values(booleans = {true, false}) final boolean attachmentBackfill) {
|
@CartesianTest.Values(booleans = {true, false}) final boolean attachmentBackfill,
|
||||||
|
@CartesianTest.Values(booleans = {true, false}) final boolean spqr) {
|
||||||
|
|
||||||
mockAuthenticationInterceptor().setAuthenticatedDevice(AUTHENTICATED_ACI, deviceId);
|
mockAuthenticationInterceptor().setAuthenticatedDevice(AUTHENTICATED_ACI, deviceId);
|
||||||
|
|
||||||
|
@ -460,6 +461,10 @@ class DevicesGrpcServiceTest extends SimpleBaseGrpcTest<DevicesGrpcService, Devi
|
||||||
requestBuilder.addCapabilities(org.signal.chat.common.DeviceCapability.DEVICE_CAPABILITY_ATTACHMENT_BACKFILL);
|
requestBuilder.addCapabilities(org.signal.chat.common.DeviceCapability.DEVICE_CAPABILITY_ATTACHMENT_BACKFILL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (spqr) {
|
||||||
|
requestBuilder.addCapabilities(org.signal.chat.common.DeviceCapability.DEVICE_CAPABILITY_SPARSE_POST_QUANTUM_RATCHET);
|
||||||
|
}
|
||||||
|
|
||||||
final SetCapabilitiesResponse ignored = authenticatedServiceStub().setCapabilities(requestBuilder.build());
|
final SetCapabilitiesResponse ignored = authenticatedServiceStub().setCapabilities(requestBuilder.build());
|
||||||
|
|
||||||
final Set<DeviceCapability> expectedCapabilities = new HashSet<>();
|
final Set<DeviceCapability> expectedCapabilities = new HashSet<>();
|
||||||
|
@ -480,6 +485,10 @@ class DevicesGrpcServiceTest extends SimpleBaseGrpcTest<DevicesGrpcService, Devi
|
||||||
expectedCapabilities.add(DeviceCapability.ATTACHMENT_BACKFILL);
|
expectedCapabilities.add(DeviceCapability.ATTACHMENT_BACKFILL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (spqr) {
|
||||||
|
expectedCapabilities.add(DeviceCapability.SPARSE_POST_QUANTUM_RATCHET);
|
||||||
|
}
|
||||||
|
|
||||||
verify(device).setCapabilities(expectedCapabilities);
|
verify(device).setCapabilities(expectedCapabilities);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue