<PackageReference Include="BouncyCastle.Cryptography" Version="2.7.0-beta.98" />

PgpUserAttributeSubpacketVector

Container for a list of user attribute subpackets.
using Org.BouncyCastle.Bcpg.Attr; using Org.BouncyCastle.Utilities; using System; namespace Org.BouncyCastle.Bcpg.OpenPgp { public class PgpUserAttributeSubpacketVector : IUserDataPacket { private readonly UserAttributeSubpacket[] m_packets; public static PgpUserAttributeSubpacketVector FromSubpackets(UserAttributeSubpacket[] packets) { return new PgpUserAttributeSubpacketVector(packets ?? Array.Empty<UserAttributeSubpacket>()); } internal PgpUserAttributeSubpacketVector(UserAttributeSubpacket[] packets) { m_packets = packets; } public UserAttributeSubpacket GetSubpacket(UserAttributeSubpacketTag type) { for (int i = 0; i != m_packets.Length; i++) { if (m_packets[i].SubpacketType == type) return m_packets[i]; } return null; } public ImageAttrib GetImageAttribute() { UserAttributeSubpacket subpacket = GetSubpacket(UserAttributeSubpacketTag.ImageAttribute); if (subpacket != null) return (ImageAttrib)subpacket; return null; } internal UserAttributeSubpacket[] ToSubpacketArray() { return m_packets; } public override bool Equals(object obj) { if (obj == this) return true; PgpUserAttributeSubpacketVector pgpUserAttributeSubpacketVector = obj as PgpUserAttributeSubpacketVector; if (pgpUserAttributeSubpacketVector == null) return false; if (m_packets.Length != pgpUserAttributeSubpacketVector.m_packets.Length) return false; for (int i = 0; i != m_packets.Length; i++) { if (!m_packets[i].Equals(pgpUserAttributeSubpacketVector.m_packets[i])) return false; } return true; } public override int GetHashCode() { object[] packets = m_packets; return Arrays.GetHashCode(packets); } } }