72 lines
2.3 KiB
C
72 lines
2.3 KiB
C
/*
|
|
* IRC - Internet Relay Chat, include/ircd_crypt.h
|
|
* Copyright (C) 2002 hikari
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 1, or (at your option)
|
|
* any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*/
|
|
/** @file
|
|
* @brief Core password encryption and hashing APIs.
|
|
* @version $Id: ircd_crypt.h 1264 2004-11-07 21:04:59Z entrope $
|
|
*/
|
|
#ifndef INCLUDED_ircd_crypt_h
|
|
#define INCLUDED_ircd_crypt_h
|
|
|
|
/* forward planning for modularisation */
|
|
struct crypt_mech_s {
|
|
char* mechname; /* name of the mechanism */
|
|
char* shortname; /* short name of the module */
|
|
char* description; /* description of the mechanism */
|
|
|
|
const char* (*crypt_function)(const char *, const char *);
|
|
/* pointer to the crypt function */
|
|
|
|
char* crypt_token; /* what identifies a password string
|
|
as belonging to this mechanism */
|
|
|
|
int crypt_token_size; /* how long is the token */
|
|
};
|
|
|
|
typedef struct crypt_mech_s crypt_mech_t;
|
|
|
|
struct crypt_mechs_s;
|
|
typedef struct crypt_mechs_s crypt_mechs_t;
|
|
|
|
struct crypt_mechs_s {
|
|
crypt_mech_t* mech;
|
|
crypt_mechs_t* next;
|
|
crypt_mechs_t* prev;
|
|
};
|
|
|
|
/* access macros */
|
|
#define MechName(x) x->mechname
|
|
#define ShortName(x) x->shortname
|
|
#define Description(x) x->description
|
|
#define CryptFunc(x) x->crypt_function
|
|
#define CryptTok(x) x->crypt_token
|
|
#define CryptTokSize(x) x->crypt_token_size
|
|
|
|
/* exported functions */
|
|
extern void ircd_crypt_init(void);
|
|
extern char* ircd_crypt(const char* key, const char* salt);
|
|
extern int ircd_crypt_register_mech(crypt_mech_t* mechanism);
|
|
extern int ircd_crypt_unregister_mech(crypt_mech_t* mechanism);
|
|
extern int oper_password_match(const char* to_match, const char* passwd);
|
|
|
|
/* exported variables */
|
|
extern crypt_mechs_t* crypt_mechs_root;
|
|
|
|
#endif /* INCLUDED_ircd_crypt_h */
|
|
|