@@ -407,18 +407,18 @@ namespace Aws
407407 bool isRetry = !handle->GetMultiPartId ().empty ();
408408 uint64_t sentBytes = 0 ;
409409
410- const auto fullObjectHashCalculator = [](const std::shared_ptr<TransferHandle>& handle, bool isRetry, S3 ::Model::ChecksumAlgorithm algorithm) -> std::shared_ptr<Aws::Utils::Crypto::Hash> {
410+ const auto fullObjectHashCalculator = [](const std::shared_ptr<TransferHandle>& handle, bool isRetry,
411+ S3 ::Model::ChecksumAlgorithm algorithm) -> std::shared_ptr<Aws::Utils::Crypto::Hash> {
411412 if (handle->GetChecksum ().empty () && !isRetry) {
412- if (algorithm == S3 ::Model::ChecksumAlgorithm::CRC32 || algorithm == S3 ::Model::ChecksumAlgorithm:: CRC32C ) {
413- return Aws::MakeShared<Aws::Utils::Crypto::CRC32 >(" TransferManager" );
413+ if (algorithm == S3 ::Model::ChecksumAlgorithm::CRC64NVME ) {
414+ return Aws::MakeShared<Aws::Utils::Crypto::CRC64 >(" TransferManager" );
414415 }
415- if (algorithm == S3 ::Model::ChecksumAlgorithm::SHA1 ) {
416- return Aws::MakeShared<Aws::Utils::Crypto::Sha1 >(" TransferManager" );
416+ if (algorithm == S3 ::Model::ChecksumAlgorithm::CRC32 ) {
417+ return Aws::MakeShared<Aws::Utils::Crypto::CRC32 >(" TransferManager" );
417418 }
418- if (algorithm == S3 ::Model::ChecksumAlgorithm::SHA256 ) {
419- return Aws::MakeShared<Aws::Utils::Crypto::Sha256 >(" TransferManager" );
419+ if (algorithm == S3 ::Model::ChecksumAlgorithm::CRC32C ) {
420+ return Aws::MakeShared<Aws::Utils::Crypto::CRC32C >(" TransferManager" );
420421 }
421- return Aws::MakeShared<Aws::Utils::Crypto::CRC64 >(" TransferManager" );
422422 }
423423 return nullptr ;
424424 }(handle, isRetry, m_transferConfig.checksumAlgorithm );
@@ -432,6 +432,10 @@ namespace Aws
432432 createMultipartRequest.SetKey (handle->GetKey ());
433433 createMultipartRequest.SetMetadata (handle->GetMetadata ());
434434
435+ if (fullObjectHashCalculator) {
436+ createMultipartRequest.SetChecksumType (Aws::S3 ::Model::ChecksumType::FULL_OBJECT );
437+ }
438+
435439 auto createMultipartResponse = m_transferConfig.s3Client ->CreateMultipartUpload (createMultipartRequest);
436440 if (createMultipartResponse.IsSuccess ()) {
437441 handle->SetMultipartId (createMultipartResponse.GetResult ().GetUploadId ());
0 commit comments