Java tutorial
package org.bouncycastle.bcpg; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Vector; /** * Basic type for a user attribute packet. */ public class UserAttributePacket extends ContainedPacket { private UserAttributeSubpacket[] subpackets; public UserAttributePacket(BCPGInputStream in) throws IOException { UserAttributeSubpacketInputStream sIn = new UserAttributeSubpacketInputStream(in); UserAttributeSubpacket sub; Vector v = new Vector(); while ((sub = sIn.readPacket()) != null) { v.addElement(sub); } subpackets = new UserAttributeSubpacket[v.size()]; for (int i = 0; i != subpackets.length; i++) { subpackets[i] = (UserAttributeSubpacket) v.elementAt(i); } } public UserAttributePacket(UserAttributeSubpacket[] subpackets) { this.subpackets = subpackets; } public UserAttributeSubpacket[] getSubpackets() { return subpackets; } public void encode(BCPGOutputStream out) throws IOException { ByteArrayOutputStream bOut = new ByteArrayOutputStream(); for (int i = 0; i != subpackets.length; i++) { subpackets[i].encode(bOut); } out.writePacket(USER_ATTRIBUTE, bOut.toByteArray(), false); } }