8000 Replace AHC Base64 with java.util.Base64, close #1238 (#1516) · carlanton/async-http-client@ee7d4e9 · GitHub
[go: up one dir, main page]

Skip to content

Commit ee7d4e9

Browse files
doom369slandelle
authored andcommitted
Replace AHC Base64 with java.util.Base64, close AsyncHttpClient#1238 (AsyncHttpClient#1516)
1 parent 22211e5 commit ee7d4e9

File tree

8 files changed

+62
-164
lines changed

8 files changed

+62
-164
lines changed

client/src/main/java/org/asynchttpclient/ntlm/NtlmEngine.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@
2727
// fork from Apache HttpComponents
2828
package org.asynchttpclient.ntlm;
2929

30-
import org.asynchttpclient.util.Base64;
31-
3230
import javax.crypto.Cipher;
3331
import javax.crypto.spec.SecretKeySpec;
3432
import java.io.UnsupportedEncodingException;
@@ -37,6 +35,7 @@
3735
import java.security.Key;
3836
import java.security.MessageDigest;
3937
import java.util.Arrays;
38+
import java.util.Base64;
4039
import java.util.Locale;
4140

4241
import static java.nio.charset.StandardCharsets.US_ASCII;
@@ -762,7 +761,7 @@ private static class NTLMMessage {
762761

763762
/** Constructor to use when message contents are known */
764763
NTLMMessage(final String messageBody, final int expectedType) throws NtlmEngineException {
765-
messageContents = Base64.decode(messageBody);
764+
messageContents = Base64.getDecoder().decode(messageBody);
766765
// Look for NTLM message
767766
if (messageContents.length < SIGNATURE.length) {
768767
throw new NtlmEngineException("NTLM message decoding error - packet too short");
@@ -900,7 +899,7 @@ String getResponse() {
900899
} else {
901900
resp = messageContents;
902901
}
903-
return Base64.encode(resp);
902+
return Base64.getEncoder().encodeToString(resp);
904903
}
905904

906905
}

client/src/main/java/org/asynchttpclient/oauth/OAuthSignatureCalculatorInstance.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import org.asynchttpclient.Request;
1919
import org.asynchttpclient.RequestBuilderBase;
2020
import org.asynchttpclient.SignatureCalculator;
21-
import org.asynchttpclient.util.Base64;
2221
import org.asynchttpclient.util.StringBuilderPool;
2322
import org.asynchttpclient.util.StringUtils;
2423
import org.asynchttpclient.util.Utf8UrlEncoder;
@@ -28,6 +27,7 @@
2827
import java.nio.ByteBuffer;
2928
import java.security.InvalidKeyException;
3029
import java.security.NoSuchAlgorithmException;
30+
import java.util.Base64;
3131
import java.util.List;
3232
import java.util.concurrent.ThreadLocalRandom;
3333 10000
import java.util.regex.Pattern;
@@ -77,7 +77,7 @@ public void sign(ConsumerKey consumerAuth, RequestToken userAuth, Request reques
7777
private String generateNonce() {
7878
ThreadLocalRandom.current().nextBytes(nonceBuffer);
7979
// let's use base64 encoding over hex, slightly more compact than hex or decimals
80-
return Base64.encode(nonceBuffer);
80+
return Base64.getEncoder().encodeToString(nonceBuffer);
8181
}
8282

8383
void sign(ConsumerKey consumerAuth, RequestToken userAuth, Request request, RequestBuilderBase<?> requestBuilder, long timestamp, String nonce) throws InvalidKeyException {
@@ -94,7 +94,7 @@ String calculateSignature(ConsumerKey consumerAuth, RequestToken userAuth, Reque
9494
ByteBuffer rawBase = StringUtils.charSequence2ByteBuffer(sb, UTF_8);
9595
byte[] rawSignature = digest(consumerAuth, userAuth, rawBase);
9696
// and finally, base64 encoded... phew!
97-
return Base64.encode(rawSignature);
97+
return Base64.getEncoder().encodeToString(rawSignature);
9898
}
9999

100100
StringBuilder signatureBaseString(ConsumerKey consumerAuth, RequestToken userAuth, Request request, long oauthTimestamp, String percentEncodedNonce) {

client/src/main/java/org/asynchttpclient/spnego/SpnegoEngine.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,16 @@
3737

3838
package org.asynchttpclient.spnego;
3939

40-
import org.asynchttpclient.util.Base64;
41-
import org.ietf.jgss.*;
40+
import org.ietf.jgss.GSSContext;
41+
import org.ietf.jgss.GSSException;
42+
import org.ietf.jgss.GSSManager;
43+
import org.ietf.jgss.GSSName;
44+
import org.ietf.jgss.Oid;
4245
import org.slf4j.Logger;
4346
import org.slf4j.LoggerFactory;
4447

4548
import java.io.IOException;
49+
import java.util.Base64;
4650

4751
/**
4852
* SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism) authentication scheme.
@@ -145,7 +149,7 @@ public String generateToken(String server) throws SpnegoEngineException {
145149

146150
gssContext.dispose();
147151

148-
String tokenstr = Base64.encode(token);
152+
String tokenstr = Base64.getEncoder().encodeToString(token);
149153
log.debug("Sending response '{}' back to the server", tokenstr);
150154

151155
return tokenstr;

client/src/main/java/org/asynchttpclient/util/AuthenticatorUtils.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.asynchttpclient.uri.Uri;
2222

2323
import java.nio.charset.Charset;
24+
import java.util.Base64;
2425
import java.util.List;
2526

2627
import static io.netty.handler.codec.http.HttpHeaderNames.PROXY_AUTHORIZATION;
@@ -50,7 +51,7 @@ private static String computeBasicAuthentication(Realm realm) {
5051

5152
private static String computeBasicAuthentication(String principal, String password, Charset charset) {
5253
String s = principal + ":" + password;
53-
return "Basic " + Base64.encode(s.getBytes(charset));
54+
return "Basic " + Base64.getEncoder().encodeToString(s.getBytes(charset));
5455
}
5556

5657
public static String computeRealmURI(Uri uri, boolean useAbsoluteURI, boolean omitQuery) {

client/src/main/java/org/asynchttpclient/util/Base64.java

Lines changed: 0 additions & 136 deletions
This file was deleted.

client/src/main/java/org/asynchttpclient/ws/WebSocketUtils.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
package org.asynchttpclient.ws;
1515

1616
import io.netty.util.internal.ThreadLocalRandom;
17-
import org.asynchttpclient.util.Base64;
17+
18+
import java.util.Base64;
1819

1920
import static java.nio.charset.StandardCharsets.US_ASCII;
2021
import static org.asynchttpclient.util.MessageDigestUtils.pooledSha1MessageDigest;
@@ -28,10 +29,11 @@ public static String getWebSocketKey() {
2829
for (int i = 0; i < nonce.length; i++) {
2930
nonce[i] = (byte) random.nextInt(256);
3031
}
31-
return Base64.encode(nonce);
32+
return Base64.getEncoder().encodeToString(nonce);
3233
}
3334

3435
public static String getAcceptKey(String key) {
35-
return Base64.encode(pooledSha1MessageDigest().digest((key + MAGIC_GUID).getBytes(US_ASCII)));
36+
return Base64.getEncoder().encodeToString(pooledSha1MessageDigest().digest(
37+
(key + MAGIC_GUID).getBytes(US_ASCII)));
3638
}
3739
}

client/src/test/java/org/asynchttpclient/ntlm/NtlmTest.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import org.asynchttpclient.Realm;
2020
import org.asynchttpclient.Response;
2121
import org.asynchttpclient.ntlm.NtlmEngine.Type2Message;
22-
import org.asynchttpclient.util.Base64;
2322
import org.eclipse.jetty.server.handler.AbstractHandler;
2423
import org.testng.Assert;
2524
import org.testng.annotations.Test;
@@ -30,10 +29,14 @@
3029
import java.io.IOException;
3130
import java.nio.ByteBuffer;
3231
import java.nio.charset.StandardCharsets;
32+
import java.util.Base64;
3333
import java.util.concurrent.ExecutionException;
3434
import java.util.concurrent.Future;
3535

36-
import static org.asynchttpclient.Dsl.*;
36+
import static org.asynchttpclient.Dsl.asyncHttpClient;
37+
import static org.asynchttpclient.Dsl.config;
38+
import static org.asynchttpclient.Dsl.get;
39+
import static org.asynchttpclient.Dsl.ntlmAuthRealm;
3740
import static org.testng.Assert.assertEquals;
3841
import static org.testng.Assert.fail;
3942

@@ -85,14 +88,14 @@ public void testGenerateType1Msg() {
8588
@Test(expectedExceptions = NtlmEngineException.class)
8689
public void testGenerateType3MsgThrowsExceptionWhenChallengeTooShort() {
8790
NtlmEngine engine = new NtlmEngine();
88-
engine.generateType3Msg("username", "password", "localhost", "workstation", Base64.encode("a".getBytes()));
91+
engine.generateType3Msg("username", "password", "localhost", "workstation", Base64.getEncoder().encodeToString("a".getBytes()));
8992
fail("An NtlmEngineException must have occurred as challenge length is too short");
9093
}
9194

9295
@Test(expectedExceptions = NtlmEngineException.class)
9396
public void testGenerateType3MsgThrowsExceptionWhenChallengeDoesNotFollowCorrectFormat() {
9497
NtlmEngine engine = new NtlmEngine();
95-
engine.generateType3Msg("username", "password", "localhost", "workstation", Base64.encode("challenge".getBytes()));
98+
engine.generateType3Msg("username", "password", "localhost", "workstation", Base64.getEncoder().encodeToString("challenge".getBytes()));
9699
fail("An NtlmEngineException must have occurred as challenge format is not correct");
97100
}
98101

@@ -108,7 +111,7 @@ public void testGenerateType3MsgThworsExceptionWhenType2IndicatorNotPresent() th
108111
buf.write(0);
109112
buf.write("challenge".getBytes());
110113
NtlmEngine engine = new NtlmEngine();
111-
engine.generateType3Msg("username", "password", "localhost", "workstation", Base64.encode(buf.toByteArray()));
114+
engine.generateType3Msg("username", "password", "localhost", "workstation", Base64.getEncoder().encodeToString(buf.toByteArray()));
112115
buf.close();
113116
fail("An NtlmEngineException must have occurred as type 2 indicator is incorrect");
114117
}
@@ -134,7 +137,7 @@ public void testGenerateType3MsgThrowsExceptionWhenUnicodeSupportNotIndicated()
134137

135138
buf.write(longToBytes(1L));// challenge
136139
NtlmEngine engine = new NtlmEngine();
137-
engine.generateType3Msg("username", "password", "localhost", "workstation", Base64.encode(buf.toByteArray()));
140+
engine.generateType3Msg("username", "password", "localhost", "workstation", Base64.getEncoder().encodeToString(buf.toByteArray()));
138141
buf.close();
139142
fail("An NtlmEngineException must have occurred as unicode support is not indicated");
140143
}
@@ -166,7 +169,8 @@ public void testGenerateType3Msg() throws IOException {
166169

167170
buf.write(longToBytes(1L));// challenge
168171
NtlmEngine engine = new NtlmEngine();
169-
String type3Msg = engine.generateType3Msg("username", "password", "localhost", "workstation", Base64.encode(buf.toByteArray()));
172+
String type3Msg = engine.generateType3Msg("username", "password", "localhost", "workstation",
173+
Base64.getEncoder().encodeToString(buf.toByteArray()));
170174
buf.close();
171175
assertEquals(
172176
type3Msg,

0 commit comments

Comments
 (0)
0