private static IEnumerable GetSignatures()

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");
    }