Skip to content

Commit

Permalink
Fixed an issue where SignerUtils was using the internal class of anot…
Browse files Browse the repository at this point in the history
…her module.
  • Loading branch information
millems committed Jan 29, 2025
1 parent 48d19b5 commit 18f00ca
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,14 @@
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Optional;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import software.amazon.awssdk.annotations.SdkInternalApi;
import software.amazon.awssdk.checksums.internal.DigestAlgorithm;
import software.amazon.awssdk.checksums.internal.DigestAlgorithm.CloseableMessageDigest;
import software.amazon.awssdk.checksums.SdkChecksum;
import software.amazon.awssdk.http.ContentStreamProvider;
import software.amazon.awssdk.http.Header;
import software.amazon.awssdk.http.SdkHttpRequest;
Expand Down Expand Up @@ -230,35 +228,35 @@ public static InputStream getBinaryRequestPayloadStream(ContentStreamProvider st
}

public static byte[] hash(InputStream input) {
try (CloseableMessageDigest cmd = getMessageDigestInstance()) {
MessageDigest md = cmd.messageDigest();
try {
SdkChecksum md = sha256Checksum();
byte[] buf = new byte[4096];
int read = 0;
while (read >= 0) {
read = input.read(buf);
md.update(buf, 0, read);
}
return cmd.digest();
return md.getChecksumBytes();
} catch (Exception e) {
throw new RuntimeException("Unable to compute hash while signing request: ", e);
}
}

public static byte[] hash(ByteBuffer input) {
try (CloseableMessageDigest cmd = getMessageDigestInstance()) {
MessageDigest md = cmd.messageDigest();
try {
SdkChecksum md = sha256Checksum();
md.update(input);
return cmd.digest();
return md.getChecksumBytes();
} catch (Exception e) {
throw new RuntimeException("Unable to compute hash while signing request: ", e);
}
}

public static byte[] hash(byte[] data) {
try (CloseableMessageDigest cmd = getMessageDigestInstance()) {
MessageDigest md = cmd.messageDigest();
try {
SdkChecksum md = sha256Checksum();
md.update(data);
return cmd.digest();
return md.getChecksumBytes();
} catch (Exception e) {
throw new RuntimeException("Unable to compute hash while signing request: ", e);
}
Expand Down Expand Up @@ -295,7 +293,7 @@ public static String getContentHash(SdkHttpRequest.Builder requestBuilder) {
);
}

private static CloseableMessageDigest getMessageDigestInstance() {
return DigestAlgorithm.SHA256.getDigest();
private static SdkChecksum sha256Checksum() {
return SdkChecksum.forAlgorithm(() -> "SHA256");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ Class <software.amazon.awssdk.http.FileStoreTlsKeyManagersProvider> depends on a
Class <software.amazon.awssdk.http.SystemPropertyTlsKeyManagersProvider> depends on an internal API from a different module (Class <software.amazon.awssdk.internal.http.AbstractFileStoreTlsKeyManagersProvider>)
Class <software.amazon.awssdk.http.TlsKeyManagersProvider> depends on an internal API from a different module (Class <software.amazon.awssdk.internal.http.NoneTlsKeyManagersProvider>)
Class <software.amazon.awssdk.http.auth.aws.eventstream.internal.io.SigV4DataFramePublisher> depends on an internal API from a different module (Class <software.amazon.awssdk.utils.internal.MappingSubscriber>)
Class <software.amazon.awssdk.http.auth.aws.internal.signer.util.SignerUtils> depends on an internal API from a different module (Class <software.amazon.awssdk.checksums.internal.DigestAlgorithm>)
Class <software.amazon.awssdk.imds.internal.AsyncHttpRequestHelper> depends on an internal API from a different module (Class <software.amazon.awssdk.core.internal.http.TransformingAsyncResponseHandler>)
Class <software.amazon.awssdk.imds.internal.AsyncHttpRequestHelper> depends on an internal API from a different module (Class <software.amazon.awssdk.core.internal.http.async.AsyncResponseHandler>)
Class <software.amazon.awssdk.imds.internal.AsyncHttpRequestHelper> depends on an internal API from a different module (Class <software.amazon.awssdk.core.internal.http.async.SimpleHttpContentPublisher>)
Expand Down

0 comments on commit 18f00ca

Please sign in to comment.