public void onStream()

in src/main/java/software/amazon/encryption/s3/internal/GetEncryptedObjectPipeline.java [137:159]


        public void onStream(SdkPublisher<ByteBuffer> ciphertextPublisher) {
            long[] desiredRange = RangedGetUtils.getRange(materials.getContentRange());
            long[] cryptoRange = RangedGetUtils.getCryptoRange(materials.getContentRange());
            AlgorithmSuite algorithmSuite = materials.algorithmSuite();
            byte[] iv = contentMetadata.contentIv();
            if (algorithmSuite == AlgorithmSuite.ALG_AES_256_CTR_IV16_TAG16_NO_KDF) {
                iv = AesCtrUtils.adjustIV(iv, cryptoRange[0]);
            }

            if (algorithmSuite.equals(AlgorithmSuite.ALG_AES_256_CBC_IV16_NO_KDF)
                    || algorithmSuite.equals(AlgorithmSuite.ALG_AES_256_CTR_IV16_TAG16_NO_KDF)
                    || _enableDelayedAuthentication) {
                // CBC and GCM with delayed auth enabled use a standard publisher
                CipherPublisher plaintextPublisher = new CipherPublisher(ciphertextPublisher,
                        getObjectResponse.contentLength(), desiredRange, contentMetadata.contentRange(), algorithmSuite.cipherTagLengthBits(), materials, iv);
                wrappedAsyncResponseTransformer.onStream(plaintextPublisher);
            } else {
                // Use buffered publisher for GCM when delayed auth is not enabled
                BufferedCipherPublisher plaintextPublisher = new BufferedCipherPublisher(ciphertextPublisher,
                        getObjectResponse.contentLength(), materials, iv, _bufferSize);
                wrappedAsyncResponseTransformer.onStream(plaintextPublisher);
            }
        }