1.00 - Wed Sep 23 19:50:00 CDT 2009

  * Initial release as Authen::SASL::XS
  * Fix return value for WRITE (Authen::SASL::XS::Security)
  * Avoid exceeding SASL buffer size (Authen::SASL::XS::Security)
  * Use Devel::CheckLib during build to find sasl libraries

History of updates to Authen::SASL::Cyrus


Russ Allbery: the 0.12-server distribution of this module has a typemap that
ends up casting the pointer return from server_new and client_new through an
int.  This looks like it's causing pointer truncation and various problems on
some 64-bit platforms (particularly Debian alpha and Debian ia64).

There is a simpler fix than the patch below (just replacing int with long will
work on most platforms, probably), but reading through the perlxs man page,
there's apparently a specific way in which one is supposed to handle module
data T_PTROBJ_SPECIAL.  I went ahead and implemented that, which also improves
error reporting a bit.  After applying the following patch, the resulting C
code no longer casts through an int (it casts through an IV instead, but that's
sufficient on all Unix platforms at least).

typedef for struct authensasl to Authen_SASL_Cyrus.

merged some of the changes from Authen::SASL::Cyrus 0.12
changed version named in order to distinguish from the Authen::SASL::Cyrus by Mark Adamson.

added setpass and checkpass methods
added setpass callback
applied a patch by Graham Barr (found with google) for enabling GSSAPI
authentication (fix a problem in Security.pm)
added a check for undef return values when using sub-callbacks (Thanks
to Quanah Gibson-Mount for discovering this one)

Added the iplocalport and ipremote port to *_new methods, after filling
in the appropriate string (see doc) ASC is able to manage KERBEROS_V4
on the server side
solved bug in property handling (strlen(NULL) after received NULL
as data from a sasl_getprop)

Added callback documenation
Perl-Callback types (PVMG, PV, PVIV) handling extended

Almost complete rewrite of Perlcallbacks from Cyrus.xs.
SASL-Server functionality added, so servers written in Perl can use
SASL as Authentication Layer. Synchronize callbacks between Cyrus SASL
v1 and v2.
Many changes in the internal handling of sasl variables.
Documentation inside the XS-file, do motivate myself to write docs

Memcpy fix provided by Maurice Massar

Added SASL V2 support patch provided by Leif Johansson.

Added the SASL_CB_PASS callback. This callback, unfortunately, does
not put the caller's "context" as the first parameter to the callback
function. This means that the PerlCallback() function has to be able
to determine if the _perlcontext is the first parameter or the second.
Added a magic number as the first field of the _perlcontext struct
to help PerlCallback() decide which parameter is the perl context.

Added a method "securesocket" that takes a file handle and returns a
new file handle that is tied to the Security subclass added in 0.03.
In this way, a client program can take the object returned from
client_new() and call the securesocket() method on it, passing in the
client's file handle, without ever having to know about the Security
subclass.  Also added a "tiehandle" method which will take the same
file handle as "securesocket", and tie it directly to the Security
subclass. The difference being "securesocket" returns a new file handle,
and "tiehandle" ties the handle passed in.

Added encryption layer. Cyrus.xs now has encode() and decode()
methods. Added a "Security" subclass that can be used to tie a
filehandle to perform encryption on write() and decryption on read().
The new() method ties a passed in glob to the class.

Encryption layer not ready yet, so changed the "secflag" param in the
call to sasl_client_new() from 1 to 0.  Otherwise, the server will
start expecting encrypted requests and sending encrypted responses
after the authentication, and the client cannot encrypt/decrypt.

Initial release