pam_pkcs11 0.6.8

- Main Page
- Data Structures
- Files
- Directories

- File List
- Globals

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_module * | mapper_module_init (scconf_block *ctx, const char *mapper_name)
| Initialize module and mapper_module_st structure.
MAPPER_EXTERN struct mapfile * | set_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

#define _DEFAULT_MAPPER_END

Value:

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

Macro for de-initialization routine.

Parameters:

  context | Mapper context

Definition at line 219 of file mapper.h.

#define _DEFAULT_MAPPER_FIND_ENTRIES

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:

  x509 | X509 Certificate
  context | Mapper context

Returns:
  String array with up to 15 results or NULL if fail

Definition at line 174 of file mapper.h.

#define _DEFAULT_MAPPER_FIND_USER

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:

  x509 | X509 Certificate
  context | Mapper context

Returns:
  Found user, or NULL

Definition at line 187 of file mapper.h.

#define _DEFAULT_MAPPER_INIT

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:

  blk | Mapper Configuration file block
  name | Name 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.

#define _DEFAULT_MAPPER_MATCH_USER

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:

  x509 | X509 Certificate
  login | user to match, or null to find user that matches certificate
  context | Mapper 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

typedef struct mapper_module_st mapper_module

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:

  item | String to be compared
  pw | password entry to search into
  ignorecase | Flag 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:

  mfile | Map file structure to be released

MAPPER_EXTERN int get_mapent | ( | struct mapfile * | mfile | ) |

Retrieve next entry of given map file.

Parameters:

  mfile | Map 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:

  file | URL of map file
  key | String to be mapped
  ignorecase | Flag to indicate upper/lowercase ignore in string compare
  match | Set 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:

  file | URL of map file
  key | String to be mapped
  value | String to be matched against mapped result
  ignorecase | Flag 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:

  ctx | Pointer to related configuration file context
  mapper_name | Name 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:

  item | Data to be searched from password database
  ignorecase | Flag 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:

  uri | Universal Resource Locator of the file to be mapped

Returns:
  A mapfile structure pointer or NULL