package org.spongycastle.openssl; import java.io.IOException; import java.io.Writer; import java.security.NoSuchProviderException; import java.security.SecureRandom; import org.spongycastle.util.io.pem.PemGenerationException; import org.spongycastle.util.io.pem.PemObjectGenerator; import org.spongycastle.util.io.pem.PemWriter; /** * General purpose writer for OpenSSL PEM objects. */ public class PEMWriter extends PemWriter { private String provider; /** * Base constructor. * * @param out output stream to use. */ public PEMWriter(Writer out) { this(out, "SC"); } public PEMWriter( Writer out, String provider) { super(out); this.provider = provider; } public void writeObject( Object obj) throws IOException { try { super.writeObject(new MiscPEMGenerator(obj)); } catch (PemGenerationException e) { if (e.getCause() instanceof IOException) { throw (IOException)e.getCause(); } throw e; } } public void writeObject( PemObjectGenerator obj) throws IOException { super.writeObject(obj); } public void writeObject( Object obj, String algorithm, char[] password, SecureRandom random) throws IOException { try { super.writeObject(new MiscPEMGenerator(obj, algorithm, password, random, provider)); } catch (NoSuchProviderException e) { throw new EncryptionException(e.getMessage(), e); } } }