78 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System.Collections;
 | |
| using System.IO;
 | |
| 
 | |
| namespace Org.BouncyCastle.Bcpg.OpenPgp
 | |
| {
 | |
| 	public abstract class PgpKeyRing
 | |
| 		: PgpObject
 | |
| 	{
 | |
| 		internal PgpKeyRing()
 | |
| 		{
 | |
| 		}
 | |
| 
 | |
| 		internal static TrustPacket ReadOptionalTrustPacket(
 | |
| 			BcpgInputStream bcpgInput)
 | |
| 		{
 | |
| 			return (bcpgInput.NextPacketTag() == PacketTag.Trust)
 | |
| 				?	(TrustPacket) bcpgInput.ReadPacket()
 | |
| 				:	null;
 | |
| 		}
 | |
| 
 | |
| 		internal static ArrayList ReadSignaturesAndTrust(
 | |
| 			BcpgInputStream	bcpgInput)
 | |
| 		{
 | |
| 			try
 | |
| 			{
 | |
| 				ArrayList sigList = new ArrayList();
 | |
| 
 | |
| 				while (bcpgInput.NextPacketTag() == PacketTag.Signature)
 | |
| 				{
 | |
| 					SignaturePacket signaturePacket = (SignaturePacket) bcpgInput.ReadPacket();
 | |
| 					TrustPacket trustPacket = ReadOptionalTrustPacket(bcpgInput);
 | |
| 
 | |
| 					sigList.Add(new PgpSignature(signaturePacket, trustPacket));
 | |
| 				}
 | |
| 
 | |
| 				return sigList;
 | |
| 			}
 | |
| 			catch (PgpException e)
 | |
| 			{
 | |
| 				throw new IOException("can't create signature object: " + e.Message, e);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		internal static void ReadUserIDs(
 | |
| 			BcpgInputStream	bcpgInput,
 | |
| 			out ArrayList	ids,
 | |
| 			out ArrayList	idTrusts,
 | |
| 			out ArrayList	idSigs)
 | |
| 		{
 | |
| 			ids = new ArrayList();
 | |
| 			idTrusts = new ArrayList();
 | |
| 			idSigs = new ArrayList();
 | |
| 
 | |
| 			while (bcpgInput.NextPacketTag() == PacketTag.UserId
 | |
| 				|| bcpgInput.NextPacketTag() == PacketTag.UserAttribute)
 | |
| 			{
 | |
| 				Packet obj = bcpgInput.ReadPacket();
 | |
| 				if (obj is UserIdPacket)
 | |
| 				{
 | |
| 					UserIdPacket id = (UserIdPacket)obj;
 | |
| 					ids.Add(id.GetId());
 | |
| 				}
 | |
| 				else
 | |
| 				{
 | |
| 					UserAttributePacket user = (UserAttributePacket) obj;
 | |
| 					ids.Add(new PgpUserAttributeSubpacketVector(user.GetSubpackets()));
 | |
| 				}
 | |
| 
 | |
| 				idTrusts.Add(
 | |
| 					ReadOptionalTrustPacket(bcpgInput));
 | |
| 
 | |
| 				idSigs.Add(
 | |
| 					ReadSignaturesAndTrust(bcpgInput));
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 |