| pam_pkcs11
    0.6.8
    | 
#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 _DEFAULT_MAPPER_END | 
| #define _DEFAULT_MAPPER_FIND_ENTRIES | 
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
| x509 | X509 Certificate | 
| context | Mapper context | 
| #define _DEFAULT_MAPPER_FIND_USER | 
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"
| x509 | X509 Certificate | 
| context | Mapper context | 
| #define _DEFAULT_MAPPER_INIT | 
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.
| blk | Mapper Configuration file block | 
| name | Name of this mapper | 
| #define _DEFAULT_MAPPER_MATCH_USER | 
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.
| x509 | X509 Certificate | 
| login | user to match, or null to find user that matches certificate | 
| context | Mapper context | 
| #define MAPPER_EXTERN extern | 
| typedef struct mapper_module_st mapper_module | 
Structure to be filled on mapper module initialization.
| 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.
| item | String to be compared | 
| pw | password entry to search into | 
| ignorecase | Flag to check upper/lowercase in string comparisions | 
| MAPPER_EXTERN void end_mapent | ( | struct mapfile * | mfile | ) | 
Release a mapentry structure.
| mfile | Map file structure to be released | 
| MAPPER_EXTERN int get_mapent | ( | struct mapfile * | mfile | ) | 
Retrieve next entry of given map file.
| mfile | Map file entry pointer | 
| MAPPER_EXTERN char* mapfile_find | ( | const char * | file, | 
| char * | key, | ||
| int | ignorecase, | ||
| int * | match | ||
| ) | 
Try to map "key" to provided mapfile.
| 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 | 
| 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.
| 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 | 
| 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
| ctx | Pointer to related configuration file context | 
| mapper_name | Name of this mapper. Used for multi-mapper modules | 
| 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
| item | Data to be searched from password database | 
| ignorecase | Flag to check upper/lowercase in string comparisions | 
| MAPPER_EXTERN struct mapfile* set_mapent | ( | const char * | uri | ) |  [read] | 
Initialize a mapper entry table.
| uri | Universal Resource Locator of the file to be mapped | 
 1.7.6.1
 1.7.6.1