コード例 #1
0
ファイル: AgentForward.cs プロジェクト: PavelTorgashov/nfx
 //writer util
 private SSH2DataWriter OpenWriter(AgentForwadPacketType pt) {
     SSH2DataWriter wr = new SSH2DataWriter();
     wr.WriteInt32(0); //length field
     wr.WriteByte((byte)pt);
     return wr;
 }
コード例 #2
0
ファイル: SSH2Connection.cs プロジェクト: PavelTorgashov/nfx
        private byte[] DeriveKey(BigInteger key, byte[] hash, char ch, int length) {
            byte[] result = new byte[length];

            SSH2DataWriter wr = new SSH2DataWriter();
            wr.WriteBigInteger(key);
            wr.Write(hash);
            wr.WriteByte((byte)ch);
            wr.Write(_sessionID);
            byte[] h1 = new SHA1CryptoServiceProvider().ComputeHash(wr.ToByteArray());
            if (h1.Length >= length) {
                Array.Copy(h1, 0, result, 0, length);
                return result;
            }
            else {
                wr = new SSH2DataWriter();
                wr.WriteBigInteger(key);
                wr.Write(_sessionID);
                wr.Write(h1);
                byte[] h2 = new SHA1CryptoServiceProvider().ComputeHash(wr.ToByteArray());
                if (h1.Length + h2.Length >= length) {
                    Array.Copy(h1, 0, result, 0, h1.Length);
                    Array.Copy(h2, 0, result, h1.Length, length - h1.Length);
                    return result;
                }
                else
                    throw new SSHException("necessary key length is too big"); //long key is not supported
            }
        }