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

SignatureSubpacket

public class SignatureSubpacket
Basic type for a PGP Signature subpacket.
using Org.BouncyCastle.Utilities; using System.IO; namespace Org.BouncyCastle.Bcpg { public class SignatureSubpacket { private readonly SignatureSubpacketTag m_type; private readonly bool m_critical; private readonly bool m_longLength; private readonly byte[] m_data; internal byte[] Data => m_data; public SignatureSubpacketTag SubpacketType => m_type; protected internal SignatureSubpacket(SignatureSubpacketTag type, bool critical, bool isLongLength, byte[] data) { m_type = type; m_critical = critical; m_longLength = isLongLength; m_data = data; } public bool IsCritical() { return m_critical; } public bool IsLongLength() { return m_longLength; } public byte[] GetData() { return Arrays.Clone(m_data); } public void Encode(Stream os) { StreamUtilities.WriteNewPacketLength(os, 1 + m_data.Length, m_longLength); byte b = (byte)m_type; if (m_critical) b = (byte)(b | 128); os.WriteByte(b); os.Write(m_data, 0, m_data.Length); } public override int GetHashCode() { return (m_critical ? 1 : 0) + 7 * (int)m_type + 49 * Arrays.GetHashCode(m_data); } public override bool Equals(object obj) { SignatureSubpacket signatureSubpacket = obj as SignatureSubpacket; if (signatureSubpacket != null && m_type == signatureSubpacket.m_type && m_critical == signatureSubpacket.m_critical) return Arrays.AreEqual(m_data, signatureSubpacket.m_data); return false; } } }