82 lines
1.8 KiB
C#
82 lines
1.8 KiB
C#
using Org.BouncyCastle.Bcpg.Attr;
|
|
|
|
namespace Org.BouncyCastle.Bcpg.OpenPgp
|
|
{
|
|
/// <remarks>Container for a list of user attribute subpackets.</remarks>
|
|
public class PgpUserAttributeSubpacketVector
|
|
{
|
|
private readonly UserAttributeSubpacket[] packets;
|
|
|
|
internal PgpUserAttributeSubpacketVector(
|
|
UserAttributeSubpacket[] packets)
|
|
{
|
|
this.packets = packets;
|
|
}
|
|
|
|
public UserAttributeSubpacket GetSubpacket(
|
|
UserAttributeSubpacketTag type)
|
|
{
|
|
for (int i = 0; i != packets.Length; i++)
|
|
{
|
|
if (packets[i].SubpacketType == type)
|
|
{
|
|
return packets[i];
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public ImageAttrib GetImageAttribute()
|
|
{
|
|
UserAttributeSubpacket p = GetSubpacket(UserAttributeSubpacketTag.ImageAttribute);
|
|
|
|
return p == null ? null : (ImageAttrib) p;
|
|
}
|
|
|
|
internal UserAttributeSubpacket[] ToSubpacketArray()
|
|
{
|
|
return packets;
|
|
}
|
|
|
|
public override bool Equals(
|
|
object obj)
|
|
{
|
|
if (obj == this)
|
|
return true;
|
|
|
|
PgpUserAttributeSubpacketVector other = obj as PgpUserAttributeSubpacketVector;
|
|
|
|
if (other == null)
|
|
return false;
|
|
|
|
if (other.packets.Length != packets.Length)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
for (int i = 0; i != packets.Length; i++)
|
|
{
|
|
if (!other.packets[i].Equals(packets[i]))
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
int code = 0;
|
|
|
|
foreach (object o in packets)
|
|
{
|
|
code ^= o.GetHashCode();
|
|
}
|
|
|
|
return code;
|
|
}
|
|
}
|
|
}
|