// Randomly generate the IV
final byte[] iv = new byte[contentCryptoScheme.getIVLengthInBytes()];
cryptoScheme.getSecureRandom().nextBytes(iv);
if (kekMaterials.isKMSEnabled()) {
GenerateDataKeyRequest keyGenReq = new GenerateDataKeyRequest()
.withEncryptionContext(kekMaterials.getMaterialsDescription())
.withKeyId(kekMaterials.getCustomerMasterKeyId())
.withKeySpec(contentCryptoScheme.getKeySpec());
keyGenReq
.withGeneralProgressListener(req.getGeneralProgressListener())
.withRequestMetricCollector(req.getRequestMetricCollector())
;
GenerateDataKeyResult keyGenRes = kms.generateDataKey(keyGenReq);
final SecretKey cek =