Beispiel #1
0
        void EncryptAndWriteInner(int off, int len)
        {
            if (recordType == SSL.HANDSHAKE)
            {
                countHandshake++;
                if (countHandshake == thresholdZeroAppData)
                {
                    int start = 0;
                    int end   = extra2.Length;
                    renc.GetMaxPlaintext(ref start, ref end);
                    int zoff = start;
                    int zlen = 0;
                    renc.Encrypt(SSL.APPLICATION_DATA, version,
                                 extra2, ref zoff, ref zlen);
                    sub.Write(extra2, zoff, zlen);
                }
            }
            else if (recordType == SSL.APPLICATION_DATA)
            {
                countAppData++;
                if (countAppData == thresholdZeroHandshake)
                {
                    int start = 0;
                    int end   = extra2.Length;
                    renc.GetMaxPlaintext(ref start, ref end);
                    int zoff = start;
                    int zlen = 0;
                    renc.Encrypt(SSL.HANDSHAKE, version,
                                 extra2, ref zoff, ref zlen);
                    sub.Write(extra2, zoff, zlen);
                }
            }

            renc.Encrypt(recordType, version, buffer, ref off, ref len);
            sub.Write(buffer, off, len);
        }