Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wine-mirror
GitHub Repository: wine-mirror/wine
Path: blob/master/libs/ldap/libldap/bind.c
4394 views
1
/* bind.c */
2
/* $OpenLDAP$ */
3
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
4
*
5
* Copyright 1998-2024 The OpenLDAP Foundation.
6
* All rights reserved.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted only as authorized by the OpenLDAP
10
* Public License.
11
*
12
* A copy of this license is available in the file LICENSE in the
13
* top-level directory of the distribution or, alternatively, at
14
* <http://www.OpenLDAP.org/license.html>.
15
*/
16
/* Portions Copyright (c) 1990 Regents of the University of Michigan.
17
* All rights reserved.
18
*/
19
20
#include "portable.h"
21
22
#include <stdio.h>
23
24
#include <ac/stdlib.h>
25
26
#include <ac/socket.h>
27
#include <ac/string.h>
28
#include <ac/time.h>
29
30
#include "ldap-int.h"
31
#include "ldap_log.h"
32
33
/*
34
* BindRequest ::= SEQUENCE {
35
* version INTEGER,
36
* name DistinguishedName, -- who
37
* authentication CHOICE {
38
* simple [0] OCTET STRING -- passwd
39
* krbv42ldap [1] OCTET STRING -- OBSOLETE
40
* krbv42dsa [2] OCTET STRING -- OBSOLETE
41
* sasl [3] SaslCredentials -- LDAPv3
42
* }
43
* }
44
*
45
* BindResponse ::= SEQUENCE {
46
* COMPONENTS OF LDAPResult,
47
* serverSaslCreds OCTET STRING OPTIONAL -- LDAPv3
48
* }
49
*
50
* (Source: RFC 2251)
51
*/
52
53
/*
54
* ldap_bind - bind to the ldap server (and X.500). The dn and password
55
* of the entry to which to bind are supplied, along with the authentication
56
* method to use. The msgid of the bind request is returned on success,
57
* -1 if there's trouble. ldap_result() should be called to find out the
58
* outcome of the bind request.
59
*
60
* Example:
61
* ldap_bind( ld, "cn=manager, o=university of michigan, c=us", "secret",
62
* LDAP_AUTH_SIMPLE )
63
*/
64
65
int
66
ldap_bind( LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *passwd, int authmethod )
67
{
68
Debug0( LDAP_DEBUG_TRACE, "ldap_bind\n" );
69
70
switch ( authmethod ) {
71
case LDAP_AUTH_SIMPLE:
72
return( ldap_simple_bind( ld, dn, passwd ) );
73
74
case LDAP_AUTH_SASL:
75
/* user must use ldap_sasl_bind */
76
/* FALL-THRU */
77
78
default:
79
ld->ld_errno = LDAP_AUTH_UNKNOWN;
80
return( -1 );
81
}
82
}
83
84
/*
85
* ldap_bind_s - bind to the ldap server (and X.500). The dn and password
86
* of the entry to which to bind are supplied, along with the authentication
87
* method to use. This routine just calls whichever bind routine is
88
* appropriate and returns the result of the bind (e.g. LDAP_SUCCESS or
89
* some other error indication).
90
*
91
* Examples:
92
* ldap_bind_s( ld, "cn=manager, o=university of michigan, c=us",
93
* "secret", LDAP_AUTH_SIMPLE )
94
* ldap_bind_s( ld, "cn=manager, o=university of michigan, c=us",
95
* NULL, LDAP_AUTH_KRBV4 )
96
*/
97
int
98
ldap_bind_s(
99
LDAP *ld,
100
LDAP_CONST char *dn,
101
LDAP_CONST char *passwd,
102
int authmethod )
103
{
104
Debug0( LDAP_DEBUG_TRACE, "ldap_bind_s\n" );
105
106
switch ( authmethod ) {
107
case LDAP_AUTH_SIMPLE:
108
return( ldap_simple_bind_s( ld, dn, passwd ) );
109
110
case LDAP_AUTH_SASL:
111
/* user must use ldap_sasl_bind */
112
/* FALL-THRU */
113
114
default:
115
return( ld->ld_errno = LDAP_AUTH_UNKNOWN );
116
}
117
}
118
119