Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.bouncycastle.util.io.pem;
  
  import java.io.Writer;
  import java.util.Iterator;
  
A generic PEM writer, based on RFC 1421
 
 public class PemWriter
     extends BufferedWriter
 {
     private static final int LINE_LENGTH = 64;
 
     private final int nlLength;
     private char[]  buf = new char[];

    
Base constructor.

Parameters:
out output stream to use.
 
     public PemWriter(Writer out)
     {
         super(out);
 
         String nl = System.getProperty("line.separator");
         if (nl != null)
         {
              = nl.length();
         }
         else
         {
              = 2;
         }
     }

    
Return the number of bytes or characters required to contain the passed in object if it is PEM encoded.

Parameters:
obj pem object to be output
Returns:
an estimate of the number of bytes
 
     public int getOutputSize(PemObject obj)
     {
         // BEGIN and END boundaries.
         int size = (2 * (obj.getType().length() + 10 + )) + 6 + 4;
 
         if (!obj.getHeaders().isEmpty())
         {
             for (Iterator it = obj.getHeaders().iterator(); it.hasNext();)
             {
                 PemHeader hdr = (PemHeader)it.next();
 
                 size += hdr.getName().length() + ": ".length() + hdr.getValue().length() + ;
             }
 
             size += ;
         }
 
         // base64 encoding
         int dataLen = ((obj.getContent().length + 2) / 3) * 4;
         
         size += dataLen + (((dataLen +  - 1) / ) * );
 
         return size;
     }
     
     public void writeObject(PemObjectGenerator objGen)
         throws IOException
     {
         PemObject obj = objGen.generate();
 
         writePreEncapsulationBoundary(obj.getType());
 
         if (!obj.getHeaders().isEmpty())
         {
             for (Iterator it = obj.getHeaders().iterator(); it.hasNext();)
             {
                 PemHeader hdr = (PemHeader)it.next();
 
                 this.write(hdr.getName());
                 this.write(": ");
                 this.write(hdr.getValue());
                 this.newLine();
             }
 
             this.newLine();
         }
         
         writeEncoded(obj.getContent());
         writePostEncapsulationBoundary(obj.getType());
     }
 
     private void writeEncoded(byte[] bytes)
        throws IOException
    {
        bytes = Base64.encode(bytes);
        for (int i = 0; i < bytes.lengthi += .)
        {
            int index = 0;
            while (index != .)
            {
                if ((i + index) >= bytes.length)
                {
                    break;
                }
                [index] = (char)bytes[i + index];
                index++;
            }
            this.write(, 0, index);
            this.newLine();
        }
    }
    private void writePreEncapsulationBoundary(
        String type)
        throws IOException
    {
        this.write("-----BEGIN " + type + "-----");
        this.newLine();
    }
    private void writePostEncapsulationBoundary(
        String type)
        throws IOException
    {
        this.write("-----END " + type + "-----");
        this.newLine();
    }
New to GrepCode? Check out our FAQ X