Encryption and other enhancements in Rebex ZIP
We added all the important features that didn't make it into the
first release of Rebex ZIP: AES encryption, stream-based access to
compressed files, asynchronous methods, and
more. Check out the list below for details. On top of that, a new explorer-like sample was added.
FIPS 140-2 mode in FTP/SSL
When using Rebex FTP on a machine
where only
certified FIPS 140-2 algorithms are allowed, a FIPS 140-2 mode is
enabled and non-compliant algorithms are switched off. This mode can
also be enabled manually by referencing Rebex.Security.dll and setting
the Rebex.Security.Cryptography.CryptoHelper.UseFipsAlgorithmsOnly
property to true. This was already available in
Rebex SFTP before.
New stream-based access to remote files in SFTP
While there is nothing wrong with PutFile and GetFile
methods, sometimes a stream-based access is required. We now added a new
GetStream method that returns a stream representing a remote file - and
all the stream features are supported, including seeking and setting
file length. This makes it possible to (for example) use Rebex SFTP with
Rebex ZIP to access a remote ZIP file and extract selected files from
it without having to download the whole ZIP file.
Complete list of changes:
- FTP/SSL: Added FIPS 140-2 compliant
mode that is automatically enabled on systems where only compliant
algorithms are allowed.
- FTP:
Ftp class inherits from NetworkSession base class that implements some
common properties.
- FTP: Added a workaround for FTP servers
with broken MLST output.
- FTP: SITE command is no longer used to
detect MS IIS FTP 7.x because it caused problems to some firewalls.
- FTP:
FtpList.GetEnumerator is now an implementation of
IEnumerable<FtpItem>.
- FTP: Better error handling in
GetFiles/PutFiles methods.
- SFTP:
Added Sftp.GetStream method that
makes it possible to open a readable/writable/seekable stream of a
remote file.
- SFTP: Added
ProtocolVersion property to Sftp class.
- SFTP:
Added SftpOption.UseReadWriteModeForDownloads option.
- SFTP: Sftp class inherits from
NetworkSession base class that implements some common properties.
- SFTP:
SftpItemCollection.GetEnumerator is now an implementation of
IEnumerable<SftpItem>.
- SFTP: Fixed a DateTime range check
in SftpAttributes.Modified and .Created which was performed before the
conversion to UTC.
- SFTP: Better error handling in
GetFiles/PutFiles methods.
- S/MIME: Added support for AES ecnryption
(128, 192 and 256bit).
- MIME: A more descriptive
exception is thrown when attempting to save a mail message into a
directory path instead of file path.
- MIME: Changed routine for
fixing invalid filenames, it no longer changes the '%' character.
- MIME:
Added a MimeOptions.DisableSinglePartHtmlWorkaround option to disable
single-part HTML workaround in MailMessage.
- MIME: Attachment,
view and resource collections' GetEnumerator is now an implementation of
IEnumerable<T>.
- IMAP:
ImapMessageCollection implements IEnumerable<ImapMessageInfo>.
- IMAP: Imap class inherits
from NetworkSession base class that implements some common properties.
- SMTP: Smtp class inherits from
NetworkSession base class that implements some common properties.
- POP3:
Pop3 class inherits from NetworkSession base class that implements some
common properties.
- POP3: Added a workaround for an old version
of Lotus Domino that advertises APOP support but don't actually support
it.
- POP3: Pop3MessageCollection implements
IEnumerable<Pop3MessageInfo>.
- SSH
Shell: Ssh class inherits from NetworkSession base class that
implements some common properties.
- Terminal: Added new
SendToServer method overload to TerminalControl and VirtualTerminal that
makes it possible to easily simulate function keys.
- Terminal:
New BreakSeqeuence option added to TerminalOptions.
- SSH
Core: In FIPS-only mode, a CryptoAPI implementation of AES is used if
available.
- SSH Core: Added support for aes*-ctr and 3des-ctr
ciphers.
- SSH Core: SshSession class inherits from NetworkSession
base class that implements some common properties.
- ZIP:
Added a new overload for Extract, Add and Delete methods that accepts a
list of files.
- ZIP: Added ZipItem.Open() method that makes it
possible to open a readable stream of a compressed file.
- ZIP:
Added a new Rebex.IO.Compression.Streams namespace with low-level
compression/decompression classes (Deflate, Enhanced Deflate, ZLIB).
- ZIP:
Better error handling in AddFiles/ExtractFiles/ExtractAll methods.
- ZIP:
Fixed a bug in handling the Retry action if an error occured while
retrieving hierarchy.
- ZIP: Added support for password-based
encryption using 256bit, 192bit, 128bit AES and ZIP 2.0.
- ZIP:
Added ShrinkProgress event to make it possible to display shrink
progress.
- ZIP: Asynchronous methods added to ZipArchive class:
AddAsync, ExtractAsync, MoveAsync, DeleteAsync, SaveAsync.
- ZIP:
Added support for persisting and restoring last access and creation
dates.
- ZIP: Added a DeleteUnfinishedFileOnExtractError option to
specify whether to delete or keep a file on extract error.
Some of you already noticed Rebex DLLs in Visual Studio 2010's application folders. It's now official - we are proud to anounce that Microsoft is using Rebex FTP/SSL and SFTP in Microsoft Visual Studio 2010 and Microsoft Expression Web!
If you
would like to be informed about what's going on at Rebex, you are
welcome to follow us on Twitter.