Skip to content

Commit 325bfcf

Browse files
authored
Reusing common logic (#6491)
1 parent 21479fe commit 325bfcf

File tree

11 files changed

+31
-212
lines changed

11 files changed

+31
-212
lines changed

core/auth-crt/src/main/java/software/amazon/awssdk/authcrt/signer/internal/SigningUtils.java

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,16 @@
1515

1616
package software.amazon.awssdk.authcrt.signer.internal;
1717

18+
import static software.amazon.awssdk.http.auth.aws.signer.SignerConstant.AUTHORIZATION;
19+
import static software.amazon.awssdk.http.auth.aws.signer.SignerConstant.HOST;
20+
import static software.amazon.awssdk.http.auth.aws.signer.SignerConstant.X_AMZ_ALGORITHM;
21+
import static software.amazon.awssdk.http.auth.aws.signer.SignerConstant.X_AMZ_CONTENT_SHA256;
22+
import static software.amazon.awssdk.http.auth.aws.signer.SignerConstant.X_AMZ_CREDENTIAL;
23+
import static software.amazon.awssdk.http.auth.aws.signer.SignerConstant.X_AMZ_DATE;
24+
import static software.amazon.awssdk.http.auth.aws.signer.SignerConstant.X_AMZ_EXPIRES;
25+
import static software.amazon.awssdk.http.auth.aws.signer.SignerConstant.X_AMZ_SIGNATURE;
26+
import static software.amazon.awssdk.http.auth.aws.signer.SignerConstant.X_AMZ_SIGNED_HEADERS;
27+
1828
import java.nio.charset.StandardCharsets;
1929
import java.time.Clock;
2030
import java.time.Duration;
@@ -42,22 +52,11 @@ public class SigningUtils {
4252
*/
4353
public static final ExecutionAttribute<Clock> SIGNING_CLOCK = new ExecutionAttribute<>("SigningClock");
4454

45-
private static final String BODY_HASH_NAME = "x-amz-content-sha256";
46-
private static final String DATE_NAME = "X-Amz-Date";
47-
private static final String AUTHORIZATION_NAME = "Authorization";
4855
private static final String REGION_SET_NAME = "X-amz-region-set";
4956

50-
private static final String SIGNATURE_NAME = "X-Amz-Signature";
51-
private static final String CREDENTIAL_NAME = "X-Amz-Credential";
52-
private static final String ALGORITHM_NAME = "X-Amz-Algorithm";
53-
private static final String SIGNED_HEADERS_NAME = "X-Amz-SignedHeaders";
54-
private static final String EXPIRES_NAME = "X-Amz-Expires";
55-
5657
private static final Set<String> FORBIDDEN_HEADERS = buildForbiddenHeaderSet();
5758
private static final Set<String> FORBIDDEN_PARAMS = buildForbiddenQueryParamSet();
5859

59-
private static final String HOST_HEADER = "Host";
60-
6160
private SigningUtils() {
6261
}
6362

@@ -125,7 +124,7 @@ public static SdkHttpFullRequest sanitizeSdkRequestForCrtSigning(SdkHttpFullRequ
125124
String hostHeader = SdkHttpUtils.isUsingStandardPort(request.protocol(), request.port())
126125
? request.host()
127126
: request.host() + ":" + request.port();
128-
builder.putHeader(HOST_HEADER, hostHeader);
127+
builder.putHeader(HOST, hostHeader);
129128

130129
builder.clearQueryParameters();
131130

@@ -142,9 +141,9 @@ public static SdkHttpFullRequest sanitizeSdkRequestForCrtSigning(SdkHttpFullRequ
142141
private static Set<String> buildForbiddenHeaderSet() {
143142
Set<String> forbiddenHeaders = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
144143

145-
forbiddenHeaders.add(BODY_HASH_NAME);
146-
forbiddenHeaders.add(DATE_NAME);
147-
forbiddenHeaders.add(AUTHORIZATION_NAME);
144+
forbiddenHeaders.add(X_AMZ_CONTENT_SHA256);
145+
forbiddenHeaders.add(X_AMZ_DATE);
146+
forbiddenHeaders.add(AUTHORIZATION);
148147
forbiddenHeaders.add(REGION_SET_NAME);
149148

150149
return forbiddenHeaders;
@@ -153,13 +152,13 @@ private static Set<String> buildForbiddenHeaderSet() {
153152
private static Set<String> buildForbiddenQueryParamSet() {
154153
Set<String> forbiddenParams = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
155154

156-
forbiddenParams.add(SIGNATURE_NAME);
157-
forbiddenParams.add(DATE_NAME);
158-
forbiddenParams.add(CREDENTIAL_NAME);
159-
forbiddenParams.add(ALGORITHM_NAME);
160-
forbiddenParams.add(SIGNED_HEADERS_NAME);
155+
forbiddenParams.add(X_AMZ_SIGNATURE);
156+
forbiddenParams.add(X_AMZ_DATE);
157+
forbiddenParams.add(X_AMZ_CREDENTIAL);
158+
forbiddenParams.add(X_AMZ_ALGORITHM);
159+
forbiddenParams.add(X_AMZ_SIGNED_HEADERS);
161160
forbiddenParams.add(REGION_SET_NAME);
162-
forbiddenParams.add(EXPIRES_NAME);
161+
forbiddenParams.add(X_AMZ_EXPIRES);
163162

164163
return forbiddenParams;
165164
}

core/http-auth-aws/src/main/java/software/amazon/awssdk/http/auth/aws/crt/internal/util/CrtUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static software.amazon.awssdk.http.auth.aws.signer.SignerConstant.AUTHORIZATION;
1919
import static software.amazon.awssdk.http.auth.aws.signer.SignerConstant.HOST;
2020
import static software.amazon.awssdk.http.auth.aws.signer.SignerConstant.X_AMZ_ALGORITHM;
21+
import static software.amazon.awssdk.http.auth.aws.signer.SignerConstant.X_AMZ_CONTENT_SHA256;
2122
import static software.amazon.awssdk.http.auth.aws.signer.SignerConstant.X_AMZ_CREDENTIAL;
2223
import static software.amazon.awssdk.http.auth.aws.signer.SignerConstant.X_AMZ_DATE;
2324
import static software.amazon.awssdk.http.auth.aws.signer.SignerConstant.X_AMZ_EXPIRES;
@@ -39,11 +40,10 @@
3940

4041
@SdkInternalApi
4142
public final class CrtUtils {
42-
private static final String BODY_HASH_NAME = "x-amz-content-sha256";
4343
private static final String REGION_SET_NAME = "X-amz-region-set";
4444

4545
private static final Set<String> FORBIDDEN_HEADERS =
46-
Stream.of(BODY_HASH_NAME, X_AMZ_DATE, AUTHORIZATION, REGION_SET_NAME)
46+
Stream.of(X_AMZ_CONTENT_SHA256, X_AMZ_DATE, AUTHORIZATION, REGION_SET_NAME)
4747
.collect(Collectors.toCollection(() -> new TreeSet<>(String.CASE_INSENSITIVE_ORDER)));
4848
private static final Set<String> FORBIDDEN_PARAMS =
4949
Stream.of(X_AMZ_SIGNATURE, X_AMZ_DATE, X_AMZ_CREDENTIAL, X_AMZ_ALGORITHM, X_AMZ_SIGNED_HEADERS, REGION_SET_NAME,

core/http-auth-aws/src/main/java/software/amazon/awssdk/http/auth/aws/internal/signer/chunkedencoding/ChunkInputStream.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import java.io.IOException;
1919
import java.io.InputStream;
2020
import software.amazon.awssdk.annotations.SdkInternalApi;
21-
import software.amazon.awssdk.http.auth.aws.internal.signer.io.SdkLengthAwareInputStream;
21+
import software.amazon.awssdk.utils.io.SdkLengthAwareInputStream;
2222

2323
/**
2424
* A wrapped stream to represent a "chunk" of data

core/http-auth-aws/src/main/java/software/amazon/awssdk/http/auth/aws/internal/signer/io/Releasable.java

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

core/http-auth-aws/src/main/java/software/amazon/awssdk/http/auth/aws/internal/signer/io/SdkLengthAwareInputStream.java

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

core/sdk-core/src/main/java/software/amazon/awssdk/core/async/BlockingInputStreamAsyncRequestBody.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@
2525
import org.reactivestreams.Subscriber;
2626
import software.amazon.awssdk.annotations.SdkPublicApi;
2727
import software.amazon.awssdk.core.exception.NonRetryableException;
28-
import software.amazon.awssdk.core.internal.io.SdkLengthAwareInputStream;
2928
import software.amazon.awssdk.core.internal.util.Mimetype;
3029
import software.amazon.awssdk.core.internal.util.NoopSubscription;
3130
import software.amazon.awssdk.utils.Validate;
3231
import software.amazon.awssdk.utils.async.InputStreamConsumingPublisher;
32+
import software.amazon.awssdk.utils.io.SdkLengthAwareInputStream;
3333

3434
/**
3535
* An implementation of {@link AsyncRequestBody} that allows performing a blocking write of an input stream to a downstream

core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/handler/BaseClientHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import software.amazon.awssdk.core.interceptor.SdkExecutionAttribute;
3838
import software.amazon.awssdk.core.interceptor.SdkInternalExecutionAttribute;
3939
import software.amazon.awssdk.core.internal.InternalCoreExecutionAttribute;
40-
import software.amazon.awssdk.core.internal.io.SdkLengthAwareInputStream;
4140
import software.amazon.awssdk.core.internal.util.MetricUtils;
4241
import software.amazon.awssdk.core.metrics.CoreMetric;
4342
import software.amazon.awssdk.core.signer.Signer;
@@ -49,6 +48,7 @@
4948
import software.amazon.awssdk.metrics.MetricCollector;
5049
import software.amazon.awssdk.utils.Pair;
5150
import software.amazon.awssdk.utils.StringUtils;
51+
import software.amazon.awssdk.utils.io.SdkLengthAwareInputStream;
5252

5353
@SdkInternalApi
5454
public abstract class BaseClientHandler {

core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/http/pipeline/stages/MakeHttpRequestStage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import software.amazon.awssdk.core.internal.http.InterruptMonitor;
2727
import software.amazon.awssdk.core.internal.http.RequestExecutionContext;
2828
import software.amazon.awssdk.core.internal.http.pipeline.RequestPipeline;
29-
import software.amazon.awssdk.core.internal.io.SdkLengthAwareInputStream;
3029
import software.amazon.awssdk.core.internal.util.MetricUtils;
3130
import software.amazon.awssdk.core.metrics.CoreMetric;
3231
import software.amazon.awssdk.http.ContentStreamProvider;
@@ -39,6 +38,7 @@
3938
import software.amazon.awssdk.metrics.MetricCollector;
4039
import software.amazon.awssdk.utils.Logger;
4140
import software.amazon.awssdk.utils.Pair;
41+
import software.amazon.awssdk.utils.io.SdkLengthAwareInputStream;
4242

4343
/**
4444
* Delegate to the HTTP implementation to make an HTTP request and receive the response.

core/sdk-core/src/test/java/software/amazon/awssdk/core/internal/http/pipeline/stages/MakeHttpRequestStageTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
import software.amazon.awssdk.core.internal.http.HttpClientDependencies;
4141
import software.amazon.awssdk.core.internal.http.RequestExecutionContext;
4242
import software.amazon.awssdk.core.internal.http.timers.TimeoutTracker;
43-
import software.amazon.awssdk.core.internal.io.SdkLengthAwareInputStream;
43+
import software.amazon.awssdk.utils.io.SdkLengthAwareInputStream;
4444
import software.amazon.awssdk.http.ContentStreamProvider;
4545
import software.amazon.awssdk.http.HttpExecuteRequest;
4646
import software.amazon.awssdk.http.SdkHttpClient;
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16-
package software.amazon.awssdk.core.internal.io;
16+
package software.amazon.awssdk.utils.io;
1717

1818
import static software.amazon.awssdk.utils.NumericUtils.saturatedCast;
1919

2020
import java.io.FilterInputStream;
2121
import java.io.IOException;
2222
import java.io.InputStream;
23-
import software.amazon.awssdk.annotations.SdkInternalApi;
23+
import software.amazon.awssdk.annotations.SdkProtectedApi;
2424
import software.amazon.awssdk.utils.Logger;
2525
import software.amazon.awssdk.utils.Validate;
2626

@@ -29,7 +29,7 @@
2929
* the input length. If the wrapped stream has more bytes than the expected length, it will be truncated to length. If the stream
3030
* has less bytes (i.e. reaches EOF) before the expected length is reached, it will throw {@code IOException}.
3131
*/
32-
@SdkInternalApi
32+
@SdkProtectedApi
3333
public class SdkLengthAwareInputStream extends FilterInputStream {
3434
private static final Logger LOG = Logger.loggerFor(SdkLengthAwareInputStream.class);
3535
private final long length;

0 commit comments

Comments
 (0)