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}