#ifndef _ALGORITHM_H
#define _ALGORITHM_H
#include "Algorithm_types.h"
struct hmac_algorithm {
char *name;
int type;
int doi;
caddr_t (*init) (vchar_t *);
void (*update) (caddr_t, vchar_t *);
vchar_t *(*final) (caddr_t);
int (*hashlen) (void);
vchar_t *(*one) (vchar_t *, vchar_t *);
};
struct hash_algorithm {
char *name;
int type;
int doi;
caddr_t (*init) (void);
void (*update) (caddr_t, vchar_t *);
vchar_t *(*final) (caddr_t);
int (*hashlen) (void);
vchar_t *(*one) (vchar_t *);
};
struct enc_algorithm {
char *name;
int type;
int doi;
int blocklen;
vchar_t *(*encrypt) (vchar_t *, vchar_t *, vchar_t *);
vchar_t *(*decrypt) (vchar_t *, vchar_t *, vchar_t *);
int (*weakkey) (vchar_t *);
int (*keylen) (int);
};
struct dh_algorithm {
char *name;
int type;
int doi;
struct dhgroup *dhgroup;
};
struct misc_algorithm {
char *name;
int type;
int doi;
};
extern int alg_oakley_hashdef_ok (int);
extern int alg_oakley_hashdef_doi (int);
extern int alg_oakley_hashdef_hashlen (int);
extern vchar_t *alg_oakley_hashdef_one (int, vchar_t *);
extern int alg_oakley_hmacdef_doi (int);
extern vchar_t *alg_oakley_hmacdef_one (int, vchar_t *, vchar_t *);
extern int alg_oakley_encdef_ok (int);
extern int alg_oakley_encdef_doi (int);
extern int alg_oakley_encdef_keylen (int, int);
extern int alg_oakley_encdef_blocklen (int);
extern vchar_t *alg_oakley_encdef_decrypt (int, vchar_t *, vchar_t *, vchar_t *);
extern vchar_t *alg_oakley_encdef_encrypt (int, vchar_t *, vchar_t *, vchar_t *);
extern int alg_ipsec_encdef_doi (int);
extern int alg_ipsec_encdef_keylen (int, int);
extern int alg_ipsec_hmacdef_doi (int);
extern int alg_ipsec_hmacdef_hashlen (int);
extern int alg_ipsec_compdef_doi (int);
extern int alg_oakley_dhdef_doi (int);
extern int alg_oakley_dhdef_ok (int);
extern struct dhgroup *alg_oakley_dhdef_group (int);
extern int alg_oakley_authdef_doi (int);
extern int default_keylen (int, int);
extern int check_keylen (int, int, int);
extern int algtype2doi (int, int);
extern int algclass2doi (int);
extern const char *alg_oakley_encdef_name (int);
extern const char *alg_oakley_hashdef_name (int);
extern const char *alg_oakley_dhdef_name (int);
extern const char *alg_oakley_authdef_name (int);
#endif