diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/KeysController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/KeysController.java index dafea9314..62ba345f5 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/KeysController.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/KeysController.java @@ -409,35 +409,6 @@ public class KeysController { return new PreKeyResponse(identityKey, responseItems); } - @PUT - @Path("/signed") - @Consumes(MediaType.APPLICATION_JSON) - @Operation(summary = "Upload a new signed prekey", - description = """ - Upload a new signed elliptic-curve prekey for this device. Deprecated; use PUT /v2/keys instead. - """) - @ApiResponse(responseCode = "200", description = "Indicates that new prekey was successfully stored.") - @ApiResponse(responseCode = "401", description = "Account authentication check failed.") - @ApiResponse(responseCode = "422", description = "Invalid request format.") - // TODO Remove this endpoint on or after 2024-05-24 - @Deprecated(forRemoval = true) - public CompletableFuture setSignedKey( - @ReadOnly @Auth final AuthenticatedAccount auth, - @HeaderParam(HttpHeaders.USER_AGENT) @Nullable final String userAgent, - @Valid final ECSignedPreKey signedPreKey, - @QueryParam("identity") @DefaultValue("aci") final IdentityType identityType) { - - final UUID identifier = auth.getAccount().getIdentifier(identityType); - final byte deviceId = auth.getAuthenticatedDevice().getId(); - - if (!PreKeySignatureValidator.validatePreKeySignatures(auth.getAccount().getIdentityKey(identityType), List.of(signedPreKey), userAgent, "set-signed-pre-key")) { - throw new WebApplicationException("Invalid signature", 422); - } - - return keysManager.storeEcSignedPreKeys(identifier, deviceId, signedPreKey) - .thenApply(Util.ASYNC_EMPTY_RESPONSE); - } - private List parseDeviceId(String deviceId, Account account) { if (deviceId.equals("*")) { return account.getDevices(); diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/controllers/KeysControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/controllers/KeysControllerTest.java index 728c68925..c125e0840 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/controllers/KeysControllerTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/controllers/KeysControllerTest.java @@ -326,54 +326,6 @@ class KeysControllerTest { verify(KEYS).getPqCount(AuthHelper.VALID_UUID, SAMPLE_DEVICE_ID); } - @Test - void putSignedPreKeyV2() { - final ECSignedPreKey signedPreKey = KeysHelper.signedECPreKey(9998, AuthHelper.VALID_IDENTITY_KEY_PAIR); - - try (final Response response = resources.getJerseyTest() - .target("/v2/keys/signed") - .request() - .header("Authorization", AuthHelper.getAuthHeader(AuthHelper.VALID_UUID, AuthHelper.VALID_PASSWORD)) - .put(Entity.entity(signedPreKey, MediaType.APPLICATION_JSON_TYPE))) { - - assertThat(response.getStatus()).isEqualTo(204); - verify(KEYS).storeEcSignedPreKeys(AuthHelper.VALID_UUID, AuthHelper.VALID_DEVICE.getId(), signedPreKey); - } - } - - @Test - void putPhoneNumberIdentitySignedPreKeyV2() { - final ECSignedPreKey pniSignedPreKey = KeysHelper.signedECPreKey(9998, AuthHelper.VALID_PNI_IDENTITY_KEY_PAIR); - - try (final Response response = resources.getJerseyTest() - .target("/v2/keys/signed") - .queryParam("identity", "pni") - .request() - .header("Authorization", AuthHelper.getAuthHeader(AuthHelper.VALID_UUID, AuthHelper.VALID_PASSWORD)) - .put(Entity.entity(pniSignedPreKey, MediaType.APPLICATION_JSON_TYPE))) { - - assertThat(response.getStatus()).isEqualTo(204); - verify(KEYS).storeEcSignedPreKeys(AuthHelper.VALID_PNI, AuthHelper.VALID_DEVICE.getId(), pniSignedPreKey); - } - } - - @ParameterizedTest - @EnumSource(IdentityType.class) - void putSignedPreKeyV2BadSignature(final IdentityType identityType) { - final ECSignedPreKey signedPreKey = KeysHelper.signedECPreKey(9998, Curve.generateKeyPair()); - - try (final Response response = resources.getJerseyTest() - .target("/v2/keys/signed") - .queryParam("identity", identityType.name().toLowerCase()) - .request() - .header("Authorization", AuthHelper.getAuthHeader(AuthHelper.VALID_UUID, AuthHelper.VALID_PASSWORD)) - .put(Entity.entity(signedPreKey, MediaType.APPLICATION_JSON_TYPE))) { - - assertThat(response.getStatus()).isEqualTo(422); - verify(KEYS, never()).storeEcSignedPreKeys(any(), anyByte(), any()); - } - } - @Test void validSingleRequestTestV2() { PreKeyResponse result = resources.getJerseyTest()