private PgpSignatureGenerator InitSignature(Stream outputStream) { if (PrivateKey == null) { return(null); } var signatureGenerator = new PgpSignatureGenerator(PrivateKey.GetPublicKey().Algorithm, HashAlgorithm); signatureGenerator.InitSign(PgpSignature.BinaryDocument, PrivateKey.GetSecretKey().ExtractPrivateKey(_password.ToCharArray())); var userId = PrivateKey.GetPublicKey().GetUserIds().OfType <string>().FirstOrDefault(); var subpacketGenerator = new PgpSignatureSubpacketGenerator(); subpacketGenerator.SetSignerUserId(false, userId); signatureGenerator.SetHashedSubpackets(subpacketGenerator.Generate()); signatureGenerator.GenerateOnePassVersion(false).Encode(outputStream); return(signatureGenerator); }