001// SPDX-FileCopyrightText: 2021 Paul Schaub <vanitasvitae@fsfe.org>
002//
003// SPDX-License-Identifier: Apache-2.0
004
005package sop.operation;
006
007import java.io.ByteArrayInputStream;
008import java.io.InputStream;
009
010import sop.Ready;
011import sop.enums.ArmorLabel;
012import sop.exception.SOPGPException;
013
014public interface Armor {
015
016    /**
017     * Overrides automatic detection of label.
018     *
019     * @param label armor label
020     * @return builder instance
021     */
022    Armor label(ArmorLabel label) throws SOPGPException.UnsupportedOption;
023
024    /**
025     * Armor the provided data.
026     *
027     * @param data input stream of unarmored OpenPGP data
028     * @return armored data
029     */
030    Ready data(InputStream data) throws SOPGPException.BadData;
031
032    /**
033     * Armor the provided data.
034     *
035     * @param data unarmored OpenPGP data
036     * @return armored data
037     */
038    default Ready data(byte[] data) throws SOPGPException.BadData {
039        return data(new ByteArrayInputStream(data));
040    }
041}