in net/JetBrains.DownloadPgpVerifier/src/PgpSignaturesVerifier.cs [100:127]
private static IEnumerable<PgpSignature> GetSignatures(Stream stream)
{
static IEnumerable<PgpSignature> ToEnumerable(PgpSignatureList list)
{
return Enumerable.Range(0, list.Count).Select(x => list[x]).ToList();
}
using var decodedStream = PgpUtilities.GetDecoderStream(stream);
var factory = new PgpObjectFactory(decodedStream);
for (PgpObject obj; (obj = factory.NextPgpObject()) != null;)
switch (obj)
{
case PgpCompressedData data:
using (var dataStream = data.GetDataStream())
{
var factory2 = new PgpObjectFactory(dataStream);
for (PgpObject obj2; (obj2 = factory2.NextPgpObject()) != null;)
if (obj2 is PgpSignatureList list)
return ToEnumerable(list);
}
break;
case PgpSignatureList list:
return ToEnumerable(list);
}
throw new Exception("No PGP signature was found");
}