Return to algorithm.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / ipsec-tools / src / racoon |
1.1 ! misho 1: /* $NetBSD: algorithm.h,v 1.5 2006/10/06 12:02:27 manu Exp $ */ ! 2: ! 3: /* Id: algorithm.h,v 1.10 2005/04/09 16:25:23 manubsd Exp */ ! 4: ! 5: /* ! 6: * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. ! 7: * All rights reserved. ! 8: * ! 9: * Redistribution and use in source and binary forms, with or without ! 10: * modification, are permitted provided that the following conditions ! 11: * are met: ! 12: * 1. Redistributions of source code must retain the above copyright ! 13: * notice, this list of conditions and the following disclaimer. ! 14: * 2. Redistributions in binary form must reproduce the above copyright ! 15: * notice, this list of conditions and the following disclaimer in the ! 16: * documentation and/or other materials provided with the distribution. ! 17: * 3. Neither the name of the project nor the names of its contributors ! 18: * may be used to endorse or promote products derived from this software ! 19: * without specific prior written permission. ! 20: * ! 21: * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND ! 22: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ! 23: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! 24: * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE ! 25: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! 26: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ! 27: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ! 28: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ! 29: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ! 30: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ! 31: * SUCH DAMAGE. ! 32: */ ! 33: ! 34: #ifndef _ALGORITHM_H ! 35: #define _ALGORITHM_H ! 36: ! 37: #include <gnuc.h> ! 38: ! 39: /* algorithm class */ ! 40: enum { ! 41: algclass_ipsec_enc, ! 42: algclass_ipsec_auth, ! 43: algclass_ipsec_comp, ! 44: algclass_isakmp_enc, ! 45: algclass_isakmp_hash, ! 46: algclass_isakmp_dh, ! 47: algclass_isakmp_ameth, /* authentication method. */ ! 48: #define MAXALGCLASS 7 ! 49: }; ! 50: ! 51: #define ALG_DEFAULT_KEYLEN 64 ! 52: ! 53: #define ALGTYPE_NOTHING 0 ! 54: ! 55: /* algorithm type */ ! 56: enum algtype { ! 57: algtype_nothing = 0, ! 58: ! 59: /* enc */ ! 60: algtype_des_iv64, ! 61: algtype_des, ! 62: algtype_3des, ! 63: algtype_rc5, ! 64: algtype_idea, ! 65: algtype_cast128, ! 66: algtype_blowfish, ! 67: algtype_3idea, ! 68: algtype_des_iv32, ! 69: algtype_rc4, ! 70: algtype_null_enc, ! 71: algtype_aes, ! 72: algtype_twofish, ! 73: algtype_camellia, ! 74: ! 75: /* ipsec auth */ ! 76: algtype_hmac_md5, ! 77: algtype_hmac_sha1, ! 78: algtype_des_mac, ! 79: algtype_kpdk, ! 80: algtype_non_auth, ! 81: algtype_hmac_sha2_256, ! 82: algtype_hmac_sha2_384, ! 83: algtype_hmac_sha2_512, ! 84: ! 85: /* ipcomp */ ! 86: algtype_oui, ! 87: algtype_deflate, ! 88: algtype_lzs, ! 89: ! 90: /* hash */ ! 91: algtype_md5, ! 92: algtype_sha1, ! 93: algtype_tiger, ! 94: algtype_sha2_256, ! 95: algtype_sha2_384, ! 96: algtype_sha2_512, ! 97: ! 98: /* dh_group */ ! 99: algtype_modp768, ! 100: algtype_modp1024, ! 101: algtype_ec2n155, ! 102: algtype_ec2n185, ! 103: algtype_modp1536, ! 104: algtype_modp2048, ! 105: algtype_modp3072, ! 106: algtype_modp4096, ! 107: algtype_modp6144, ! 108: algtype_modp8192, ! 109: ! 110: /* authentication method. */ ! 111: algtype_psk, ! 112: algtype_dsssig, ! 113: algtype_rsasig, ! 114: algtype_rsaenc, ! 115: algtype_rsarev, ! 116: algtype_gssapikrb, ! 117: #ifdef ENABLE_HYBRID ! 118: algtype_hybrid_rsa_s, ! 119: algtype_hybrid_dss_s, ! 120: algtype_hybrid_rsa_c, ! 121: algtype_hybrid_dss_c, ! 122: algtype_xauth_psk_s, ! 123: algtype_xauth_psk_c, ! 124: algtype_xauth_rsa_s, ! 125: algtype_xauth_rsa_c, ! 126: #endif ! 127: }; ! 128: ! 129: struct hmac_algorithm { ! 130: char *name; ! 131: int type; ! 132: int doi; ! 133: caddr_t (*init) __P((vchar_t *)); ! 134: void (*update) __P((caddr_t, vchar_t *)); ! 135: vchar_t *(*final) __P((caddr_t)); ! 136: int (*hashlen) __P((void)); ! 137: vchar_t *(*one) __P((vchar_t *, vchar_t *)); ! 138: }; ! 139: ! 140: struct hash_algorithm { ! 141: char *name; ! 142: int type; ! 143: int doi; ! 144: caddr_t (*init) __P((void)); ! 145: void (*update) __P((caddr_t, vchar_t *)); ! 146: vchar_t *(*final) __P((caddr_t)); ! 147: int (*hashlen) __P((void)); ! 148: vchar_t *(*one) __P((vchar_t *)); ! 149: }; ! 150: ! 151: struct enc_algorithm { ! 152: char *name; ! 153: int type; ! 154: int doi; ! 155: int blocklen; ! 156: vchar_t *(*encrypt) __P((vchar_t *, vchar_t *, vchar_t *)); ! 157: vchar_t *(*decrypt) __P((vchar_t *, vchar_t *, vchar_t *)); ! 158: int (*weakkey) __P((vchar_t *)); ! 159: int (*keylen) __P((int)); ! 160: }; ! 161: ! 162: /* dh group */ ! 163: struct dh_algorithm { ! 164: char *name; ! 165: int type; ! 166: int doi; ! 167: struct dhgroup *dhgroup; ! 168: }; ! 169: ! 170: /* ipcomp, auth meth, dh group */ ! 171: struct misc_algorithm { ! 172: char *name; ! 173: int type; ! 174: int doi; ! 175: }; ! 176: ! 177: extern int alg_oakley_hashdef_ok __P((int)); ! 178: extern int alg_oakley_hashdef_doi __P((int)); ! 179: extern int alg_oakley_hashdef_hashlen __P((int)); ! 180: extern vchar_t *alg_oakley_hashdef_one __P((int, vchar_t *)); ! 181: ! 182: extern int alg_oakley_hmacdef_doi __P((int)); ! 183: extern vchar_t *alg_oakley_hmacdef_one __P((int, vchar_t *, vchar_t *)); ! 184: ! 185: extern int alg_oakley_encdef_ok __P((int)); ! 186: extern int alg_oakley_encdef_doi __P((int)); ! 187: extern int alg_oakley_encdef_keylen __P((int, int)); ! 188: extern int alg_oakley_encdef_blocklen __P((int)); ! 189: extern vchar_t *alg_oakley_encdef_decrypt __P((int, vchar_t *, vchar_t *, vchar_t *)); ! 190: extern vchar_t *alg_oakley_encdef_encrypt __P((int, vchar_t *, vchar_t *, vchar_t *)); ! 191: ! 192: extern int alg_ipsec_encdef_doi __P((int)); ! 193: extern int alg_ipsec_encdef_keylen __P((int, int)); ! 194: ! 195: extern int alg_ipsec_hmacdef_doi __P((int)); ! 196: extern int alg_ipsec_hmacdef_hashlen __P((int)); ! 197: ! 198: extern int alg_ipsec_compdef_doi __P((int)); ! 199: ! 200: extern int alg_oakley_dhdef_doi __P((int)); ! 201: extern int alg_oakley_dhdef_ok __P((int)); ! 202: extern struct dhgroup *alg_oakley_dhdef_group __P((int)); ! 203: ! 204: extern int alg_oakley_authdef_doi __P((int)); ! 205: ! 206: extern int default_keylen __P((int, int)); ! 207: extern int check_keylen __P((int, int, int)); ! 208: extern int algtype2doi __P((int, int)); ! 209: extern int algclass2doi __P((int)); ! 210: ! 211: extern const char *alg_oakley_encdef_name __P((int)); ! 212: extern const char *alg_oakley_hashdef_name __P((int)); ! 213: extern const char *alg_oakley_dhdef_name __P((int)); ! 214: extern const char *alg_oakley_authdef_name __P((int)); ! 215: ! 216: #endif /* _ALGORITHM_H */