Skip to content

Commit 2293f5a

Browse files
authoredJan 14, 2025··
chore(middleware-flexible-checksums): change default algorithm to CRC32 (#6749)
1 parent e305b39 commit 2293f5a

File tree

5 files changed

+17
-26
lines changed

5 files changed

+17
-26
lines changed
 

‎packages/middleware-flexible-checksums/src/constants.ts

+4-6
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ export const DEFAULT_RESPONSE_CHECKSUM_VALIDATION = RequestChecksumCalculation.W
5252
* Checksum Algorithms supported by the SDK.
5353
*/
5454
export enum ChecksumAlgorithm {
55+
/**
56+
* @deprecated Use {@link ChecksumAlgorithm.CRC32} instead.
57+
*/
5558
MD5 = "MD5",
5659
CRC32 = "CRC32",
5760
CRC32C = "CRC32C",
@@ -70,9 +73,4 @@ export enum ChecksumLocation {
7073
/**
7174
* @internal
7275
*/
73-
export const DEFAULT_CHECKSUM_ALGORITHM = ChecksumAlgorithm.MD5;
74-
75-
/**
76-
* @internal
77-
*/
78-
export const S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM = ChecksumAlgorithm.CRC32;
76+
export const DEFAULT_CHECKSUM_ALGORITHM = ChecksumAlgorithm.CRC32;

‎packages/middleware-flexible-checksums/src/flexibleChecksumsMiddleware.ts

+4-8
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,10 @@ export const flexibleChecksumsMiddleware =
7474
const { base64Encoder, streamHasher } = config;
7575
const { requestChecksumRequired, requestAlgorithmMember } = middlewareConfig;
7676

77-
const checksumAlgorithm = getChecksumAlgorithmForRequest(
78-
input,
79-
{
80-
requestChecksumRequired,
81-
requestAlgorithmMember: requestAlgorithmMember?.name,
82-
},
83-
!!context.isS3ExpressBucket
84-
);
77+
const checksumAlgorithm = getChecksumAlgorithmForRequest(input, {
78+
requestChecksumRequired,
79+
requestAlgorithmMember: requestAlgorithmMember?.name,
80+
});
8581
let updatedBody = requestBody;
8682
let updatedHeaders = headers;
8783

‎packages/middleware-flexible-checksums/src/getChecksumAlgorithmForRequest.spec.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import { describe, expect, test as it } from "vitest";
22

3-
import { ChecksumAlgorithm } from "./constants";
3+
import { ChecksumAlgorithm, DEFAULT_CHECKSUM_ALGORITHM } from "./constants";
44
import { getChecksumAlgorithmForRequest } from "./getChecksumAlgorithmForRequest";
55
import { CLIENT_SUPPORTED_ALGORITHMS } from "./types";
66

77
describe(getChecksumAlgorithmForRequest.name, () => {
88
const mockRequestAlgorithmMember = "mockRequestAlgorithmMember";
99

1010
describe("when requestAlgorithmMember is not provided", () => {
11-
it("returns MD5 if requestChecksumRequired is set", () => {
12-
expect(getChecksumAlgorithmForRequest({}, { requestChecksumRequired: true })).toEqual(ChecksumAlgorithm.MD5);
11+
it(`returns ${DEFAULT_CHECKSUM_ALGORITHM} if requestChecksumRequired is set`, () => {
12+
expect(getChecksumAlgorithmForRequest({}, { requestChecksumRequired: true })).toEqual(DEFAULT_CHECKSUM_ALGORITHM);
1313
});
1414

1515
it("returns undefined if requestChecksumRequired is false", () => {
@@ -20,9 +20,9 @@ describe(getChecksumAlgorithmForRequest.name, () => {
2020
describe("when requestAlgorithmMember is not set in input", () => {
2121
const mockOptions = { requestAlgorithmMember: mockRequestAlgorithmMember };
2222

23-
it("returns MD5 if requestChecksumRequired is set", () => {
23+
it(`returns ${DEFAULT_CHECKSUM_ALGORITHM} if requestChecksumRequired is set`, () => {
2424
expect(getChecksumAlgorithmForRequest({}, { ...mockOptions, requestChecksumRequired: true })).toEqual(
25-
ChecksumAlgorithm.MD5
25+
DEFAULT_CHECKSUM_ALGORITHM
2626
);
2727
});
2828

‎packages/middleware-flexible-checksums/src/getChecksumAlgorithmForRequest.ts

+3-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ChecksumAlgorithm, DEFAULT_CHECKSUM_ALGORITHM, S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM } from "./constants";
1+
import { ChecksumAlgorithm, DEFAULT_CHECKSUM_ALGORITHM } from "./constants";
22
import { CLIENT_SUPPORTED_ALGORITHMS } from "./types";
33

44
export interface GetChecksumAlgorithmForRequestOptions {
@@ -20,16 +20,13 @@ export interface GetChecksumAlgorithmForRequestOptions {
2020
*/
2121
export const getChecksumAlgorithmForRequest = (
2222
input: any,
23-
{ requestChecksumRequired, requestAlgorithmMember }: GetChecksumAlgorithmForRequestOptions,
24-
isS3Express?: boolean
23+
{ requestChecksumRequired, requestAlgorithmMember }: GetChecksumAlgorithmForRequestOptions
2524
): ChecksumAlgorithm | undefined => {
26-
const defaultAlgorithm = isS3Express ? S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM : DEFAULT_CHECKSUM_ALGORITHM;
27-
2825
// Either the Operation input member that is used to configure request checksum behavior is not set, or
2926
// the value for input member to configure flexible checksum is not set.
3027
if (!requestAlgorithmMember || !input[requestAlgorithmMember]) {
3128
// Select an algorithm only if request checksum is required.
32-
return requestChecksumRequired ? defaultAlgorithm : undefined;
29+
return requestChecksumRequired ? DEFAULT_CHECKSUM_ALGORITHM : undefined;
3330
}
3431

3532
const checksumAlgorithm = input[requestAlgorithmMember];

‎private/aws-middleware-test/src/middleware-serde.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ describe("middleware-serde", () => {
2727
"x-amz-acl": "private",
2828
"content-length": "509",
2929
Expect: "100-continue",
30-
"content-md5": "qpwmS0vhCISEXes008aoXA==",
30+
"x-amz-checksum-crc32": "XnKFaw==",
3131
host: "s3.us-west-2.amazonaws.com",
3232
"x-amz-content-sha256": "c0a89780e1aac5dfa17604e9e25616e7babba0b655db189be49b4c352543bb22",
3333
},

0 commit comments

Comments
 (0)
Please sign in to comment.