summaryrefslogtreecommitdiffstats
path: root/include/ldaputil/extcmap.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/ldaputil/extcmap.h')
-rw-r--r--include/ldaputil/extcmap.h634
1 files changed, 634 insertions, 0 deletions
diff --git a/include/ldaputil/extcmap.h b/include/ldaputil/extcmap.h
new file mode 100644
index 00000000..fde6a4b3
--- /dev/null
+++ b/include/ldaputil/extcmap.h
@@ -0,0 +1,634 @@
+/** BEGIN COPYRIGHT BLOCK
+ * Copyright 2001 Sun Microsystems, Inc.
+ * Portions copyright 1999, 2001-2003 Netscape Communications Corporation.
+ * All rights reserved.
+ * END COPYRIGHT BLOCK **/
+#ifndef _PUBLIC_CERTMAP_H
+#define _PUBLIC_CERTMAP_H
+
+#include <ldap.h>
+
+#ifndef NSAPI_PUBLIC
+#if defined( _WINDOWS ) || defined( _WIN32 ) || defined( XP_WIN32 )
+#define NSAPI_PUBLIC __declspec(dllexport)
+#else
+#define NSAPI_PUBLIC
+#endif
+#endif
+
+
+#define LDAPU_ATTR_INITFN "InitFn"
+#define LDAPU_ATTR_LIBRARY "library"
+#define LDAPU_ATTR_DNCOMPS "DNComps"
+#define LDAPU_ATTR_FILTERCOMPS "FilterComps"
+#define LDAPU_ATTR_VERIFYCERT "VerifyCert"
+#define LDAPU_ATTR_CERTMAP_LDAP_ATTR "CmapLdapAttr"
+
+/* Error/Success codes */
+#define LDAPU_SUCCESS 0
+#define LDAPU_FAILED -1
+#define LDAPU_CERT_MAP_FUNCTION_FAILED -2
+#define LDAPU_CERT_SEARCH_FUNCTION_FAILED -3
+#define LDAPU_CERT_VERIFY_FUNCTION_FAILED -4
+#define LDAPU_CERT_MAP_INITFN_FAILED -5
+
+
+/*
+ * CertMapFn_t -
+ * This is a typedef for cert mapping function. The mapping function is
+ * called by the function ldapu_cert_to_ldap_entry.
+ * Parameters:
+ * cert - cert to be mapped. You can pass this to
+ * functions ldapu_get_cert_XYZ.
+ * ld - Handle to the connection to the directory server.
+ * certmap_info - This structure contains information about the
+ * configuration parameters for the cert's issuer (CA).
+ * This structure can be passed to the function
+ * ldapu_certmap_info_attrval to get value for a particular
+ * configuration attribute (or a property).
+ * ldapdn - The mapping function should allocate memory for ldapdn
+ * using malloc and set this variable using the 'cert' and
+ * 'certmap_info'. This DN will be used for ldap lookup.
+ * filter - The mapping function should allocate memory for filter
+ * using malloc and set this variable using the 'cert' and
+ * 'certmap_info'. This will be used as ldap filter for ldap
+ * lookup of the ldapdn.
+ *
+ * Return Value:
+ * return LDAPU_SUCCESS upon successful completion (cert is mapped)
+ * return LDAPU_FAILED there is no unexpected error but cert could not
+ * mapped (probably because ldap entry doesn't exist).
+ * otherwise return LDAPU_CERT_MAP_FUNCTION_FAILED.
+ */
+typedef int (*CertMapFn_t)(void *cert, LDAP *ld, void *certmap_info,
+ char **ldapdn, char **filter);
+
+
+/*
+ * CertSearchFn_t -
+ * This is a typedef for cert search function. The search function is
+ * called by the function ldapu_cert_to_ldap_entry after calling the mapping
+ * function. The candidate 'dn' and 'filter' returned by the mapping
+ * function is passed to this function.
+ * The default search function works as follows:
+ * 1. If the 'filter' is NULL, default it to 'objectclass=*'.
+ * 2. If the 'dn' is non-NULL, do a base level search with the 'dn' and
+ * 'filter'. If it succeeds, we are done. If there is no serious
+ * error (LDAP_NO_SUCH_OBJECT is not serious error yet), continue.
+ * 3. If the 'dn' is NULL, default it to 'basedn'.
+ * 4. Perform a 'subtree' search in LDAP for the 'dn' and the 'filter'.
+ * 5. Return the results of the last search.
+ * Parameters:
+ * cert - cert to be mapped. You can pass this to
+ * functions ldapu_get_cert_XYZ.
+ * ld - Handle to the connection to the directory server.
+ * certmap_info - This structure contains information about the
+ * configuration parameters for the cert's issuer (CA).
+ * This structure can be passed to the function
+ * ldapu_certmap_info_attrval to get value for a particular
+ * configuration attribute (or a property).
+ * suffix - If the ldapdn is empty then use this DN to begin the
+ * search. This is the DN of the root object in LDAP
+ * Directory.
+ * ldapdn - candidate 'dn' returned by the mapping function.
+ * filter - returned by the mapping function.
+ * attrs - list of attributes to return from the search. If this is
+ * NULL, all attributes are returned.
+ * res - result of the search which is passed to the verify
+ * function.
+ *
+ * Return Value:
+ * return LDAPU_SUCCESS upon successful completion
+ * return LDAPU_FAILED there is no unexpected error but entries matching the
+ * 'dn' and 'filter' doesn't exist.
+ * otherwise return LDAPU_CERT_SEARCH_FUNCTION_FAILED.
+ */
+typedef int (*CertSearchFn_t)(void *cert, LDAP *ld, void *certmap_info,
+ const char *suffix, const char *ldapdn,
+ const char *filter, const char **attrs,
+ LDAPMessage ***res);
+
+
+/*
+ * CertVerifyFn_t -
+ * This is a typedef for cert verify function. The verify function is
+ * called by the function ldapu_cert_to_ldap_entry after the cert is
+ * successfully mapped to ldapdn and filter, and an entry matching that
+ * exists in the directory server. The verify fn may get called for
+ * multiple matched entries. This function must go through all the entries
+ * and check which one is appropriate. The pointer to that entry must be
+ * passed back in the 'LDAPMessage **entry' parameter.
+ * Parameters:
+ * cert - Original cert to be mapped. You can pass this to
+ * functions ldapu_get_cert_XYZ.
+ * ld - Handle to the connection to the directory server.
+ * certmap_info - This structure contains information about the
+ * configuration parameters for the cert's issuer (CA).
+ * This structure can be passed to the function
+ * ldapu_certmap_info_attrval to get value for a particular
+ * configuration attribute (or a property).
+ * res - cert is first mapped to ldapdn and filter. 'res' is the
+ * result of ldap search using the ldapdn and filter.
+ * 'ld' and 'res' can be used in the calls to ldapsdk API.
+ * entry - pointer to the entry from 'res' which is the correct match
+ * according to the verify function.
+ *
+ * Return Values:
+ * return LDAPU_SUCCESS upon successful completion (cert is verified)
+ * return LDAPU_FAILED there is no unexpected error but cert could not
+ * verified (probably because it was revoked).
+ * otherwise return LDAPU_CERT_VERIFY_FUNCTION_FAILED.
+ */
+typedef int (*CertVerifyFn_t)(void *cert, LDAP *ld, void *certmap_info,
+ LDAPMessage *res, LDAPMessage **entry);
+
+
+
+/*
+ * CertmapInitFn_t -
+ * This is a typedef for user defined init function. An init function can be
+ * specified in the config file (<ServerRoot>/userdb/certmap.conf) per issuer
+ * of a certificate. This init function must from the user's library, also
+ * loaded from the config file using the 'library' property. The init
+ * function is specified in the config file using the 'InitFn' property.
+ * When the config file is loaded, any user defined init functions will be
+ * called with the certmap_info pertaining to the issuer (CA).
+ * Parameters:
+ * certmap_info - This structure contains information about the
+ * configuration parameters for the cert's issuer (CA).
+ * This structure can be passed to the function
+ * ldapu_certmap_info_attrval to get value for a particular
+ * configuration attribute (or a property).
+ *
+ * Return Value:
+ * return LDAPU_SUCCESS upon successful completion
+ * otherwise return LDAPU_CERT_MAP_INITFN_FAILED. The server startup will be
+ * aborted if the return value is not LDAPU_SUCCESS.
+ */
+typedef int (*CertMapInitFn_t)(void *certmap_info, const char *issuerName,
+ const char *issuerDN, const char *libname);
+
+/*
+ * Refer to the description of the function ldapu_get_cert_ava_val
+ */
+enum {
+ LDAPU_SUBJECT_DN,
+ LDAPU_ISSUER_DN
+};
+
+/* ldapu_cert_to_ldap_entry */
+typedef int (*t_ldapu_cert_to_ldap_entry)(void *cert, LDAP *ld,
+ const char *suffix,
+ LDAPMessage **res);
+
+/* ldapu_set_cert_mapfn */
+typedef int (*t_ldapu_set_cert_mapfn)(const char *issuerDN,
+ CertMapFn_t mapfn);
+
+/* ldapu_get_cert_mapfn */
+typedef CertMapFn_t (*t_ldapu_get_cert_mapfn) (const char *issuerDN);
+
+/* ldapu_set_cert_searchfn */
+typedef int (*t_ldapu_set_cert_searchfn) (const char *issuerDN,
+ CertSearchFn_t searchfn);
+
+/* ldapu_get_cert_searchfn */
+typedef CertSearchFn_t (*t_ldapu_get_cert_searchfn) (const char *issuerDN);
+
+/* ldapu_set_cert_verifyfn */
+typedef int (*t_ldapu_set_cert_verifyfn) (const char *issuerDN,
+ CertVerifyFn_t verifyFn);
+
+/* ldapu_get_cert_verifyfn */
+typedef CertVerifyFn_t (*t_ldapu_get_cert_verifyfn) (const char *issuerDN);
+
+/* ldapu_get_cert_subject_dn */
+typedef int (*t_ldapu_get_cert_subject_dn) (void *cert, char **subjectDN);
+
+/* ldapu_get_cert_issuer_dn */
+typedef int (*t_ldapu_get_cert_issuer_dn) (void *cert, char **issuerDN);
+
+/* ldapu_get_cert_ava_val */
+typedef int (*t_ldapu_get_cert_ava_val) (void *cert, int which_dn,
+ const char *attr, char ***val);
+
+/* ldapu_free_cert_ava_val */
+typedef int (*t_ldapu_free_cert_ava_val) (char **val);
+
+/* ldapu_get_cert_der */
+typedef int (*t_ldapu_get_cert_der) (void *cert, unsigned char **derCert,
+ unsigned int *len);
+
+/* ldapu_issuer_certinfo */
+typedef int (*t_ldapu_issuer_certinfo) (const char *issuerDN,
+ void **certmap_info);
+
+/* ldapu_certmap_info_attrval */
+typedef int (*t_ldapu_certmap_info_attrval) (void *certmap_info,
+ const char *attr, char **val);
+
+/* ldapu_err2string */
+typedef char * (*t_ldapu_err2string) (int err);
+
+/* ldapu_free */
+typedef void (*t_ldapu_free_old) (char *ptr);
+typedef void (*t_ldapu_free) (void *ptr);
+
+/* ldapu_malloc */
+typedef void *(*t_ldapu_malloc) (int size);
+
+/* ldapu_strdup */
+typedef char *(*t_ldapu_strdup) (const char *ptr);
+
+
+typedef struct LDAPUDispatchVector LDAPUDispatchVector_t;
+struct LDAPUDispatchVector {
+ t_ldapu_cert_to_ldap_entry f_ldapu_cert_to_ldap_entry;
+ t_ldapu_set_cert_mapfn f_ldapu_set_cert_mapfn;
+ t_ldapu_get_cert_mapfn f_ldapu_get_cert_mapfn;
+ t_ldapu_set_cert_searchfn f_ldapu_set_cert_searchfn;
+ t_ldapu_get_cert_searchfn f_ldapu_get_cert_searchfn;
+ t_ldapu_set_cert_verifyfn f_ldapu_set_cert_verifyfn;
+ t_ldapu_get_cert_verifyfn f_ldapu_get_cert_verifyfn;
+ t_ldapu_get_cert_subject_dn f_ldapu_get_cert_subject_dn;
+ t_ldapu_get_cert_issuer_dn f_ldapu_get_cert_issuer_dn;
+ t_ldapu_get_cert_ava_val f_ldapu_get_cert_ava_val;
+ t_ldapu_free_cert_ava_val f_ldapu_free_cert_ava_val;
+ t_ldapu_get_cert_der f_ldapu_get_cert_der;
+ t_ldapu_issuer_certinfo f_ldapu_issuer_certinfo;
+ t_ldapu_certmap_info_attrval f_ldapu_certmap_info_attrval;
+ t_ldapu_err2string f_ldapu_err2string;
+ t_ldapu_free_old f_ldapu_free_old;
+ t_ldapu_malloc f_ldapu_malloc;
+ t_ldapu_strdup f_ldapu_strdup;
+ t_ldapu_free f_ldapu_free;
+};
+
+
+#ifdef INTLDAPU
+NSAPI_PUBLIC extern LDAPUDispatchVector_t *__ldapu_table;
+#else
+typedef int (*CertMapDLLInitFn_t)(LDAPUDispatchVector_t **table);
+
+NSAPI_PUBLIC extern int CertMapDLLInitFn(LDAPUDispatchVector_t **table);
+
+extern LDAPUDispatchVector_t *__ldapu_table;
+
+#if defined( _WINDOWS ) || defined( _WIN32 ) || defined( XP_WIN32 )
+#define CertmapDLLInitFnTbl LDAPUDispatchVector_t *__ldapu_table;
+#define CertmapDLLInit(rv, libname) \
+{\
+ HANDLE h = LoadLibrary((libname)); \
+ CertMapDLLInitFn_t init_fn; \
+ if (!h) return LDAPU_CERT_MAP_INITFN_FAILED; \
+ init_fn = (CertMapDLLInitFn_t)GetProcAddress(h, "CertMapDLLInitFn"); \
+ rv = init_fn(&__ldapu_table); \
+}
+#else
+#define CertmapDLLInit(rv, libname)
+#define CertmapDLLInitFnTbl
+#endif
+
+#endif /* INTLDAPU */
+
+#ifndef INTLDAPU
+
+/*
+ * ldapu_cert_to_ldap_entry -
+ * This function is called to map a cert to an ldap entry. It extracts the
+ * cert issuer information from the given cert. The mapping function set for
+ * the issuer (if any) or the default mapping function is called to map the
+ * subject DN from the cert to a candidate ldap DN and filter for ldap
+ * search. If the mapped ldap DN is NULL, the 'basedn' passed into this
+ * function is used as a starting place for the search. If the mapped filter
+ * is NULL, "objectclass=*" is used as a filter. A base level search is
+ * performed to see if the candidate DN exists in the LDAP database matching
+ * the filter. If there is no match, a scoped search (sub-tree search) is
+ * performed. If at least one entry matched the mapped DN and filter, the
+ * result is passed to the appropriate verify function. The verify function
+ * is called only if 'VerifyCert' parameter has been set for the cert issuer
+ * in the certmap.conf file.
+ * If the verify function succeeds, it must return the pointer to the matched
+ * 'entry'. If at the end, there is only one matching entry, the mapping is
+ * successful.
+ * Parameters:
+ * cert - cert to be mapped. You can pass this to
+ * functions ldapu_get_cert_XYZ.
+ * ld - Handle to the connection to the directory server.
+ * suffix - If the subject dn is mapped to empty LDAP DN then use this
+ * DN to begin the search. This is the DN of the root object
+ * in LDAP Directory.
+ * res - cert is first mapped to ldapdn and filter. 'res' is the
+ * result of ldap search using the ldapdn and filter.
+ * 'ld' and 'res' can be used in the calls to ldapsdk API.
+ * When done with 'res', free it using ldap_msgfree(res)
+ *
+ * Return Value:
+ * return LDAPU_SUCCESS upon successful completion
+ * otherwise returns an error code that can be passed to ldapu_err2string.
+ */
+#define ldapu_cert_to_ldap_entry (*__ldapu_table->f_ldapu_cert_to_ldap_entry)
+
+/*
+ * ldapu_set_cert_mapfn -
+ * This function can be used to set the cert mapping function for the given
+ * issuer (CA). If the mapping information doesn't exist for the given
+ * issuer then a new one will be created and the mapping function will be
+ * set. When creating the new mapping information, the default mapping
+ * information is copied.
+ * Parameters:
+ * issuerDN - DN of the cert issuer. This mapping function will be used
+ * for all certs issued by this issuer. If the issuerDN is
+ * NULL, the given 'mapfn' becomes the default mapping
+ * function (which is used when no mapping function has been
+ * set for the cert's issuer).
+ * mapfn - the mapping function. Look at the desciption of
+ * CertMapFn_t to find out more about the mapping functions.
+ *
+ * Return Value:
+ * return LDAPU_SUCCESS upon successful completion
+ * otherwise returns an error code that can be passed to ldapu_err2string.
+ */
+#define ldapu_set_cert_mapfn (*__ldapu_table->f_ldapu_set_cert_mapfn)
+
+
+/*
+ * ldapu_get_cert_mapfn -
+ * This function can be used to get the cert mapping function for the given
+ * issuer (CA). This will always return a non-NULL function.
+ * Parameters:
+ * issuerDN - DN of the cert issuer for which the mapping function is to
+ * be retrieved. If this is NULL, default mapping function
+ * is returned.
+ *
+ * Return Value:
+ * The mapping function set for the issuer is returned. If the issuerDN is
+ * NULL or if no specific mapping function has been set for the issuer, the
+ * default mapping function is returned.
+ */
+#define ldapu_get_cert_mapfn (*__ldapu_table->f_ldapu_get_cert_mapfn)
+
+/*
+ * ldapu_set_cert_searchfn -
+ * This function can be used to set the cert search function for the given
+ * issuer (CA).
+ * Parameters:
+ * issuerDN - DN of the cert issuer. This search function will be used
+ * for all certs issued by this issuer. If the issuerDN is
+ * NULL, the given 'searchfn' becomes the default search
+ * function (which is used when no search function has been
+ * set for the cert's issuer).
+ * searchfn - the search function. Look at the desciption of
+ * CertSearchFn_t to find out more about the search functions.
+ *
+ * Return Value:
+ * return LDAPU_SUCCESS upon successful completion
+ * otherwise returns an error code that can be passed to ldapu_err2string.
+ */
+#define ldapu_set_cert_searchfn (*__ldapu_table->f_ldapu_set_cert_searchfn)
+
+
+/*
+ * ldapu_get_cert_searchfn -
+ * This function can be used to get the cert search function for the given
+ * issuer (CA). This will always return a non-NULL function.
+ * Parameters:
+ * issuerDN - DN of the cert issuer for which the search function is to
+ * be retrieved. If this is NULL, the default search
+ * function is returned.
+ *
+ * Return Value:
+ * The search function set for the issuer is returned. If the issuerDN is
+ * NULL or if no specific search function has been set for the issuer, the
+ * default search function is returned.
+ */
+#define ldapu_get_cert_searchfn (*__ldapu_table->f_ldapu_get_cert_searchfn)
+
+/*
+ * ldapu_set_cert_verifyfn -
+ * This function can be used to set the cert verify function for the given
+ * issuer (CA). If the mapping information doesn't exist for the given
+ * issuer then a new one will be created and the verify function will be
+ * set. When creating the new mapping information, the default mapping
+ * information is copied.
+ * Parameters:
+ * issuerDN - DN of the cert issuer. This verify function will be used
+ * for all certs issued by this issuer. If the issuerDN is
+ * NULL, the given 'verifyFn' becomes the default verify
+ * function (which is used when no verify function has been
+ * set for the cert's issuer).
+ * verifyFn - the verify function. Look at the desciption of
+ * CertMapFn_t to find out more about the verify functions.
+ *
+ * Return Value:
+ * return LDAPU_SUCCESS upon successful completion
+ * otherwise returns an error code that can be passed to ldapu_err2string.
+ */
+#define ldapu_set_cert_verifyfn (*__ldapu_table->f_ldapu_set_cert_verifyfn)
+
+/*
+ * ldapu_get_cert_verifyfn -
+ * This function can be used to get the cert verify function for the given
+ * issuer (CA). This function can return NULL when there is no applicable
+ * verify function.
+ * Parameters:
+ * issuerDN - DN of the cert issuer for which the verify function is to
+ * be retrieved. If this is NULL, default verify function
+ * is returned.
+ *
+ * Return Value:
+ * The verify function set for the issuer is returned. If the issuerDN is
+ * NULL or if no specific verify function has been set for the issuer, the
+ * default verify function is returned. This function can return NULL when
+ * there is no applicable verify function.
+ */
+#define ldapu_get_cert_verifyfn (*__ldapu_table->f_ldapu_get_cert_verifyfn)
+
+
+/*
+ * ldapu_get_cert_subject_dn -
+ * This function can be used to get the subject DN from the cert. Free the
+ * subjectDN using 'free' after you are done using it.
+ * Parameters:
+ * cert - cert from which the DN is to be extracted.
+ * subjectDN - subjectDN extracted from the cert. Free it using 'free'
+ * after it is no longer required.
+ *
+ * Return Value:
+ * return LDAPU_SUCCESS upon successful completion
+ * otherwise returns an error code that can be passed to ldapu_err2string.
+ */
+#define ldapu_get_cert_subject_dn (*__ldapu_table->f_ldapu_get_cert_subject_dn)
+
+
+/*
+ * ldapu_get_cert_issuer_dn -
+ * This function can be used to get the issuer DN from the cert. Free the
+ * issuerDN using 'free' after you are done using it.
+ * Parameters:
+ * cert - cert from which the DN is to be extracted.
+ * issuerDN - issuerDN extracted from the cert. Free it using 'free'
+ * after it is no longer required.
+ *
+ * Return Value:
+ * return LDAPU_SUCCESS upon successful completion
+ * otherwise returns an error code that can be passed to ldapu_err2string.
+ */
+#define ldapu_get_cert_issuer_dn (*__ldapu_table->f_ldapu_get_cert_issuer_dn)
+
+
+/*
+ * ldapu_get_cert_ava_val -
+ * This function can be used to get value of the given attribute from either
+ * the subject DN or the issuer DN from the cert.
+ * Parameters:
+ * cert - cert from which the values are to be extracted.
+ * which_dn - Should be either LDAPU_ISSUER_DN or LDAPU_SUBJECT_DN.
+ * attr - Should be one of "CN", "OU", "O", "C", "UID", "MAIL",
+ * "E", "L", and "ST".
+ * val - An array of attribute values extracted from the cert.
+ * There could be multiple values. The last entry in the
+ * array is NULL. You must free this array of strings after
+ * you are done with it (using the function
+ * ldapu_free_cert_ava_val). 'val' is initialized to NULL if
+ * there is an error.
+ *
+ * Return Value:
+ * return LDAPU_SUCCESS upon successful completion
+ * otherwise returns an error code that can be passed to ldapu_err2string.
+ */
+#define ldapu_get_cert_ava_val (*__ldapu_table->f_ldapu_get_cert_ava_val)
+
+
+/*
+ * ldapu_free_cert_ava_val -
+ * This function can be used to free the array returned by the
+ * ldapu_get_cert_ava_val function.
+ * Parameters:
+ * val - An array of attribute values returned by
+ * ldapu_get_cert_ava_val.
+ *
+ * Return Value:
+ * return LDAPU_SUCCESS upon successful completion
+ * otherwise returns an error code that can be passed to ldapu_err2string.
+ */
+#define ldapu_free_cert_ava_val (*__ldapu_table->f_ldapu_free_cert_ava_val)
+
+
+/*
+ * ldapu_get_cert_der -
+ * This function can be used to get the original DER encoded cert for the
+ * given cert.
+ * Parameters:
+ * cert - cert from which the original DER is to be extracted.
+ * derCert - the original DER encoded cert
+ * len - length of derCert
+ *
+ * Return Value:
+ * return LDAPU_SUCCESS upon successful completion
+ * otherwise returns an error code that can be passed to ldapu_err2string.
+ */
+#define ldapu_get_cert_der (*__ldapu_table->f_ldapu_get_cert_der)
+
+
+/*
+ * ldapu_issuer_certinfo -
+ * This function can be used to get the handle on the internal structure for
+ * the given issuer. This handle can be passed to ldapu_certmap_info_attrval
+ * to get configuration attribute values for the issuer.
+ * Parameters:
+ * issuerDN - DN of the issuer for whom the handle on internal structure
+ * is requested. If issuerDN is NULL, the handle to the
+ * default configuration information is returned.
+ * certmap_info - This structure contains information about the
+ * configuration parameters for the cert's issuer (CA).
+ * This structure can be passed to the function
+ * ldapu_certmap_info_attrval to get value for a particular
+ * configuration attribute (or a property).
+ *
+ * Return Value:
+ * return LDAPU_SUCCESS upon successful completion
+ * otherwise returns an error code that can be passed to ldapu_err2string.
+ * CAUTION: DON'T FREE THE 'certmap_info' STRUCTURE.
+ */
+#define ldapu_issuer_certinfo (*__ldapu_table->f_ldapu_issuer_certinfo)
+
+
+/*
+ * ldapu_certmap_info_attrval -
+ * This function can be used to get values for the given attribute/property
+ * from the given certmap_info. You can get handle on the certmap_info by
+ * calling the ldapu_issuer_certinfo function. Free the 'val' using 'free'
+ * after it is no longer required.
+ * Parameters:
+ * certmap_info - This structure contains information about the
+ * configuration parameters for the cert's issuer (CA).
+ * attr - name of the attribute/property for which the value is to
+ * be returned. The attribute can be one of the attributes
+ * listed above (LDAPU_ATTR_XYZ). User defined attributes
+ * can also be used.
+ * val - Value of the 'attr' from the 'certmap_info'.
+ *
+ * Return Value:
+ * return LDAPU_SUCCESS upon successful completion
+ * otherwise returns an error code that can be passed to ldapu_err2string.
+ */
+#define ldapu_certmap_info_attrval (*__ldapu_table->f_ldapu_certmap_info_attrval)
+
+
+/*
+ * ldapu_err2string -
+ * This function can be used to print any of the ldaputil or LDAP error
+ * code.
+ * Parameters:
+ * err - error code to be converted to printable string.
+ *
+ * Return Value:
+ * Printable representation of the given error code.
+ */
+#define ldapu_err2string (*__ldapu_table->f_ldapu_err2string)
+
+/*
+ * ldapu_free -
+ * This function should be used to free the memory allocated by
+ * ldapu_* functions if the ldapu_* function doesn't have a corresponding
+ * 'free' function. Use this function for free'ing the memory allocated by
+ * the following functions:
+ * ldapu_get_cert_subject_dn
+ * ldapu_get_cert_issuer_dn
+ * ldapu_get_cert_der
+ * ldapu_certmap_info_attrval
+ * To free memory allocated by ldapu_get_cert_ava_val, use
+ * ldapu_free_cert_ava_val. Do not free the certmap_info pointer returned by
+ * ldapu_issuer_certinfo.
+ * Parameters:
+ * ptr - pointer returned by ldapu_get_cert_* functions.
+ */
+#define ldapu_free (*__ldapu_table->f_ldapu_free)
+
+/*
+ * ldapu_malloc -
+ * This function is a cover function for the 'malloc' system call. On NT, it
+ * is best to alloc & free the memory in the same DLL.
+ * Parameters:
+ * size - size of the memory to be allocated
+ * Return Value:
+ * same as 'malloc' -- pointer to the allocated memory or NULL on failure.
+ */
+#define ldapu_malloc (*__ldapu_table->f_ldapu_malloc)
+
+/*
+ * ldapu_strdup -
+ * This function is a cover function for the 'strdup' system call. On NT, it
+ * is best to alloc & free the memory in the same DLL.
+ * Parameters:
+ * ptr - Pointer to the string to be copied
+ * Return Value:
+ * same as 'strdup' -- pointer to the copied string or NULL on failure.
+ */
+#define ldapu_strdup (*__ldapu_table->f_ldapu_strdup)
+
+
+#endif /* !INTLDAPU */
+
+#endif /* _PUBLIC_CERTMAP_H */