Skip to content

Commit fa1ab4e

Browse files
authored
Don't store x-amz-content-sha256 (#6458)
This doesn't correspond to a flexible checksum value, so this is not required.
1 parent 71e7595 commit fa1ab4e

File tree

4 files changed

+3
-93
lines changed

4 files changed

+3
-93
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ public interface Checksummer {
4848
* Get a default implementation of a checksummer, which calculates the SHA-256 checksum and places it in the
4949
* x-amz-content-sha256 header.
5050
*/
51-
static Checksummer create(PayloadChecksumStore cache) {
51+
static Checksummer create() {
5252
return new FlexibleChecksummer(
53-
cache,
53+
NoOpPayloadChecksumStore.create(),
5454
option().headerName(X_AMZ_CONTENT_SHA256).algorithm(SHA256).formatter(BinaryUtils::toHex).build()
5555
);
5656
}

core/http-auth-aws/src/main/java/software/amazon/awssdk/http/auth/aws/internal/signer/util/ChecksumUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ public static Checksummer checksummer(BaseSignRequest<?, ? extends AwsCredential
182182
if (isFlexible) {
183183
return Checksummer.forFlexibleChecksum(request.property(CHECKSUM_ALGORITHM), payloadChecksumStore);
184184
}
185-
return Checksummer.create(payloadChecksumStore);
185+
return Checksummer.create();
186186
}
187187

188188
if (isFlexible || isTrailing) {

core/http-auth-aws/src/test/java/software/amazon/awssdk/http/auth/aws/crt/internal/signer/DefaultAwsCrtV4aHttpSignerTest.java

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -444,53 +444,6 @@ void sign_withProvidedHostHeader_shouldRespectUserHostHeader() {
444444
assertThat(signedRequest.request().firstMatchingHeader("Authorization")).isPresent();
445445
}
446446

447-
@Test
448-
@Disabled("Broken - We don't pass x-amz-content-sha256 to CRT signer")
449-
// TODO: This is currently broken because we don't preserve the 'x-amz-content-sha256' header when sending to CRT to sign:
450-
// https://github.com/aws/aws-sdk-java-v2/blob/59e3a000503e1299675698e5c4c7af51f2525669/core/http-auth-aws/src/main/java/software/amazon/awssdk/http/auth/aws/crt/internal/util/CrtUtils.java#L45
451-
// Refer to JAVA-8531
452-
void sign_WithPayloadSigningTrue_chunkEncodingFalse_cacheContainsChecksum_usesCachedValue() {
453-
PayloadChecksumStore cache = PayloadChecksumStore.create();
454-
455-
byte[] checksumValue = "my-checksum".getBytes(StandardCharsets.UTF_8);
456-
cache.putChecksumValue(SHA256, checksumValue);
457-
458-
SignRequest<? extends AwsCredentialsIdentity> request = generateBasicRequest(
459-
AwsCredentialsIdentity.create("access", "secret"),
460-
httpRequest -> httpRequest.uri(URI.create("http://demo.us-east-1.amazonaws.com")),
461-
signRequest -> signRequest
462-
.putProperty(PAYLOAD_SIGNING_ENABLED, true)
463-
.putProperty(CHUNK_ENCODING_ENABLED, false)
464-
.putProperty(CHECKSUM_STORE, cache)
465-
);
466-
467-
SignedRequest signedRequest = signer.sign(request);
468-
469-
Optional<String> sha256Header = signedRequest.request().firstMatchingHeader("x-amz-content-sha256");
470-
assertThat(sha256Header).hasValue(BinaryUtils.toHex(checksumValue));
471-
}
472-
473-
@Test
474-
void sign_WithPayloadSigningTrue_chunkEncodingFalse_cacheEmpty_storesComputedChecksum() throws IOException {
475-
PayloadChecksumStore cache = PayloadChecksumStore.create();
476-
477-
SignRequest<? extends AwsCredentialsIdentity> request = generateBasicRequest(
478-
AwsCredentialsIdentity.create("access", "secret"),
479-
httpRequest -> httpRequest.uri(URI.create("http://demo.us-east-1.amazonaws.com")),
480-
signRequest -> signRequest
481-
.putProperty(PAYLOAD_SIGNING_ENABLED, true)
482-
.putProperty(CHUNK_ENCODING_ENABLED, false)
483-
.putProperty(CHECKSUM_STORE, cache)
484-
);
485-
486-
SignedRequest signedRequest = signer.sign(request);
487-
488-
byte[] requestBytes = IoUtils.toByteArray(signedRequest.payload().get().newStream());
489-
byte[] sha256Checksum = computeChecksum(SHA256, requestBytes);
490-
491-
assertThat(cache.getChecksumValue(SHA256)).isEqualTo(sha256Checksum);
492-
}
493-
494447
@Test
495448
void sign_WithPayloadSigningFalse_chunkEncodingTrue_cacheEmpty_storesComputedChecksum() throws IOException {
496449
PayloadChecksumStore cache = PayloadChecksumStore.create();

core/http-auth-aws/src/test/java/software/amazon/awssdk/http/auth/aws/internal/signer/DefaultAwsV4HttpSignerTest.java

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -869,49 +869,6 @@ void signAsync_WithPayloadSigningFalseAndChunkEncodingTrueAndFlexibleChecksumAnd
869869
.hasValue("STREAMING-UNSIGNED-PAYLOAD-TRAILER");
870870
}
871871

872-
@Test
873-
void sign_WithPayloadSigningTrue_chunkEncodingFalse_cacheContainsChecksum_usesCachedValue() {
874-
PayloadChecksumStore cache = PayloadChecksumStore.create();
875-
876-
byte[] checksumValue = "my-checksum".getBytes(StandardCharsets.UTF_8);
877-
cache.putChecksumValue(SHA256, checksumValue);
878-
879-
SignRequest<? extends AwsCredentialsIdentity> request = generateBasicRequest(
880-
AwsCredentialsIdentity.create("access", "secret"),
881-
httpRequest -> httpRequest.uri(URI.create("http://demo.us-east-1.amazonaws.com")),
882-
signRequest -> signRequest
883-
.putProperty(PAYLOAD_SIGNING_ENABLED, true)
884-
.putProperty(CHUNK_ENCODING_ENABLED, false)
885-
.putProperty(CHECKSUM_STORE, cache)
886-
);
887-
888-
SignedRequest signedRequest = signer.sign(request);
889-
890-
Optional<String> sha256Header = signedRequest.request().firstMatchingHeader("x-amz-content-sha256");
891-
assertThat(sha256Header).hasValue(BinaryUtils.toHex(checksumValue));
892-
}
893-
894-
@Test
895-
void sign_WithPayloadSigningTrue_chunkEncodingFalse_cacheEmpty_storesComputedChecksum() throws IOException {
896-
PayloadChecksumStore cache = PayloadChecksumStore.create();
897-
898-
SignRequest<? extends AwsCredentialsIdentity> request = generateBasicRequest(
899-
AwsCredentialsIdentity.create("access", "secret"),
900-
httpRequest -> httpRequest.uri(URI.create("http://demo.us-east-1.amazonaws.com")),
901-
signRequest -> signRequest
902-
.putProperty(PAYLOAD_SIGNING_ENABLED, true)
903-
.putProperty(CHUNK_ENCODING_ENABLED, false)
904-
.putProperty(CHECKSUM_STORE, cache)
905-
);
906-
907-
SignedRequest signedRequest = signer.sign(request);
908-
909-
byte[] requestBytes = IoUtils.toByteArray(signedRequest.payload().get().newStream());
910-
byte[] sha256Checksum = computeChecksum(SHA256, requestBytes);
911-
912-
assertThat(cache.getChecksumValue(SHA256)).isEqualTo(sha256Checksum);
913-
}
914-
915872
@Test
916873
void sign_WithPayloadSigningFalse_chunkEncodingTrue_cacheEmpty_storesComputedChecksum() throws IOException {
917874
PayloadChecksumStore cache = PayloadChecksumStore.create();

0 commit comments

Comments
 (0)