From 2c808e369cbe44d0ac1ce5a4f4f52d25b2c7dda7 Mon Sep 17 00:00:00 2001 From: Ehren Kret Date: Fri, 30 Jul 2021 13:41:50 -0700 Subject: [PATCH] Create a transitional recaptcha client for upgrading --- .../TransitionalRecaptchaClient.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 service/src/main/java/org/whispersystems/textsecuregcm/recaptcha/TransitionalRecaptchaClient.java diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/recaptcha/TransitionalRecaptchaClient.java b/service/src/main/java/org/whispersystems/textsecuregcm/recaptcha/TransitionalRecaptchaClient.java new file mode 100644 index 000000000..8e5814ce9 --- /dev/null +++ b/service/src/main/java/org/whispersystems/textsecuregcm/recaptcha/TransitionalRecaptchaClient.java @@ -0,0 +1,33 @@ +/* + * Copyright 2021 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.whispersystems.textsecuregcm.recaptcha; + +import java.util.Objects; +import javax.annotation.Nonnull; + +public class TransitionalRecaptchaClient implements RecaptchaClient { + + private static final String PREFIX = "signal-v2:"; + + private final LegacyRecaptchaClient legacyRecaptchaClient; + private final EnterpriseRecaptchaClient enterpriseRecaptchaClient; + + public TransitionalRecaptchaClient( + @Nonnull final LegacyRecaptchaClient legacyRecaptchaClient, + @Nonnull final EnterpriseRecaptchaClient enterpriseRecaptchaClient) { + this.legacyRecaptchaClient = Objects.requireNonNull(legacyRecaptchaClient); + this.enterpriseRecaptchaClient = Objects.requireNonNull(enterpriseRecaptchaClient); + } + + @Override + public boolean verify(@Nonnull final String token, @Nonnull final String ip) { + if (token.startsWith(PREFIX)) { + return enterpriseRecaptchaClient.verify(token.substring(PREFIX.length()), ip); + } else { + return legacyRecaptchaClient.verify(token, ip); + } + } +}