001// SPDX-FileCopyrightText: 2020 Paul Schaub <vanitasvitae@fsfe.org>
002//
003// SPDX-License-Identifier: Apache-2.0
004
005package org.pgpainless.sop;
006
007import java.io.IOException;
008import java.io.InputStream;
009import java.io.OutputStream;
010
011import org.bouncycastle.bcpg.ArmoredOutputStream;
012import org.bouncycastle.util.io.Streams;
013import org.pgpainless.util.ArmoredOutputStreamFactory;
014import sop.Ready;
015import sop.enums.ArmorLabel;
016import sop.exception.SOPGPException;
017import sop.operation.Armor;
018
019public class ArmorImpl implements Armor {
020
021    @Override
022    public Armor label(ArmorLabel label) throws SOPGPException.UnsupportedOption {
023        throw new SOPGPException.UnsupportedOption("Setting custom Armor labels not supported.");
024    }
025
026    @Override
027    public Ready data(InputStream data) throws SOPGPException.BadData {
028        return new Ready() {
029            @Override
030            public void writeTo(OutputStream outputStream) throws IOException {
031                ArmoredOutputStream armor = ArmoredOutputStreamFactory.get(outputStream);
032                Streams.pipeAll(data, armor);
033                armor.close();
034            }
035        };
036    }
037}