SharpCifs.Smb.SmbComNegotiateResponse.ReadBytesWireFormat C# (CSharp) Method

ReadBytesWireFormat() private method

private ReadBytesWireFormat ( byte buffer, int bufferIndex ) : int
buffer byte
bufferIndex int
return int
		internal override int ReadBytesWireFormat(byte[] buffer, int bufferIndex)
		{
			int start = bufferIndex;
			if ((Server.Capabilities & SmbConstants.CapExtendedSecurity) == 0)
			{
				Server.EncryptionKey = new byte[Server.EncryptionKeyLength];
				Array.Copy(buffer, bufferIndex, Server.EncryptionKey, 0, Server.EncryptionKeyLength
					);
				bufferIndex += Server.EncryptionKeyLength;
				if (ByteCount > Server.EncryptionKeyLength)
				{
					int len = 0;
					// TODO: we can use new string routine here
					try
					{
                        if ((Flags2 & SmbConstants.Flags2Unicode) == SmbConstants.Flags2Unicode)
						{
							while (buffer[bufferIndex + len] != unchecked(unchecked(0x00)) || buffer
								[bufferIndex + len + 1] != unchecked(unchecked(0x00)))
							{
								len += 2;
								if (len > 256)
								{
									throw new RuntimeException("zero termination not found");
								}
							}
							Server.OemDomainName = Runtime.GetStringForBytes(buffer, bufferIndex, len
                                , SmbConstants.UniEncoding);
						}
						else
						{
							while (buffer[bufferIndex + len] != unchecked(unchecked(0x00)))
							{
								len++;
								if (len > 256)
								{
									throw new RuntimeException("zero termination not found");
								}
							}
							Server.OemDomainName = Runtime.GetStringForBytes(buffer, bufferIndex, len
                                , SmbConstants.OemEncoding);
						}
					}
					catch (UnsupportedEncodingException uee)
					{
						if (Log.Level > 1)
						{
							Runtime.PrintStackTrace(uee, Log);
						}
					}
					bufferIndex += len;
				}
				else
				{
				    Server.OemDomainName = "";
				}
			}
			else
			{
				Server.Guid = new byte[16];
				Array.Copy(buffer, bufferIndex, Server.Guid, 0, 16);
				Server.OemDomainName = "";
			}
			// ignore SPNEGO token for now ...
			return bufferIndex - start;
		}