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

KeyFlags

public class KeyFlags : SignatureSubpacket
using Org.BouncyCastle.Utilities; using System; namespace Org.BouncyCastle.Bcpg.Sig { public class KeyFlags : SignatureSubpacket { public const int CertifyOther = 1; public const int SignData = 2; public const int EncryptComms = 4; public const int EncryptStorage = 8; public const int Split = 16; public const int Authentication = 32; public const int Shared = 128; public int Flags => DataToFlags(base.Data); private static int DataToFlags(byte[] data) { int num = 0; int num2 = System.Math.Min(4, data.Length); for (int i = 0; i < num2; i++) { num |= data[i] << i * 8; } return num; } private static byte[] FlagsToData(int flags) { int num = (32 - Integers.NumberOfLeadingZeros(flags) + 7) / 8; byte[] array = new byte[num]; for (int i = 0; i < num; i++) { array[i] = (byte)(flags >> i * 8); } return array; } public KeyFlags(bool critical, bool isLongLength, byte[] data) : base(SignatureSubpacketTag.KeyFlags, critical, isLongLength, data) { } public KeyFlags(bool critical, int flags) : base(SignatureSubpacketTag.KeyFlags, critical, false, FlagsToData(flags)) { } } }