package org.bouncycastle.bcpg;

import java.io.*;

/**
 * basic packet for an experimental packet.
 */
public class ExperimentalPacket 
    extends ContainedPacket implements PublicKeyAlgorithmTags
{
	private int					tag;
	private byte[]				contents;
	
	/**
	 * 
	 * @param in
	 * @throws IOException
	 */
    ExperimentalPacket(
    	int						tag,
    	BCPGInputStream	in)
    	throws IOException
    {
    	this.tag = tag;
    	
    	if (in.available() != 0)
    	{
			ByteArrayOutputStream bOut = new ByteArrayOutputStream(in.available());
			
			int b;
			while ((b = in.read()) >= 0) 
			{
		 		bOut.write(b);
			}
			
			contents = bOut.toByteArray();
    	}
    	else
    	{
    		contents = new byte[0];
    	}
    }
    
    public int getTag()
    {
    	return tag;
    }
    
    public byte[] getContents()
    {
    	byte[]	tmp = new byte[contents.length];
    	
    	System.arraycopy(contents, 0, tmp, 0, tmp.length);
    	
    	return tmp;
    }
    
    public void encode(
    	BCPGOutputStream	out)
    	throws IOException
	{
		out.writePacket(tag, contents, true);
	}
}
