ircu2/include/ircd_crypt.h

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 */