using Org.BouncyCastle.Bcpg.Attr; namespace Org.BouncyCastle.Bcpg.OpenPgp { /// Container for a list of user attribute subpackets. 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; } } }