<PackageReference Include="BouncyCastle.Cryptography" Version="2.3.1" />

OnePassSignaturePacket

using System.IO; namespace Org.BouncyCastle.Bcpg { public class OnePassSignaturePacket : ContainedPacket { private int version; private int sigType; private HashAlgorithmTag hashAlgorithm; private PublicKeyAlgorithmTag keyAlgorithm; private long keyId; private int nested; public int SignatureType => sigType; public PublicKeyAlgorithmTag KeyAlgorithm => keyAlgorithm; public HashAlgorithmTag HashAlgorithm => hashAlgorithm; public long KeyId => keyId; internal OnePassSignaturePacket(BcpgInputStream bcpgIn) { version = bcpgIn.ReadByte(); sigType = bcpgIn.ReadByte(); hashAlgorithm = (HashAlgorithmTag)bcpgIn.ReadByte(); keyAlgorithm = (PublicKeyAlgorithmTag)bcpgIn.ReadByte(); keyId |= (long)bcpgIn.ReadByte() << 56; keyId |= (long)bcpgIn.ReadByte() << 48; keyId |= (long)bcpgIn.ReadByte() << 40; keyId |= (long)bcpgIn.ReadByte() << 32; keyId |= (long)bcpgIn.ReadByte() << 24; keyId |= (long)bcpgIn.ReadByte() << 16; keyId |= (long)bcpgIn.ReadByte() << 8; keyId |= (uint)bcpgIn.ReadByte(); nested = bcpgIn.ReadByte(); } public OnePassSignaturePacket(int sigType, HashAlgorithmTag hashAlgorithm, PublicKeyAlgorithmTag keyAlgorithm, long keyId, bool isNested) { version = 3; this.sigType = sigType; this.hashAlgorithm = hashAlgorithm; this.keyAlgorithm = keyAlgorithm; this.keyId = keyId; nested = ((!isNested) ? 1 : 0); } public override void Encode(BcpgOutputStream bcpgOut) { MemoryStream memoryStream = new MemoryStream(); using (BcpgOutputStream bcpgOutputStream = new BcpgOutputStream(memoryStream)) { bcpgOutputStream.Write((byte)version, (byte)sigType, (byte)hashAlgorithm, (byte)keyAlgorithm); bcpgOutputStream.WriteLong(keyId); bcpgOutputStream.WriteByte((byte)nested); } bcpgOut.WritePacket(PacketTag.OnePassSignature, memoryStream.ToArray()); } } }