init commit
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
using System.IO;
|
||||
using Org.BouncyCastle.Bcpg.Attr;
|
||||
using Org.BouncyCastle.Utilities.IO;
|
||||
|
||||
namespace Org.BouncyCastle.Bcpg;
|
||||
|
||||
public class UserAttributeSubpacketsParser
|
||||
{
|
||||
private readonly Stream input;
|
||||
|
||||
public UserAttributeSubpacketsParser(Stream input)
|
||||
{
|
||||
this.input = input;
|
||||
}
|
||||
|
||||
public virtual UserAttributeSubpacket ReadPacket()
|
||||
{
|
||||
int num = input.ReadByte();
|
||||
if (num < 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
int num2 = 0;
|
||||
bool forceLongLength = false;
|
||||
if (num < 192)
|
||||
{
|
||||
num2 = num;
|
||||
}
|
||||
else if (num <= 223)
|
||||
{
|
||||
num2 = (num - 192 << 8) + input.ReadByte() + 192;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (num != 255)
|
||||
{
|
||||
throw new IOException("unrecognised length reading user attribute sub packet");
|
||||
}
|
||||
num2 = (input.ReadByte() << 24) | (input.ReadByte() << 16) | (input.ReadByte() << 8) | input.ReadByte();
|
||||
forceLongLength = true;
|
||||
}
|
||||
int num3 = input.ReadByte();
|
||||
if (num3 < 0)
|
||||
{
|
||||
throw new EndOfStreamException("unexpected EOF reading user attribute sub packet");
|
||||
}
|
||||
byte[] array = new byte[num2 - 1];
|
||||
if (Streams.ReadFully(input, array) < array.Length)
|
||||
{
|
||||
throw new EndOfStreamException();
|
||||
}
|
||||
UserAttributeSubpacketTag userAttributeSubpacketTag = (UserAttributeSubpacketTag)num3;
|
||||
UserAttributeSubpacketTag userAttributeSubpacketTag2 = userAttributeSubpacketTag;
|
||||
if (userAttributeSubpacketTag2 == UserAttributeSubpacketTag.ImageAttribute)
|
||||
{
|
||||
return new ImageAttrib(forceLongLength, array);
|
||||
}
|
||||
return new UserAttributeSubpacket(userAttributeSubpacketTag, forceLongLength, array);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user