pam_pkcs11  0.6.8
Data Structures | Defines | Typedefs | Functions
mapper.h File Reference
#include <sys/types.h>
#include <stdlib.h>
#include <string.h>
#include <pwd.h>
#include <../common/cert_st.h>
#include "../scconf/scconf.h"

Go to the source code of this file.

Data Structures

struct  mapper_module_st
 Structure to be filled on mapper module initialization. More...
struct  mapfile
 This struct is used in processing map files a map file is a list of "key" " -> " "value" text lines. More...

Defines

#define MAPPER_EXTERN   extern
#define _DEFAULT_MAPPER_FIND_ENTRIES
 Default macro for locate certificate entry.
#define _DEFAULT_MAPPER_FIND_USER
 Default macro for locating user.
#define _DEFAULT_MAPPER_MATCH_USER
 Macro for match mapper function.
#define _DEFAULT_MAPPER_END
 Macro for de-initialization routine.
#define _DEFAULT_MAPPER_INIT
 Macro for default init function.

Typedefs

typedef struct mapper_module_st mapper_module
 Structure to be filled on mapper module initialization.

Functions

mapper_modulemapper_module_init (scconf_block *ctx, const char *mapper_name)
 Initialize module and mapper_module_st structure.
MAPPER_EXTERN struct mapfileset_mapent (const char *uri)
 Initialize a mapper entry table.
MAPPER_EXTERN int get_mapent (struct mapfile *mfile)
 Retrieve next entry of given map file.
MAPPER_EXTERN void end_mapent (struct mapfile *mfile)
 Release a mapentry structure.
MAPPER_EXTERN char * mapfile_find (const char *file, char *key, int ignorecase, int *match)
 Try to map "key" to provided mapfile.
MAPPER_EXTERN int mapfile_match (const char *file, char *key, const char *value, int ignorecase)
 Try to match provided key to provided name by mean of a mapfile.
MAPPER_EXTERN char * search_pw_entry (const char *item, int ignorecase)
 find the user login that matches pw_name or pw_gecos with provided item
MAPPER_EXTERN int compare_pw_entry (const char *item, struct passwd *pw, int ignorecase)
 Test if provided item matches pw_name or pw_gecos of provided password structure.

Define Documentation

Value:
static void mapper_module_end(void *context) {                          \
        free(context);                                                  \
        return;                                                         \
}                                                                       \

Macro for de-initialization routine.

Parameters:
contextMapper context

Definition at line 219 of file mapper.h.

Value:
static char ** mapper_find_entries(X509 *x509, void *context) {         \
        return NULL;                                                    \
}

Default macro for locate certificate entry.

Provided as sample for debugging, not for real user

Parameters:
x509X509 Certificate
contextMapper context
Returns:
String array with up to 15 results or NULL if fail

Definition at line 174 of file mapper.h.

Value:
static char * mapper_find_user(X509 *x509,void *context,int *match) {           \
        if ( !x509 ) return NULL;                                       \
        *match = 1;                                                     \
        return "nobody";                                                \
}

Default macro for locating user.

Should not be used except for debugging, as allways returns "nobody"

Parameters:
x509X509 Certificate
contextMapper context
Returns:
Found user, or NULL

Definition at line 187 of file mapper.h.

Value:
mapper_module* mapper_module_init(scconf_block *blk,const char *name) { \
        mapper_module *pt= malloc(sizeof (mapper_module));              \
        if (!pt) return NULL;                                           \
        pt->name    = name;                                             \
        pt->context = NULL;                                             \
        pt->block   = blk;                                              \
        pt->dbg_level  = get_debug_level();                             \
        pt->entries = mapper_find_entries;                              \
        pt->finder  = mapper_find_user;                                 \
        pt->matcher = mapper_match_user;                                \
        pt->deinit  = mapper_module_end;                        \
        return pt;                                                      \
}                                                                       \

Macro for default init function.

Parameters:
blkMapper Configuration file block
nameName of this mapper
Returns:
pointer to mapper_module data, else NULL NOTE: mapper module data MUST BE defined in module

Definition at line 232 of file mapper.h.

Value:
static int mapper_match_user(X509 *x509, const char *login, void *context) { \
        int match = 0;                                                  \
        char *username= mapper_find_user(x509,context,&match);          \
        if (!x509) return -1;                                           \
        if (!login) return -1;                                          \
        if (!username) return 0; /*user not found*/                     \
        if ( ! strcmp(login,username) ) return 1; /* match user */      \
        return 0; /* no match */                                        \
}

Macro for match mapper function.

Parameters:
x509X509 Certificate
loginuser to match, or null to find user that matches certificate
contextMapper context
Returns:
1 on success; login points to matched user 0 on no match -1 on error

Definition at line 204 of file mapper.h.

#define MAPPER_EXTERN   extern

Definition at line 96 of file mapper.h.


Typedef Documentation

Structure to be filled on mapper module initialization.


Function Documentation

MAPPER_EXTERN int compare_pw_entry ( const char *  item,
struct passwd *  pw,
int  ignorecase 
)

Test if provided item matches pw_name or pw_gecos of provided password structure.

Parameters:
itemString to be compared
pwpassword entry to search into
ignorecaseFlag to check upper/lowercase in string comparisions
Returns:
1 on match, 0 on no match, -1 on error
MAPPER_EXTERN void end_mapent ( struct mapfile mfile)

Release a mapentry structure.

Parameters:
mfileMap file structure to be released
MAPPER_EXTERN int get_mapent ( struct mapfile mfile)

Retrieve next entry of given map file.

Parameters:
mfileMap file entry pointer
Returns:
1 on sucess, 0 on no more entries, -1 on error
MAPPER_EXTERN char* mapfile_find ( const char *  file,
char *  key,
int  ignorecase,
int *  match 
)

Try to map "key" to provided mapfile.

Parameters:
fileURL of map file
keyString to be mapped
ignorecaseFlag to indicate upper/lowercase ignore in string compare
matchSet to 1 for mapped string return, unmodified for key return
Returns:
key on no match, else a clone_str()'d of found mapping
MAPPER_EXTERN int mapfile_match ( const char *  file,
char *  key,
const char *  value,
int  ignorecase 
)

Try to match provided key to provided name by mean of a mapfile.

Parameters:
fileURL of map file
keyString to be mapped
valueString to be matched against mapped result
ignorecaseFlag to indicate upper/lowercase ignore in string compare
Returns:
1 on match, 0 on no match, -1 on process error
mapper_module* mapper_module_init ( scconf_block ctx,
const char *  mapper_name 
)

Initialize module and mapper_module_st structure.

EVERY mapper module MUST provide and export this function if dinamycally linked

Parameters:
ctxPointer to related configuration file context
mapper_nameName of this mapper. Used for multi-mapper modules
Returns:
Pointer to a mapper_module structure, or NULL if failed
MAPPER_EXTERN char* search_pw_entry ( const char *  item,
int  ignorecase 
)

find the user login that matches pw_name or pw_gecos with provided item

Parameters:
itemData to be searched from password database
ignorecaseFlag to check upper/lowercase in string comparisions
Returns:
userlogin if match found, else NULL
MAPPER_EXTERN struct mapfile* set_mapent ( const char *  uri) [read]

Initialize a mapper entry table.

Parameters:
uriUniversal Resource Locator of the file to be mapped
Returns:
A mapfile structure pointer or NULL