2 * WLDAP32 - LDAP support for Wine
4 * Copyright 2005 Hans Leidekker
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 #include "wine/port.h"
24 #include "wine/debug.h"
35 #define LDAP_SUCCESS 0x00
36 #define LDAP_NOT_SUPPORTED 0x5c
39 #include "winldap_private.h"
42 WINE_DEFAULT_DEBUG_CHANNEL(wldap32
);
44 ULONG
ldap_bindA( WLDAP32_LDAP
*ld
, PCHAR dn
, PCHAR cred
, ULONG method
)
46 ULONG ret
= LDAP_NOT_SUPPORTED
;
50 TRACE( "(%p, %s, %p, 0x%08lx)\n", ld
, debugstr_a(dn
), cred
, method
);
53 if (!dnW
) return LDAP_NO_MEMORY
;
55 credW
= strAtoW( cred
);
56 if (!credW
) return LDAP_NO_MEMORY
;
58 ret
= ldap_bindW( ld
, dnW
, credW
, method
);
67 ULONG
ldap_bindW( WLDAP32_LDAP
*ld
, PWCHAR dn
, PWCHAR cred
, ULONG method
)
69 ULONG ret
= LDAP_NOT_SUPPORTED
;
73 TRACE( "(%p, %s, %p, 0x%08lx)\n", ld
, debugstr_w(dn
), cred
, method
);
76 if (!dnU
) return LDAP_NO_MEMORY
;
78 credU
= strWtoU( cred
);
79 if (!credU
) return LDAP_NO_MEMORY
;
81 ret
= ldap_bind( ld
, dnU
, credU
, method
);
90 ULONG
ldap_bind_sA( WLDAP32_LDAP
*ld
, PCHAR dn
, PCHAR cred
, ULONG method
)
92 ULONG ret
= LDAP_NOT_SUPPORTED
;
96 TRACE( "(%p, %s, %p, 0x%08lx)\n", ld
, debugstr_a(dn
), cred
, method
);
99 if (!dnW
) return LDAP_NO_MEMORY
;
101 credW
= strAtoW( cred
);
102 if (!credW
) return LDAP_NO_MEMORY
;
104 ret
= ldap_bind_sW( ld
, dnW
, credW
, method
);
113 ULONG
ldap_bind_sW( WLDAP32_LDAP
*ld
, PWCHAR dn
, PWCHAR cred
, ULONG method
)
115 ULONG ret
= LDAP_NOT_SUPPORTED
;
119 TRACE( "(%p, %s, %p, 0x%08lx)\n", ld
, debugstr_w(dn
), cred
, method
);
122 if (!dnU
) return LDAP_NO_MEMORY
;
124 credU
= strWtoU( cred
);
125 if (!credU
) return LDAP_NO_MEMORY
;
127 ret
= ldap_bind_s( ld
, dnU
, credU
, method
);
136 ULONG
ldap_simple_bindA( WLDAP32_LDAP
*ld
, PCHAR dn
, PCHAR passwd
)
138 ULONG ret
= LDAP_NOT_SUPPORTED
;
140 WCHAR
*dnW
, *passwdW
;
142 TRACE( "(%p, %s, %p)\n", ld
, debugstr_a(dn
), passwd
);
145 if (!dnW
) return LDAP_NO_MEMORY
;
147 passwdW
= strAtoW( passwd
);
148 if (!passwdW
) return LDAP_NO_MEMORY
;
150 ret
= ldap_simple_bindW( ld
, dnW
, passwdW
);
159 ULONG
ldap_simple_bindW( WLDAP32_LDAP
*ld
, PWCHAR dn
, PWCHAR passwd
)
161 ULONG ret
= LDAP_NOT_SUPPORTED
;
165 TRACE( "(%p, %s, %p)\n", ld
, debugstr_w(dn
), passwd
);
168 if (!dnU
) return LDAP_NO_MEMORY
;
170 passwdU
= strWtoU( passwd
);
171 if (!passwdU
) return LDAP_NO_MEMORY
;
173 ret
= ldap_simple_bind( ld
, dnU
, passwdU
);
182 ULONG
ldap_simple_bind_sA( WLDAP32_LDAP
*ld
, PCHAR dn
, PCHAR passwd
)
184 ULONG ret
= LDAP_NOT_SUPPORTED
;
186 WCHAR
*dnW
, *passwdW
;
188 TRACE( "(%p, %s, %p)\n", ld
, debugstr_a(dn
), passwd
);
191 if (!dnW
) return LDAP_NO_MEMORY
;
193 passwdW
= strAtoW( passwd
);
194 if (!passwdW
) return LDAP_NO_MEMORY
;
196 ret
= ldap_simple_bind_sW( ld
, dnW
, passwdW
);
205 ULONG
ldap_simple_bind_sW( WLDAP32_LDAP
*ld
, PWCHAR dn
, PWCHAR passwd
)
207 ULONG ret
= LDAP_NOT_SUPPORTED
;
211 TRACE( "(%p, %s, %p)\n", ld
, debugstr_w(dn
), passwd
);
214 if (!dnU
) return LDAP_NO_MEMORY
;
216 passwdU
= strWtoU( passwd
);
217 if (!passwdU
) return LDAP_NO_MEMORY
;
219 ret
= ldap_simple_bind_s( ld
, dnU
, passwdU
);
228 ULONG
WLDAP32_ldap_unbind( WLDAP32_LDAP
*ld
)
230 ULONG ret
= LDAP_NOT_SUPPORTED
;
233 TRACE( "(%p)\n", ld
);
234 ret
= ldap_unbind( ld
);
240 ULONG
WLDAP32_ldap_unbind_s( WLDAP32_LDAP
*ld
)
242 ULONG ret
= LDAP_NOT_SUPPORTED
;
245 TRACE( "(%p)\n", ld
);
246 ret
= ldap_unbind_s( ld
);