in src/main/java/software/amazon/encryption/s3/S3AsyncEncryptionClient.java [789:873]
public S3AsyncEncryptionClient build() {
if (!onlyOneNonNull(_cryptoMaterialsManager, _keyring, _aesKey, _rsaKeyPair, _kmsKeyId)) {
throw new S3EncryptionClientException("Exactly one must be set of: crypto materials manager, keyring, AES key, RSA key pair, KMS key id");
}
if (_bufferSize >= 0) {
if (_enableDelayedAuthenticationMode) {
throw new S3EncryptionClientException("Buffer size cannot be set when delayed authentication mode is enabled");
}
} else {
_bufferSize = DEFAULT_BUFFER_SIZE_BYTES;
}
if (_wrappedClient == null) {
_wrappedClient = S3AsyncClient.builder()
.credentialsProvider(_awsCredentialsProvider)
.region(_region)
.dualstackEnabled(_dualStackEnabled)
.fipsEnabled(_fipsEnabled)
.overrideConfiguration(_overrideConfiguration)
.endpointOverride(_endpointOverride)
.asyncConfiguration(_clientAsyncConfiguration != null ? _clientAsyncConfiguration : ClientAsyncConfiguration.builder().build())
.httpClient(_sdkAsyncHttpClient)
.httpClientBuilder(_sdkAsyncHttpClientBuilder)
.serviceConfiguration(_serviceConfiguration)
.accelerate(_accelerate)
.disableMultiRegionAccessPoints(_disableMultiRegionAccessPoints)
.disableS3ExpressSessionAuth(_disableS3ExpressSessionAuth)
.forcePathStyle(_forcePathStyle)
.useArnRegion(_useArnRegion)
.crossRegionAccessEnabled(_crossRegionAccessEnabled)
// If either of these are null, the AWS SDK will throw an exception.
// Since there is no way to set them without an exception being thrown,
// this would always result in an exception.
// .multipartEnabled(_multipartEnabled)
// .multipartConfiguration(_multipartConfiguration)
.build();
}
if (_instructionFileConfig == null) {
_instructionFileConfig = InstructionFileConfig.builder()
.instructionFileAsyncClient(_wrappedClient)
.build();
}
if (_keyring == null) {
if (_aesKey != null) {
_keyring = AesKeyring.builder()
.wrappingKey(_aesKey)
.enableLegacyWrappingAlgorithms(_enableLegacyWrappingAlgorithms)
.secureRandom(_secureRandom)
.build();
} else if (_rsaKeyPair != null) {
_keyring = RsaKeyring.builder()
.wrappingKeyPair(_rsaKeyPair)
.enableLegacyWrappingAlgorithms(_enableLegacyWrappingAlgorithms)
.secureRandom(_secureRandom)
.build();
} else if (_kmsKeyId != null) {
KmsClient kmsClient = KmsClient.builder()
.credentialsProvider(_awsCredentialsProvider)
.region(_region)
.dualstackEnabled(_dualStackEnabled)
.fipsEnabled(_fipsEnabled)
.overrideConfiguration(_overrideConfiguration)
.build();
_keyring = KmsKeyring.builder()
.kmsClient(kmsClient)
.wrappingKeyId(_kmsKeyId)
.enableLegacyWrappingAlgorithms(_enableLegacyWrappingAlgorithms)
.secureRandom(_secureRandom)
.build();
}
}
if (_cryptoMaterialsManager == null) {
_cryptoMaterialsManager = DefaultCryptoMaterialsManager.builder()
.keyring(_keyring)
.cryptoProvider(_cryptoProvider)
.build();
}
return new S3AsyncEncryptionClient(this);
}