64 lines
1.7 KiB
C#
64 lines
1.7 KiB
C#
using System.Collections;
|
|
using System.IO;
|
|
using Org.BouncyCastle.Utilities;
|
|
|
|
namespace Org.BouncyCastle.Bcpg.OpenPgp;
|
|
|
|
public abstract class PgpKeyRing : PgpObject
|
|
{
|
|
internal PgpKeyRing()
|
|
{
|
|
}
|
|
|
|
internal static TrustPacket ReadOptionalTrustPacket(BcpgInputStream bcpgInput)
|
|
{
|
|
if (bcpgInput.NextPacketTag() != PacketTag.Trust)
|
|
{
|
|
return null;
|
|
}
|
|
return (TrustPacket)bcpgInput.ReadPacket();
|
|
}
|
|
|
|
internal static IList ReadSignaturesAndTrust(BcpgInputStream bcpgInput)
|
|
{
|
|
try
|
|
{
|
|
IList list = Platform.CreateArrayList();
|
|
while (bcpgInput.NextPacketTag() == PacketTag.Signature)
|
|
{
|
|
SignaturePacket sigPacket = (SignaturePacket)bcpgInput.ReadPacket();
|
|
TrustPacket trustPacket = ReadOptionalTrustPacket(bcpgInput);
|
|
list.Add(new PgpSignature(sigPacket, trustPacket));
|
|
}
|
|
return list;
|
|
}
|
|
catch (PgpException ex)
|
|
{
|
|
throw new IOException("can't create signature object: " + ex.Message, ex);
|
|
}
|
|
}
|
|
|
|
internal static void ReadUserIDs(BcpgInputStream bcpgInput, out IList ids, out IList idTrusts, out IList idSigs)
|
|
{
|
|
ids = Platform.CreateArrayList();
|
|
idTrusts = Platform.CreateArrayList();
|
|
idSigs = Platform.CreateArrayList();
|
|
while (bcpgInput.NextPacketTag() == PacketTag.UserId || bcpgInput.NextPacketTag() == PacketTag.UserAttribute)
|
|
{
|
|
Packet packet = bcpgInput.ReadPacket();
|
|
if (packet is UserIdPacket)
|
|
{
|
|
UserIdPacket userIdPacket = (UserIdPacket)packet;
|
|
ids.Add(userIdPacket.GetId());
|
|
}
|
|
else
|
|
{
|
|
UserAttributePacket userAttributePacket = (UserAttributePacket)packet;
|
|
ids.Add(new PgpUserAttributeSubpacketVector(userAttributePacket.GetSubpackets()));
|
|
}
|
|
idTrusts.Add(ReadOptionalTrustPacket(bcpgInput));
|
|
idSigs.Add(ReadSignaturesAndTrust(bcpgInput));
|
|
}
|
|
}
|
|
}
|