public void GetBytes() { var request = new SftpRemoveRequest(_protocolVersion, _requestId, _filename, _encoding, null); var bytes = request.GetBytes(); var expectedBytesLength = 0; expectedBytesLength += 4; // Length expectedBytesLength += 1; // Type expectedBytesLength += 4; // RequestId expectedBytesLength += 4; // Filename length expectedBytesLength += _filenameBytes.Length; // Filename Assert.AreEqual(expectedBytesLength, bytes.Length); var sshDataStream = new SshDataStream(bytes); Assert.AreEqual((uint)bytes.Length - 4, sshDataStream.ReadUInt32()); Assert.AreEqual((byte)SftpMessageTypes.Remove, sshDataStream.ReadByte()); Assert.AreEqual(_requestId, sshDataStream.ReadUInt32()); Assert.AreEqual((uint)_filenameBytes.Length, sshDataStream.ReadUInt32()); var actualFilename = new byte[_filenameBytes.Length]; sshDataStream.Read(actualFilename, 0, actualFilename.Length); Assert.IsTrue(_filenameBytes.SequenceEqual(actualFilename)); Assert.IsTrue(sshDataStream.IsEndOfData); }
public void GetBytes() { var random = new Random(); var localChannelNumber = (uint)random.Next(0, int.MaxValue); var data = CryptoAbstraction.GenerateRandom(random.Next(10, 20)); var offset = random.Next(0, data.Length - 1); var size = random.Next(0, data.Length - offset); var target = new ChannelDataMessage(localChannelNumber, data, offset, size); var bytes = target.GetBytes(); var expectedBytesLength = 1; // Type expectedBytesLength += 4; // LocalChannelNumber expectedBytesLength += 4; // Data length expectedBytesLength += size; // Data Assert.AreEqual(expectedBytesLength, bytes.Length); var sshDataStream = new SshDataStream(bytes); Assert.AreEqual(ChannelDataMessage.MessageNumber, sshDataStream.ReadByte()); Assert.AreEqual(localChannelNumber, sshDataStream.ReadUInt32()); Assert.AreEqual((uint)size, sshDataStream.ReadUInt32()); var actualData = new byte[size]; sshDataStream.Read(actualData, 0, size); Assert.IsTrue(actualData.SequenceEqual(data.Take(offset, size))); Assert.IsTrue(sshDataStream.IsEndOfData); }
private static byte[] CreateSftpNameResponse(uint responseId, Encoding encoding, params string[] names) { var namesAndAttributes = new List <byte>(); foreach (var name in names) { var nameBytes = encoding.GetBytes(name); var attributesBytes = SftpFileAttributes.Empty.GetBytes(); namesAndAttributes.AddRange((((uint)nameBytes.Length).GetBytes())); // filename length namesAndAttributes.AddRange(nameBytes); // filename namesAndAttributes.AddRange(((uint)0).GetBytes()); // longname length namesAndAttributes.AddRange(attributesBytes); // attributes } var namesAndAttributesBytes = namesAndAttributes.ToArray(); var sshDataStream = new SshDataStream(4 + 1 + 4 + 4 + namesAndAttributesBytes.Length); sshDataStream.Write((uint)sshDataStream.Capacity - 4); sshDataStream.WriteByte((byte)SftpMessageTypes.Name); sshDataStream.Write(responseId); sshDataStream.Write((uint)names.Length); sshDataStream.Write(namesAndAttributesBytes, 0, namesAndAttributesBytes.Length); return(sshDataStream.ToArray()); }
/// <summary> /// Writes the current message to the specified <see cref="SshDataStream"/>. /// </summary> /// <param name="stream">The <see cref="SshDataStream"/> to write the message to.</param> protected override void WriteBytes(SshDataStream stream) { const int sizeOfDataLengthBytes = 4; var startPosition = stream.Position; // skip 4 bytes for the length of the SFTP message data stream.Seek(sizeOfDataLengthBytes, SeekOrigin.Current); // write the SFTP message data to the stream base.WriteBytes(stream); // save where we were positioned when we finished writing the SSH message data var endPosition = stream.Position; // determine the length of the SSH message data var dataLength = endPosition - startPosition - sizeOfDataLengthBytes; // write the length of the SFTP message where we were positioned before we started // writing the SFTP message data stream.Position = startPosition; stream.Write((uint)dataLength); // move back to we were positioned when we finished writing the SFTP message data stream.Position = endPosition; }
public void GetBytes() { var statusActionInvocations = new List <SftpStatusResponse>(); var nameActionInvocations = new List <SftpNameResponse>(); Action <SftpStatusResponse> statusAction = statusActionInvocations.Add; var request = new SftpRmDirRequest(_protocolVersion, _requestId, _path, _encoding, null); var bytes = request.GetBytes(); var expectedBytesLength = 0; expectedBytesLength += 4; // Length expectedBytesLength += 1; // Type expectedBytesLength += 4; // RequestId expectedBytesLength += 4; // Path length expectedBytesLength += _pathBytes.Length; // Path Assert.AreEqual(expectedBytesLength, bytes.Length); var sshDataStream = new SshDataStream(bytes); Assert.AreEqual((uint)bytes.Length - 4, sshDataStream.ReadUInt32()); Assert.AreEqual((byte)SftpMessageTypes.RmDir, sshDataStream.ReadByte()); Assert.AreEqual(_requestId, sshDataStream.ReadUInt32()); Assert.AreEqual((uint)_pathBytes.Length, sshDataStream.ReadUInt32()); var actualPath = new byte[_pathBytes.Length]; sshDataStream.Read(actualPath, 0, actualPath.Length); Assert.IsTrue(_pathBytes.SequenceEqual(actualPath)); Assert.IsTrue(sshDataStream.IsEndOfData); }
public void Load_ShouldThrowNotSupportedExceptionWhenChannelTypeIsNotSupported() { var localChannelNumber = (uint)_random.Next(0, int.MaxValue); var initialWindowSize = (uint)_random.Next(0, int.MaxValue); var maximumPacketSize = (uint)_random.Next(0, int.MaxValue); var channelName = "dunno_" + _random.Next().ToString(CultureInfo.InvariantCulture); var channelType = _ascii.GetBytes(channelName); var sshDataStream = new SshDataStream(1 + 4 + channelType.Length + 4 + 4 + 4); sshDataStream.WriteByte(ChannelOpenMessage.MessageNumber); sshDataStream.Write((uint)channelType.Length); sshDataStream.Write(channelType, 0, channelType.Length); sshDataStream.Write(localChannelNumber); sshDataStream.Write(initialWindowSize); sshDataStream.Write(maximumPacketSize); var bytes = sshDataStream.ToArray(); var target = new ChannelOpenMessage(); try { target.Load(bytes); Assert.Fail(); } catch (NotSupportedException ex) { Assert.IsNull(ex.InnerException); Assert.AreEqual(string.Format("Channel type '{0}' is not supported.", channelName), ex.Message); } }
internal static SftpFileAttributes FromBytes(byte[] buffer) { using (var stream = new SshDataStream(buffer)) { return(FromBytes(stream)); } }
public void GetBytes_TerminalModeValues_Null() { var target = new PseudoTerminalRequestInfo(_environmentVariable, _columns, _rows, _width, _height, null); var bytes = target.GetBytes(); var expectedBytesLength = 1; // WantReply expectedBytesLength += 4; // EnvironmentVariable length expectedBytesLength += _environmentVariableBytes.Length; // EnvironmentVariable expectedBytesLength += 4; // Columns expectedBytesLength += 4; // Rows expectedBytesLength += 4; // PixelWidth expectedBytesLength += 4; // PixelHeight expectedBytesLength += 4; // Length of "encoded terminal modes" Assert.AreEqual(expectedBytesLength, bytes.Length); var sshDataStream = new SshDataStream(bytes); Assert.AreEqual(1, sshDataStream.ReadByte()); // WantReply Assert.AreEqual(_environmentVariable, sshDataStream.ReadString(Encoding.UTF8)); Assert.AreEqual(_columns, sshDataStream.ReadUInt32()); Assert.AreEqual(_rows, sshDataStream.ReadUInt32()); Assert.AreEqual(_width, sshDataStream.ReadUInt32()); Assert.AreEqual(_height, sshDataStream.ReadUInt32()); Assert.AreEqual((uint)0, sshDataStream.ReadUInt32()); Assert.IsTrue(sshDataStream.IsEndOfData); }
public void Load() { var target = new SftpAttrsResponse(_protocolVersion); var attributes = CreateSftpFileAttributes(); var attributesBytes = attributes.GetBytes(); var sshDataStream = new SshDataStream(4 + 1 + 4 + attributesBytes.Length); sshDataStream.Position = 4; // skip 4 bytes for SSH packet length sshDataStream.WriteByte((byte)SftpMessageTypes.Attrs); sshDataStream.Write(_responseId); sshDataStream.Write(attributesBytes, 0, attributesBytes.Length); target.Load(sshDataStream.ToArray()); Assert.IsNotNull(target.Attributes); Assert.AreEqual(_protocolVersion, target.ProtocolVersion); Assert.AreEqual(_responseId, target.ResponseId); Assert.AreEqual(SftpMessageTypes.Attrs, target.SftpMessageType); // check attributes in detail Assert.AreEqual(attributes.GroupId, target.Attributes.GroupId); Assert.AreEqual(attributes.LastWriteTime, target.Attributes.LastWriteTime); Assert.AreEqual(attributes.LastWriteTime, target.Attributes.LastWriteTime); Assert.AreEqual(attributes.UserId, target.Attributes.UserId); }
public void GetBytes() { var request = new IgnoreMessage(_data); var bytes = request.GetBytes(); var expectedBytesLength = 0; expectedBytesLength += 1; // Type expectedBytesLength += 4; // Data length expectedBytesLength += _data.Length; // Data Assert.AreEqual(expectedBytesLength, bytes.Length); var sshDataStream = new SshDataStream(bytes); Assert.AreEqual(IgnoreMessage.MessageNumber, sshDataStream.ReadByte()); Assert.AreEqual((uint)_data.Length, sshDataStream.ReadUInt32()); var actualData = new byte[_data.Length]; sshDataStream.Read(actualData, 0, actualData.Length); Assert.IsTrue(_data.SequenceEqual(actualData)); Assert.IsTrue(sshDataStream.IsEndOfData); }
public void GetBytes() { var request = new SftpCloseRequest(_protocolVersion, _requestId, _handle, null); var bytes = request.GetBytes(); var expectedBytesLength = 0; #if TUNING expectedBytesLength += 4; // Length #endif expectedBytesLength += 1; // Type expectedBytesLength += 4; // RequestId expectedBytesLength += 4; // Handle length expectedBytesLength += _handle.Length; // Handle Assert.AreEqual(expectedBytesLength, bytes.Length); var sshDataStream = new SshDataStream(bytes); #if TUNING Assert.AreEqual((uint)bytes.Length - 4, sshDataStream.ReadUInt32()); #endif Assert.AreEqual((byte)SftpMessageTypes.Close, sshDataStream.ReadByte()); Assert.AreEqual(_requestId, sshDataStream.ReadUInt32()); Assert.AreEqual((uint)_handle.Length, sshDataStream.ReadUInt32()); var actualHandle = new byte[_handle.Length]; sshDataStream.Read(actualHandle, 0, actualHandle.Length); Assert.IsTrue(_handle.SequenceEqual(actualHandle)); Assert.IsTrue(sshDataStream.IsEndOfData); }
public void GetBytes() { var request = new SftpReadLinkRequest(_protocolVersion, _requestId, _path, _encoding, null, null); var bytes = request.GetBytes(); var expectedBytesLength = 0; expectedBytesLength += 4; // Length expectedBytesLength += 1; // Type expectedBytesLength += 4; // RequestId expectedBytesLength += 4; // Path length expectedBytesLength += _pathBytes.Length; // Path Assert.AreEqual(expectedBytesLength, bytes.Length); var sshDataStream = new SshDataStream(bytes); Assert.AreEqual((uint)bytes.Length - 4, sshDataStream.ReadUInt32()); Assert.AreEqual((byte)SftpMessageTypes.ReadLink, sshDataStream.ReadByte()); Assert.AreEqual(_requestId, sshDataStream.ReadUInt32()); Assert.AreEqual((uint)_pathBytes.Length, sshDataStream.ReadUInt32()); var actualPath = new byte[_pathBytes.Length]; sshDataStream.Read(actualPath, 0, actualPath.Length); Assert.IsTrue(_pathBytes.SequenceEqual(actualPath)); Assert.IsTrue(sshDataStream.IsEndOfData); }
public void GetBytes() { var request = new SftpReadRequest(_protocolVersion, _requestId, _handle, _offset, _length, null, null); var bytes = request.GetBytes(); var expectedBytesLength = 0; expectedBytesLength += 4; // Length expectedBytesLength += 1; // Type expectedBytesLength += 4; // RequestId expectedBytesLength += 4; // Handle length expectedBytesLength += _handle.Length; // Handle expectedBytesLength += 8; // Offset expectedBytesLength += 4; // Length Assert.AreEqual(expectedBytesLength, bytes.Length); var sshDataStream = new SshDataStream(bytes); Assert.AreEqual((uint)bytes.Length - 4, sshDataStream.ReadUInt32()); Assert.AreEqual((byte)SftpMessageTypes.Read, sshDataStream.ReadByte()); Assert.AreEqual(_requestId, sshDataStream.ReadUInt32()); Assert.AreEqual((uint)_handle.Length, sshDataStream.ReadUInt32()); var actualHandle = new byte[_handle.Length]; sshDataStream.Read(actualHandle, 0, actualHandle.Length); Assert.IsTrue(_handle.SequenceEqual(actualHandle)); Assert.AreEqual(_offset, sshDataStream.ReadUInt64()); Assert.AreEqual(_length, sshDataStream.ReadUInt32()); Assert.IsTrue(sshDataStream.IsEndOfData); }
internal static SftpFileAttributes FromBytes(SshDataStream stream) { var flag = stream.ReadUInt32(); long size = -1; var userId = -1; var groupId = -1; uint permissions = 0; DateTime accessTime; DateTime modifyTime; IDictionary <string, string> extensions = null; if ((flag & 0x00000001) == 0x00000001) // SSH_FILEXFER_ATTR_SIZE { size = (long)stream.ReadUInt64(); } if ((flag & 0x00000002) == 0x00000002) // SSH_FILEXFER_ATTR_UIDGID { userId = (int)stream.ReadUInt32(); groupId = (int)stream.ReadUInt32(); } if ((flag & 0x00000004) == 0x00000004) // SSH_FILEXFER_ATTR_PERMISSIONS { permissions = stream.ReadUInt32(); } if ((flag & 0x00000008) == 0x00000008) // SSH_FILEXFER_ATTR_ACMODTIME { // The incoming times are "Unix times", so they're already in UTC. We need to preserve that // to avoid losing information in a local time conversion during the "fall back" hour in DST. var time = stream.ReadUInt32(); accessTime = DateTime.FromFileTimeUtc((time + 11644473600) * 10000000); time = stream.ReadUInt32(); modifyTime = DateTime.FromFileTimeUtc((time + 11644473600) * 10000000); } else { accessTime = DateTime.SpecifyKind(DateTime.MinValue, DateTimeKind.Utc); modifyTime = DateTime.SpecifyKind(DateTime.MinValue, DateTimeKind.Utc); } if ((flag & 0x80000000) == 0x80000000) // SSH_FILEXFER_ATTR_EXTENDED { var extendedCount = (int)stream.ReadUInt32(); extensions = new Dictionary <string, string>(extendedCount); for (var i = 0; i < extendedCount; i++) { var extensionName = stream.ReadString(SshData.Utf8); var extensionData = stream.ReadString(SshData.Utf8); extensions.Add(extensionName, extensionData); } } return(new SftpFileAttributes(accessTime, modifyTime, size, userId, groupId, permissions, extensions)); }
public byte[] Build() { var sshDataStream = new SshDataStream(0); sshDataStream.WriteByte(KeyExchangeDhGroupExchangeGroup.MessageNumber); sshDataStream.Write(_safePrime); sshDataStream.Write(_subGroup); return(sshDataStream.ToArray()); }
public void GetReply_StatVfsReplyInfo() { var bsize = (ulong)_random.Next(0, int.MaxValue); var frsize = (ulong)_random.Next(0, int.MaxValue); var blocks = (ulong)_random.Next(0, int.MaxValue); var bfree = (ulong)_random.Next(0, int.MaxValue); var bavail = (ulong)_random.Next(0, int.MaxValue); var files = (ulong)_random.Next(0, int.MaxValue); var ffree = (ulong)_random.Next(0, int.MaxValue); var favail = (ulong)_random.Next(0, int.MaxValue); var sid = (ulong)_random.Next(0, int.MaxValue); var namemax = (ulong)_random.Next(0, int.MaxValue); var sshDataStream = new SshDataStream(4 + 1 + 4 + 88); sshDataStream.Position = 4; // skip 4 bytes for SSH packet length sshDataStream.WriteByte((byte)SftpMessageTypes.Attrs); sshDataStream.Write(_responseId); sshDataStream.Write(bsize); sshDataStream.Write(frsize); sshDataStream.Write(blocks); sshDataStream.Write(bfree); sshDataStream.Write(bavail); sshDataStream.Write(files); sshDataStream.Write(ffree); sshDataStream.Write(favail); sshDataStream.Write(sid); sshDataStream.Write((ulong)0x2); sshDataStream.Write(namemax); var sshData = sshDataStream.ToArray(); var target = new SftpExtendedReplyResponse(_protocolVersion); target.Load(sshData, 5, sshData.Length - 5); var reply = target.GetReply <StatVfsReplyInfo>(); Assert.IsNotNull(reply); var information = reply.Information; Assert.IsNotNull(information); Assert.AreEqual(bavail, information.AvailableBlocks); Assert.AreEqual(favail, information.AvailableNodes); Assert.AreEqual(frsize, information.BlockSize); Assert.AreEqual(bsize, information.FileSystemBlockSize); Assert.AreEqual(bfree, information.FreeBlocks); Assert.AreEqual(ffree, information.FreeNodes); Assert.IsFalse(information.IsReadOnly); Assert.AreEqual(namemax, information.MaxNameLenght); Assert.AreEqual(sid, information.Sid); Assert.IsFalse(information.SupportsSetUid); Assert.AreEqual(blocks, information.TotalBlocks); Assert.AreEqual(files, information.TotalNodes); }
private byte[] BuildExtensions() { var sshDataStream = new SshDataStream(0); foreach (var extensionPair in _extensions) { sshDataStream.Write(extensionPair.Key, Encoding.ASCII); sshDataStream.Write(extensionPair.Value, Encoding.ASCII); } return(sshDataStream.ToArray()); }
private static byte[] CreateSftpDataResponse(uint responseId, byte[] data) { var sshDataStream = new SshDataStream(4 + 1 + 4 + 4 + data.Length + 1); sshDataStream.Write((uint)sshDataStream.Capacity - 4); sshDataStream.WriteByte((byte)SftpMessageTypes.Data); sshDataStream.Write(responseId); sshDataStream.Write((uint)data.Length); sshDataStream.Write(data, 0, data.Length); sshDataStream.WriteByte(1); // EOF return(sshDataStream.ToArray()); }
public byte[] Build() { var extensions = BuildExtensions(); var sshDataStream = new SshDataStream(4 + 1 + 4 + extensions.Length); sshDataStream.Write((uint)sshDataStream.Capacity - 4); sshDataStream.WriteByte((byte)SftpMessageTypes.Version); sshDataStream.Write(_version); sshDataStream.Write(extensions, 0, extensions.Length); return(sshDataStream.ToArray()); }
public byte[] Build() { var serviceName = _serviceName.ToArray(); var sshDataStream = new SshDataStream(4 + 1 + 1 + 4 + serviceName.Length); sshDataStream.Write((uint)(sshDataStream.Capacity - 4)); // packet length sshDataStream.WriteByte(0); // padding length sshDataStream.WriteByte(ServiceAcceptMessage.MessageNumber); sshDataStream.WriteBinary(serviceName); return(sshDataStream.ToArray()); }
/// <summary> /// Writes the message to the specified <see cref="SshDataStream"/>. /// </summary> protected override void WriteBytes(SshDataStream stream) { var messageAttribute = GetType().GetCustomAttributes <MessageAttribute>(true).FirstOrDefault(); if (messageAttribute == null) { throw new SshException(string.Format(CultureInfo.CurrentCulture, "Type '{0}' is not a valid message type.", GetType().AssemblyQualifiedName)); } stream.WriteByte(messageAttribute.Number); base.WriteBytes(stream); }
public byte[] Build() { var sshDataStream = new SshDataStream(0); sshDataStream.WriteByte(KeyExchangeDhGroupExchangeReply.MessageNumber); sshDataStream.Write((uint)(4 + _hostKeyAlgorithm.Length + _hostKeys.Length)); sshDataStream.Write((uint)_hostKeyAlgorithm.Length); sshDataStream.Write(_hostKeyAlgorithm, 0, _hostKeyAlgorithm.Length); sshDataStream.Write(_hostKeys, 0, _hostKeys.Length); sshDataStream.Write(_f); sshDataStream.WriteBinary(_signature); return(sshDataStream.ToArray()); }
internal static SftpFileAttributes FromBytes(SshDataStream stream) { var flag = stream.ReadUInt32(); long size = -1; var userId = -1; var groupId = -1; uint permissions = 0; var accessTime = DateTime.MinValue; var modifyTime = DateTime.MinValue; IDictionary <string, string> extensions = null; if ((flag & 0x00000001) == 0x00000001) // SSH_FILEXFER_ATTR_SIZE { size = (long)stream.ReadUInt64(); } if ((flag & 0x00000002) == 0x00000002) // SSH_FILEXFER_ATTR_UIDGID { userId = (int)stream.ReadUInt32(); groupId = (int)stream.ReadUInt32(); } if ((flag & 0x00000004) == 0x00000004) // SSH_FILEXFER_ATTR_PERMISSIONS { permissions = stream.ReadUInt32(); } if ((flag & 0x00000008) == 0x00000008) // SSH_FILEXFER_ATTR_ACMODTIME { var time = stream.ReadUInt32(); accessTime = DateTime.FromFileTime((time + 11644473600) * 10000000); time = stream.ReadUInt32(); modifyTime = DateTime.FromFileTime((time + 11644473600) * 10000000); } if ((flag & 0x80000000) == 0x80000000) // SSH_FILEXFER_ATTR_EXTENDED { var extendedCount = (int)stream.ReadUInt32(); extensions = new Dictionary <string, string>(extendedCount); for (var i = 0; i < extendedCount; i++) { var extensionName = stream.ReadString(SshData.Utf8); var extensionData = stream.ReadString(SshData.Utf8); extensions.Add(extensionName, extensionData); } } return(new SftpFileAttributes(accessTime, modifyTime, size, userId, groupId, permissions, extensions)); }
internal void SaveData(SshDataStream stream) { stream.Write(FileSystemBlockSize); stream.Write(BlockSize); stream.Write(TotalBlocks); stream.Write(FreeBlocks); stream.Write(AvailableBlocks); stream.Write(TotalNodes); stream.Write(FreeNodes); stream.Write(AvailableNodes); stream.Write(Sid); stream.Write(_flag); stream.Write(MaxNameLenght); }
public KeyExchangeDhGroupExchangeReplyBuilder WithHostKey(string hostKeyAlgorithm, params BigInteger[] hostKeys) { _hostKeyAlgorithm = Encoding.UTF8.GetBytes(hostKeyAlgorithm); var sshDataStream = new SshDataStream(0); foreach (var hostKey in hostKeys) { sshDataStream.Write(hostKey); } _hostKeys = sshDataStream.ToArray(); return(this); }
public void GetBytes() { var localChannelNumber = (uint)_random.Next(0, int.MaxValue); var initialWindowSize = (uint)_random.Next(0, int.MaxValue); var maximumPacketSize = (uint)_random.Next(0, int.MaxValue); var info = new DirectTcpipChannelInfo("host", 22, "originator", 25); var infoBytes = info.GetBytes(); var target = new ChannelOpenMessage(localChannelNumber, initialWindowSize, maximumPacketSize, info); var bytes = target.GetBytes(); var expectedBytesLength = 1; // Type expectedBytesLength += 4; // ChannelType length expectedBytesLength += target.ChannelType.Length; // ChannelType expectedBytesLength += 4; // LocalChannelNumber expectedBytesLength += 4; // InitialWindowSize expectedBytesLength += 4; // MaximumPacketSize expectedBytesLength += infoBytes.Length; // Info Assert.AreEqual(expectedBytesLength, bytes.Length); var sshDataStream = new SshDataStream(bytes); Assert.AreEqual(ChannelOpenMessage.MessageNumber, sshDataStream.ReadByte()); var actualChannelTypeLength = sshDataStream.ReadUInt32(); Assert.AreEqual((uint)target.ChannelType.Length, actualChannelTypeLength); #if TUNING var actualChannelType = new byte[actualChannelTypeLength]; sshDataStream.Read(actualChannelType, 0, (int)actualChannelTypeLength); Assert.IsTrue(target.ChannelType.SequenceEqual(actualChannelType)); #else var actualChannelType = new byte[actualChannelTypeLength]; sshDataStream.Read(actualChannelType, 0, (int)actualChannelTypeLength); Assert.AreEqual(target.ChannelType, SshData.Ascii.GetString(actualChannelType)); #endif Assert.AreEqual(localChannelNumber, sshDataStream.ReadUInt32()); Assert.AreEqual(initialWindowSize, sshDataStream.ReadUInt32()); Assert.AreEqual(maximumPacketSize, sshDataStream.ReadUInt32()); var actualInfo = new byte[infoBytes.Length]; sshDataStream.Read(actualInfo, 0, actualInfo.Length); Assert.IsTrue(infoBytes.SequenceEqual(actualInfo)); Assert.IsTrue(sshDataStream.IsEndOfData); }
public void Load() { var target = new SftpExtendedReplyResponse(_protocolVersion); var sshDataStream = new SshDataStream(4); sshDataStream.Write(_responseId); target.Load(sshDataStream.ToArray()); Assert.AreEqual(_protocolVersion, target.ProtocolVersion); Assert.AreEqual(_responseId, target.ResponseId); Assert.AreEqual(SftpMessageTypes.ExtendedReply, target.SftpMessageType); }
public void GetBytes() { var request = new HardLinkRequest(_protocolVersion, _requestId, _oldPath, _newPath, null); var bytes = request.GetBytes(); var expectedBytesLength = 0; #if TUNING expectedBytesLength += 4; // Length #endif expectedBytesLength += 1; // Type expectedBytesLength += 4; // RequestId expectedBytesLength += 4; // Name length expectedBytesLength += _nameBytes.Length; // Name expectedBytesLength += 4; // OldPath length expectedBytesLength += _oldPathBytes.Length; // OldPath expectedBytesLength += 4; // NewPath length expectedBytesLength += _newPathBytes.Length; // NewPath Assert.AreEqual(expectedBytesLength, bytes.Length); var sshDataStream = new SshDataStream(bytes); #if TUNING Assert.AreEqual((uint)bytes.Length - 4, sshDataStream.ReadUInt32()); #endif Assert.AreEqual((byte)SftpMessageTypes.Extended, sshDataStream.ReadByte()); Assert.AreEqual(_requestId, sshDataStream.ReadUInt32()); Assert.AreEqual((uint)_nameBytes.Length, sshDataStream.ReadUInt32()); var actualNameBytes = new byte[_nameBytes.Length]; sshDataStream.Read(actualNameBytes, 0, actualNameBytes.Length); Assert.IsTrue(_nameBytes.SequenceEqual(actualNameBytes)); Assert.AreEqual((uint)_oldPathBytes.Length, sshDataStream.ReadUInt32()); var actualOldPath = new byte[_oldPathBytes.Length]; sshDataStream.Read(actualOldPath, 0, actualOldPath.Length); Assert.IsTrue(_oldPathBytes.SequenceEqual(actualOldPath)); Assert.AreEqual((uint)_newPathBytes.Length, sshDataStream.ReadUInt32()); var actualNewPath = new byte[_newPathBytes.Length]; sshDataStream.Read(actualNewPath, 0, actualNewPath.Length); Assert.IsTrue(_newPathBytes.SequenceEqual(actualNewPath)); Assert.IsTrue(sshDataStream.IsEndOfData); }
public override void LoadData(SshDataStream stream) { Information = new SftpFileSytemInformation(stream.ReadUInt64(), // FileSystemBlockSize stream.ReadUInt64(), // BlockSize stream.ReadUInt64(), // TotalBlocks stream.ReadUInt64(), // FreeBlocks stream.ReadUInt64(), // AvailableBlocks stream.ReadUInt64(), // TotalNodes stream.ReadUInt64(), // FreeNodes stream.ReadUInt64(), // AvailableNodes stream.ReadUInt64(), // Sid stream.ReadUInt64(), // Flags stream.ReadUInt64() // MaxNameLenght ); }
public void Load() { var target = new SftpExtendedReplyResponse(_protocolVersion); var sshDataStream = new SshDataStream(4 + 1 + 4); sshDataStream.Position = 4; // skip 4 bytes for SSH packet length sshDataStream.WriteByte((byte)SftpMessageTypes.ExtendedReply); sshDataStream.Write(_responseId); target.Load(sshDataStream.ToArray()); Assert.AreEqual(_protocolVersion, target.ProtocolVersion); Assert.AreEqual(_responseId, target.ResponseId); Assert.AreEqual(SftpMessageTypes.ExtendedReply, target.SftpMessageType); }