Exemple #1
0
        /// <summary>
        /// Static function that makes parsing packets easy. Just give
        /// a byte representation of a set of OpenPGP packets as
        /// parameter, and the function returns an array of packets
        /// that are the parsed OpenPGP packets.
        /// </summary>
        /// <param name="bBinaryData">A byte array containing a set
        /// of OpenPGP packets</param>
        /// <returns>Returns an array of packets</returns>
        /// <remarks>No remarks</remarks>
        public static Packet[] ParsePackets(byte[] bBinaryData)
        {
            ArrayList alPackets = new ArrayList(100);

            byte[] bTmpData = new byte[bBinaryData.Length];
            Array.Copy(bBinaryData, bTmpData, bBinaryData.Length);

            long iCurrentIndex = 0;

            while (iCurrentIndex < bBinaryData.Length)
            {
                Packet pTmpPacket     = new Packet();
                Packet pCurrentPacket = pTmpPacket.ParsePacket(bTmpData);

                if (pCurrentPacket != null)
                {
                    iCurrentIndex += pCurrentPacket.Length;
                    if (pCurrentPacket.Content != ContentTypes.Marker)
                    {
                        alPackets.Add(pCurrentPacket);
                    }

                    bTmpData = new byte[bTmpData.Length - pCurrentPacket.Length];
                    Array.Copy(bBinaryData, (int)iCurrentIndex, bTmpData, 0, bBinaryData.Length - (int)iCurrentIndex);
                }
                //MessageBox.Show("Parsed a " + pCurrentPacket.Content.ToString() + "Packet. Current Index: " + iCurrentIndex + "/" + bBinaryData.Length);
            }

            Packet[]    pReturnPackets = new Packet[alPackets.Count];
            IEnumerator iePacketEnum   = alPackets.GetEnumerator();
            int         iCount         = 0;

            while (iePacketEnum.MoveNext())
            {
                if (iePacketEnum.Current is Packet)
                {
                    pReturnPackets[iCount++] = (Packet)iePacketEnum.Current;
                }
            }

            return(pReturnPackets);
        }
Exemple #2
0
        /// <summary>
        /// Static function that makes parsing packets easy. Just give
        /// a byte representation of a set of OpenPGP packets as
        /// parameter, and the function returns an array of packets
        /// that are the parsed OpenPGP packets.
        /// </summary>
        /// <param name="bBinaryData">A byte array containing a set
        /// of OpenPGP packets</param>
        /// <returns>Returns an array of packets</returns>
        /// <remarks>No remarks</remarks>
        public static Packet[] ParsePackets(byte[] bBinaryData)
        {
            ArrayList alPackets	= new ArrayList(100);
            byte[] bTmpData = new byte[bBinaryData.Length];
            Array.Copy(bBinaryData, bTmpData, bBinaryData.Length);

            long iCurrentIndex = 0;

            while (iCurrentIndex < bBinaryData.Length) {
                Packet pTmpPacket = new Packet();
                Packet pCurrentPacket = pTmpPacket.ParsePacket(bTmpData);

                if (pCurrentPacket != null) {
                    iCurrentIndex += pCurrentPacket.Length;
                    if (pCurrentPacket.Content != ContentTypes.Marker) {
                        alPackets.Add(pCurrentPacket);
                    }

                    bTmpData = new byte[bTmpData.Length - pCurrentPacket.Length];
                    Array.Copy(bBinaryData, (int)iCurrentIndex, bTmpData, 0, bBinaryData.Length - (int)iCurrentIndex);
                }
                //MessageBox.Show("Parsed a " + pCurrentPacket.Content.ToString() + "Packet. Current Index: " + iCurrentIndex + "/" + bBinaryData.Length);
            }

            Packet[] pReturnPackets = new Packet[alPackets.Count];
            IEnumerator iePacketEnum = alPackets.GetEnumerator();
            int iCount = 0;
            while (iePacketEnum.MoveNext()) {
                if (iePacketEnum.Current is Packet) {
                    pReturnPackets[iCount++] = (Packet)iePacketEnum.Current;
                }
            }

            return pReturnPackets;
        }