UserAttributeSubpacketsParser
using Org.BouncyCastle.Bcpg.Attr;
using System.IO;
namespace Org.BouncyCastle.Bcpg
{
public class UserAttributeSubpacketsParser
{
private readonly Stream m_input;
public UserAttributeSubpacketsParser(Stream input)
{
m_input = input;
}
public virtual UserAttributeSubpacket ReadPacket()
{
StreamUtilities.StreamFlags flags;
int num = StreamUtilities.ReadBodyLen(m_input, out flags);
if (num < 0)
return null;
if (flags.HasFlag(StreamUtilities.StreamFlags.Partial))
throw new IOException("unrecognised length reading user attribute sub packet");
bool forceLongLength = flags.HasFlag(StreamUtilities.StreamFlags.LongLength);
byte num2 = StreamUtilities.RequireByte(m_input);
byte[] array = new byte[num - 1];
StreamUtilities.RequireBytes(m_input, array);
UserAttributeSubpacketTag userAttributeSubpacketTag = (UserAttributeSubpacketTag)num2;
if (userAttributeSubpacketTag == UserAttributeSubpacketTag.ImageAttribute)
return new ImageAttrib(forceLongLength, array);
return new UserAttributeSubpacket(userAttributeSubpacketTag, forceLongLength, array);
}
}
}