Michael Ströder wrote:
Howard Chu wrote:Now that Cyrus SASL 2.1.25 is out with channel binding support, we should be looking into adding the hooks needed to use it. I believe what we want to expose is an ldap_get_option(ld, LDAP_OPT_X_TLS_BINDING,&foo) to retrieve the tls-unique binding data from the underlying TLS session. Then we pass this into SASL using sasl_setprop(ctx, SASL_CHANNEL_BINDING, foo). The actual ldap_get_option() code will have to be added for each TLS implementation.How can use it from python-ldap? python-ldap is mainly a wrapper around the OpenLDAP client libs. Everything which can be done within C has to be exposed in this wrapper module. I guess wrapper modules for other scripting languages have the same requirements.
Possibly it should just be set implicitly by the sasl_interactive_bind APIs, so clients don't need to do anything new at all. I was more concerned with how to implement this in slapd.
SASL params (SASL_CB_* in sasl.h) are usually passed to cyrus-sasl by a call-back dictionary. But I guess it should be possible to set SASL_CHANNEL_BINDING via ldap_set_option(). Puuh, I'm not really familiar with the C APIs as I did not write the C parts of python-ldap... Ciao, Michael.
-- -- Howard Chu CTO, Symas Corp. http://www.symas.com Director, Highland Sun http://highlandsun.com/hyc/ Chief Architect, OpenLDAP http://www.openldap.org/project/