Revision history
0.10
- Bugfixes release.
- A bug was introduced in version 0.09 where if a client did not have any encryption modules
installed it would fail negotiating with the server and would not be able to connect. This
was fixed.
- A bug where failure to generate encryption keys was not handled correctly and passed on as
a success, causing random halts and freezes during. This was fixed.
- Clarified the error message when a client times out during negotiating with a server
- Encryption keypairs were always being generated and not used even if the objects were created
with "donotencrypt". This caused slowdown especially when Crypt::RSA was used due to it's
slowness in generating keypairs. This issue was fixed.
- A potential bug where an encryption or compression module version-conflict error was incorrectly
reported.
0.09
- Implemented Crypt::RSA support. This is the first supported module that implements
assymmetric cryptography. Users who are serious about the security of their en-route
data are strongly advised to upgrade and make use of this encryption module.
- Small bugfix where client-negotiation-timeouts were not reported correctly.
0.08
- Bugfix release. An internal variable was assigned to both Crypt::Rijndael and Crypt::RC6
(they should have received different variables). This causes negotiations to often fail
when a client has RC6 and not Rijndael and the server had the opposite, or vice-versa.
- Implemented encryption and compression module version checking. The client will fail
to connect to a server if the agreed-on encryption or compression module has a version
mismatch. The failure error in $@ will advise of so.
0.07
- Minor changes to the negotiation routine, including improved security during encryption key
exchange.
- Implemented a "password" feature where a server will require a password from the client before
accepting connection.
- Added 2 methods (remoteip() and remoteport()) to retrieve the IP address/port of the remote
connection.
- Added support to Crypt::Rijndael encryption.
- Added support to Crypt::RC6 encryption.
- Changes to the send and receive routines to allow the server to better manage large amounts
of data from several clients at the same time.
0.06
- Re-organized many internal functions to better manage memmory and free up memory no longer used
sooner.
- Added new method clients() to return the list of clients or number of clients connected to a
server.
- Modified the new() constructor to accept a "Welcome" message visible by telnetting into a server.
0.05
- Fixed a bug where calling the receive() method may have failed if a signal (such as child dying)
was delivered to the process at the same time. The bug became apparent on heavily-stormed
servers with many forked() children dying, causing the negotiation with new clients to sometimes
fail.
- Re-wrote the server-side negotiating code to prevent it from blocking for couple of seconds during
negotiating with a newly connected client.
0.04
- Fixed a bug where older versions of Crypt::CBC were not called correctly causing "make test"
and almost everything else to fail.
- Minor changes to the protocol negotiation
0.03
- Added encryption support for Crypt::DES_EDE3, Crypt::DES and Crypt::Blowfish
- Added 2 new methods to determine what type of compression and encryption has been negotiated.
0.02
- Implemented transparent compression
- Implemented transparent encryption
- Internal protocol majorly re-designed to accomodate new and future features
- Re-wrote the test routine to use fork() and simulate a real-world scenario
- Minor bugfixes in receive()
0.01
- original version; created by h2xs 1.19