⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scod.h

📁 这是一个完全开放的
💻 H
字号:
/* * scod - a minimal sasl implementation for jabberd2 * Copyright (c) 2003 Robert Norris * * 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 2 of the License, 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., 59 Temple Place, Suite 330, Boston, MA02111-1307USA */#ifndef INCL_SCOD_H#define INCL_SCOD_H#include "util/util.h"typedef struct _scod_ctx_st     *scod_ctx_t;typedef struct _scod_st         *scod_t;typedef struct _scod_mech_st    *scod_mech_t;#define sd_cb_GET_PASS                  (0x00)#define sd_cb_CHECK_PASS                (0x01)#define sd_cb_CHECK_AUTHZID             (0x02)#define sd_cb_DIGEST_MD5_CHOOSE_REALM   (0x03)#define sd_cb_ANONYMOUS_GEN_AUTHZID     (0x04)typedef int (*scod_callback_t)(scod_t sd, int cb, void *arg, void **res, void *cbarg);typedef struct _scod_cb_creds_st {    char        *authnid;    char        *realm;    char        *pass;    char        *authzid;} *scod_cb_creds_t;struct _scod_ctx_st {    scod_callback_t cb;    void            *cbarg;    scod_mech_t     *mechs;    int             nmechs;    char            **names;};typedef enum {    sd_type_NONE = 0,    sd_type_CLIENT = 1,    sd_type_SERVER = 2} scod_type_t;struct _scod_st {    scod_ctx_t      ctx;    scod_type_t     type;    scod_mech_t     mech;    void            *mech_data;    char            *authzid;    char            *authnid;    char            *pass;    char            *realm;    int             authd;    int             failed;    void            *app_private;};#define sd_flag_CHECK_PASS      (0x01)#define sd_flag_GET_PASS        (0x02)struct _scod_mech_st {    scod_ctx_t      ctx;    void            *private;    char            *name;    int             flags;    int             (*client_start)(scod_mech_t mech, scod_t sd, char **resp, int *resplen);    int             (*client_step)(scod_mech_t mech, scod_t sd, const char *chal, int challen, char **resp, int *resplen);    int             (*server_start)(scod_mech_t mech, scod_t sd, const char *resp, int resplen, char **chal, int *challen);    int             (*server_step)(scod_mech_t mech, scod_t sd, const char *resp, int resplen, char **chal, int *challen);    int             (*encode)(scod_mech_t mech, scod_t sd, const char *in, int inlen, char **out, char *outlen);    int             (*decode)(scod_mech_t mech, scod_t sd, const char *in, int inlen, char **out, char *outlen);    void            (*free)(scod_mech_t mech);};typedef int (*scod_mech_init_fn)(scod_mech_t);scod_ctx_t  scod_ctx_new(scod_callback_t cb, void *cbarg);void        scod_ctx_free(scod_ctx_t ctx);int         scod_mech_flags(scod_ctx_t ctx, char *name);scod_t      scod_new(scod_ctx_t ctx, scod_type_t type);void        scod_free(scod_t sd);int         scod_client_start(scod_t sd, char *name, char *authzid, char *authnid, char *pass, char **resp, int *resplen);int         scod_client_step(scod_t sd, const char *chal, int challen, char **resp, int *resplen);int         scod_server_start(scod_t sd, char *name, char *realm, const char *resp, int resplen, char **chal, int *challen);int         scod_server_step(scod_t sd, const char *resp, int resplen, char **chal, int *challen);int         scod_sasl_encode(scod_t sd, const char *in, int inlen, char **out, char *outlen);int         scod_sasl_decode(scod_t sd, const char *in, int inlen, char **out, char *outlen);#define sd_SUCCESS                  (0x00)#define sd_CONTINUE                 (0x01)#define sd_err_NOT_IMPLEMENTED      (0x10)#define sd_err_IN_PROGRESS          (0x11)#define sd_err_WRONG_TYPE           (0x12)#define sd_err_UNKNOWN_MECH         (0x13)#define sd_err_COMPLETED            (0x14)#define sd_err_OPTS_REQUIRED        (0x15)#define sd_err_MASK                 (0x10)#define sd_auth_USER_UNKNOWN        (0x20)#define sd_auth_AUTH_FAILED         (0x21)#define sd_auth_MALFORMED_DATA      (0x22)#define sd_auth_AUTHZID_REQUIRED    (0x23)#define sd_auth_MISMATCH            (0x24)#define sd_auth_NOT_OFFERED         (0x25)#define sd_auth_AUTHZID_POLICY      (0x26)#define sd_auth_MASK                (0x20)#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -