package com.eucalyptus.auth.util;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.security.cert.X509Certificate;
import org.apache.log4j.Logger;
import org.bouncycastle.openssl.PEMReader;
import org.bouncycastle.openssl.PEMWriter;
import com.eucalyptus.records.EventType;
import com.eucalyptus.records.EventRecord;
public class PEMFiles {
private static Logger LOG = Logger.getLogger( PEMFiles.class );
public static void write( final String fileName, final Object securityToken ) {
PEMWriter privOut = null;
try {
privOut = new PEMWriter( new FileWriter( fileName ) );
EventRecord.caller( PEMFiles.class, EventType.CERTIFICATE_WRITE, fileName ).info( );
privOut.writeObject( securityToken );
privOut.close( );
} catch ( final IOException e ) {
LOG.error( e, e );
}
}
public static byte[] getBytes( final Object o ) {
PEMWriter pemOut;
ByteArrayOutputStream pemByteOut = new ByteArrayOutputStream( );
try {
pemOut = new PEMWriter( new OutputStreamWriter( pemByteOut ) );
pemOut.writeObject( o );
pemOut.close( );
} catch ( IOException e ) {
LOG.error( e, e );//this can never happen
}
return pemByteOut.toByteArray( );
}
public static X509Certificate getCert( final byte[] o ) {
X509Certificate x509 = null;
PEMReader in = null;
ByteArrayInputStream pemByteIn = new ByteArrayInputStream( o );
in = new PEMReader( new InputStreamReader( pemByteIn ) );
try {
x509 = ( X509Certificate ) in.readObject( );
} catch ( IOException e ) {
LOG.error( e, e );//this can never happen
}
return x509;
}
}