// Transport Security Layer (TLS)
// Copyright (c) 2003-2004 Carlos Guzman Alvarez
-
+// Copyright (C) 2006 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
this.Context.SessionId = this.sessionId;
this.Context.ServerRandom = this.random;
- this.Context.Cipher = this.cipherSuite;
+ this.Context.Negotiating.Cipher = this.cipherSuite;
this.Context.CompressionMethod = this.compressionMethod;
this.Context.ProtocolNegotiated = true;
DebugHelper.WriteLine("Server random", this.Context.ServerRandom);
// Compute ClientRandom + ServerRandom
- TlsStream random = new TlsStream();
- random.Write(this.Context.ClientRandom);
- random.Write(this.Context.ServerRandom);
- this.Context.RandomCS = random.ToArray();
+ int clen = this.Context.ClientRandom.Length;
+ int slen = this.Context.ServerRandom.Length;
+ int rlen = clen + slen;
+ byte[] cs = new byte[rlen];
+ Buffer.BlockCopy (this.Context.ClientRandom, 0, cs, 0, clen);
+ Buffer.BlockCopy (this.Context.ServerRandom, 0, cs, clen, slen);
+ this.Context.RandomCS = cs;
// Server Random + Client Random
- random.Reset();
- random.Write(this.Context.ServerRandom);
- random.Write(this.Context.ClientRandom);
-
- this.Context.RandomSC = random.ToArray();
- random.Reset();
+ byte[] sc = new byte[rlen];
+ Buffer.BlockCopy (this.Context.ServerRandom, 0, sc, 0, slen);
+ Buffer.BlockCopy (this.Context.ClientRandom, 0, sc, slen, clen);
+ this.Context.RandomSC = sc;
}
#endregion
// Read random - Unix time + Random bytes
this.random = this.ReadBytes(32);
-
+
// Read Session id
- int length = (int)ReadByte();
+ int length = (int) ReadByte ();
if (length > 0)
{
this.sessionId = this.ReadBytes(length);
+ ClientSessionCache.Add (this.Context.ClientSettings.TargetHost, this.sessionId);
+ this.Context.AbbreviatedHandshake = Compare (this.sessionId, this.Context.SessionId);
+ }
+ else
+ {
+ this.Context.AbbreviatedHandshake = false;
}
// Read cipher suite
#endregion
}
-}
\ No newline at end of file
+}