Skip to content

Commit a6a3b19

Browse files
authored
Downgrade dependency Base64 for terminal (#1350)
* added commons-codec byte64 encoding and decoding support for Android 7 * adjusted unit-test * added commons-codec to NexoCrypto.java
1 parent c29fdef commit a6a3b19

File tree

4 files changed

+14
-8
lines changed

4 files changed

+14
-8
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,11 @@
245245
<version>3.9.0</version>
246246
<scope>test</scope>
247247
</dependency>
248+
<dependency>
249+
<groupId>commons-codec</groupId>
250+
<artifactId>commons-codec</artifactId>
251+
<version>1.15</version> <!-- or the latest version -->
252+
</dependency>
248253
<!-- Generated model annotations -->
249254
<dependency>
250255
<groupId>io.swagger</groupId>

src/main/java/com/adyen/model/terminal/SaleToAcquirerData.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import java.util.Map;
2828
import java.util.Objects;
2929

30-
import java.util.Base64;
30+
import org.apache.commons.codec.binary.Base64;
3131
import com.adyen.model.applicationinfo.ApplicationInfo;
3232
import com.google.gson.Gson;
3333
import com.google.gson.GsonBuilder;
@@ -278,11 +278,12 @@ public String toString() {
278278

279279
public String toBase64() {
280280
String json = PRETTY_PRINT_GSON.toJson(this);
281-
return new String(Base64.getEncoder().encode(json.getBytes()));
281+
byte[] encodedBytes = Base64.encodeBase64(json.getBytes());
282+
return new String(encodedBytes);
282283
}
283284

284285
public static SaleToAcquirerData fromBase64(String base64) {
285-
byte[] decoded = Base64.getDecoder().decode(base64);
286+
byte[] decoded = Base64.decodeBase64(base64);
286287
try (Reader reader = new InputStreamReader(new ByteArrayInputStream(decoded))) {
287288
return PRETTY_PRINT_GSON.fromJson(reader, SaleToAcquirerData.class);
288289
}

src/main/java/com/adyen/terminal/security/NexoCrypto.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import com.adyen.model.terminal.security.SecurityKey;
2828
import com.adyen.model.terminal.security.SecurityTrailer;
2929
import com.adyen.terminal.security.exception.NexoCryptoException;
30-
import java.util.Base64;
30+
import org.apache.commons.codec.binary.Base64;
3131
import javax.crypto.BadPaddingException;
3232
import javax.crypto.Cipher;
3333
import javax.crypto.IllegalBlockSizeException;
@@ -74,15 +74,15 @@ public SaleToPOISecuredMessage encrypt(String saleToPoiMessageJson, MessageHeade
7474

7575
SaleToPOISecuredMessage saleToPoiSecuredMessage = new SaleToPOISecuredMessage();
7676
saleToPoiSecuredMessage.setMessageHeader(messageHeader);
77-
saleToPoiSecuredMessage.setNexoBlob(new String(Base64.getEncoder().encode(encryptedSaleToPoiMessage)));
77+
saleToPoiSecuredMessage.setNexoBlob(new String(Base64.encodeBase64(encryptedSaleToPoiMessage)));
7878
saleToPoiSecuredMessage.setSecurityTrailer(securityTrailer);
7979

8080
return saleToPoiSecuredMessage;
8181
}
8282

8383
public String decrypt(SaleToPOISecuredMessage saleToPoiSecuredMessage) throws Exception {
8484
NexoDerivedKey derivedKey = getNexoDerivedKey();
85-
byte[] encryptedSaleToPoiMessageByteArray = Base64.getDecoder().decode(saleToPoiSecuredMessage.getNexoBlob().getBytes());
85+
byte[] encryptedSaleToPoiMessageByteArray = Base64.decodeBase64(saleToPoiSecuredMessage.getNexoBlob().getBytes());
8686
byte[] ivNonce = saleToPoiSecuredMessage.getSecurityTrailer().getNonce();
8787
byte[] decryptedSaleToPoiMessageByteArray = crypt(encryptedSaleToPoiMessageByteArray, derivedKey, ivNonce, Cipher.DECRYPT_MODE);
8888

src/test/java/com/adyen/serializer/SaleToAcquirerDataSerializerTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import com.google.gson.Gson;
88
import com.google.gson.JsonParser;
99
import com.google.gson.GsonBuilder;
10-
import java.util.Base64;
10+
import org.apache.commons.codec.binary.Base64;
1111
import org.junit.Test;
1212

1313
import java.util.HashMap;
@@ -105,7 +105,7 @@ public void testSerialize() {
105105

106106
// test if base64 works
107107
String serialized = saleToAcquirerDataModelAdapter.serialize(saleToAcquirerData, null, null).getAsString();
108-
SaleToAcquirerData saleToAcquirerDataDecoded = new Gson().fromJson(new String(Base64.getDecoder().decode(serialized)), SaleToAcquirerData.class);
108+
SaleToAcquirerData saleToAcquirerDataDecoded = new Gson().fromJson(new String(Base64.decodeBase64(serialized)), SaleToAcquirerData.class);
109109
assertEquals(saleToAcquirerData, saleToAcquirerDataDecoded);
110110
}
111111

0 commit comments

Comments
 (0)