File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / ipsec-tools / src / racoon / oakley.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 22:39:10 2012 UTC (12 years, 4 months ago) by misho
Branches: ipsec-tools, MAIN
CVS tags: v0_8_2p2, v0_8_1p0, v0_8_1, v0_8_0p0, v0_8_0, HEAD
ipsec-tools

    1: /*	$NetBSD: oakley.h,v 1.7 2009/03/12 10:57:26 tteras Exp $	*/
    2: 
    3: /* Id: oakley.h,v 1.13 2005/05/30 20:12:43 fredsen 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 _OAKLEY_H
   35: #define _OAKLEY_H
   36: 
   37: #include "vmbuf.h"
   38: 
   39: /* refer to RFC 2409 */
   40: 
   41: /* Attribute Classes */
   42: #define OAKLEY_ATTR_ENC_ALG		1 /* B */
   43: #define   OAKLEY_ATTR_ENC_ALG_DES		1
   44: #define   OAKLEY_ATTR_ENC_ALG_IDEA		2
   45: #define   OAKLEY_ATTR_ENC_ALG_BLOWFISH		3
   46: #define   OAKLEY_ATTR_ENC_ALG_RC5		4
   47: #define   OAKLEY_ATTR_ENC_ALG_3DES		5
   48: #define   OAKLEY_ATTR_ENC_ALG_CAST		6
   49: #define   OAKLEY_ATTR_ENC_ALG_AES		7
   50: #define   OAKLEY_ATTR_ENC_ALG_CAMELLIA		8	
   51: 					/*	65001 - 65535 Private Use */
   52: #define OAKLEY_ATTR_HASH_ALG		2 /* B */
   53: #define   OAKLEY_ATTR_HASH_ALG_MD5		1
   54: #define   OAKLEY_ATTR_HASH_ALG_SHA		2
   55: #define   OAKLEY_ATTR_HASH_ALG_TIGER		3
   56: #if defined(WITH_SHA2)
   57: #define   OAKLEY_ATTR_HASH_ALG_SHA2_256		4
   58: #define   OAKLEY_ATTR_HASH_ALG_SHA2_384		5
   59: #define   OAKLEY_ATTR_HASH_ALG_SHA2_512		6
   60: #endif
   61: 					/*	65001 - 65535 Private Use */
   62: #define OAKLEY_ATTR_AUTH_METHOD		3 /* B */
   63: #define   OAKLEY_ATTR_AUTH_METHOD_PSKEY		1
   64: #define   OAKLEY_ATTR_AUTH_METHOD_DSSSIG	2
   65: #define   OAKLEY_ATTR_AUTH_METHOD_RSASIG	3
   66: #define   OAKLEY_ATTR_AUTH_METHOD_RSAENC	4
   67: #define   OAKLEY_ATTR_AUTH_METHOD_RSAREV	5
   68: #define   OAKLEY_ATTR_AUTH_METHOD_EGENC		6
   69: #define   OAKLEY_ATTR_AUTH_METHOD_EGREV		7
   70: 	/* Hybrid Auth */
   71: #ifdef ENABLE_HYBRID    
   72: #define   OAKLEY_ATTR_AUTH_METHOD_HYBRID_RSA_I	64221
   73: #define	  OAKLEY_ATTR_AUTH_METHOD_HYBRID_RSA_R	64222
   74: #define   OAKLEY_ATTR_AUTH_METHOD_HYBRID_DSS_I	64223
   75: #define   OAKLEY_ATTR_AUTH_METHOD_HYBRID_DSS_R	64224
   76: 
   77: 					/*	65001 - 65535 Private Use */
   78: 
   79:         /* Plain Xauth */
   80: #define OAKLEY_ATTR_AUTH_METHOD_XAUTH_PSKEY_I	65001
   81: #define OAKLEY_ATTR_AUTH_METHOD_XAUTH_PSKEY_R	65002
   82: #define OAKLEY_ATTR_AUTH_METHOD_XAUTH_DSSSIG_I	65003
   83: #define OAKLEY_ATTR_AUTH_METHOD_XAUTH_DSSSIG_R	65004
   84: #define OAKLEY_ATTR_AUTH_METHOD_XAUTH_RSASIG_I	65005
   85: #define OAKLEY_ATTR_AUTH_METHOD_XAUTH_RSASIG_R	65006
   86: #define OAKLEY_ATTR_AUTH_METHOD_XAUTH_RSAENC_I	65007
   87: #define OAKLEY_ATTR_AUTH_METHOD_XAUTH_RSAENC_R	65008
   88: #define OAKLEY_ATTR_AUTH_METHOD_XAUTH_RSAREV_I	65009
   89: #define OAKLEY_ATTR_AUTH_METHOD_XAUTH_RSAREV_R	65010
   90: #endif
   91: 
   92: /*
   93:  * The following are valid when the Vendor ID is one of
   94:  * the following:
   95:  *
   96:  *	MD5("A GSS-API Authentication Method for IKE")
   97:  *	MD5("GSSAPI") (recognized by Windows 2000)
   98:  *	MD5("MS NT5 ISAKMPOAKLEY") (sent by Windows 2000)
   99:  */
  100: 
  101: #define OAKLEY_ATTR_AUTH_METHOD_GSSAPI_KRB	(65001 + 0x10000)
  102: #define OAKLEY_ATTR_AUTH_METHOD_GSSAPI_KRB_REAL	65001
  103: 
  104: #define OAKLEY_ATTR_GRP_DESC		4 /* B */
  105: #define   OAKLEY_ATTR_GRP_DESC_MODP768		1
  106: #define   OAKLEY_ATTR_GRP_DESC_MODP1024		2
  107: #define   OAKLEY_ATTR_GRP_DESC_EC2N155		3
  108: #define   OAKLEY_ATTR_GRP_DESC_EC2N185		4
  109: #define   OAKLEY_ATTR_GRP_DESC_MODP1536		5
  110: #define   OAKLEY_ATTR_GRP_DESC_MODP2048		14
  111: #define   OAKLEY_ATTR_GRP_DESC_MODP3072		15
  112: #define   OAKLEY_ATTR_GRP_DESC_MODP4096		16
  113: #define   OAKLEY_ATTR_GRP_DESC_MODP6144		17
  114: #define   OAKLEY_ATTR_GRP_DESC_MODP8192		18
  115: 					/*	32768 - 65535 Private Use */
  116: #define OAKLEY_ATTR_GRP_TYPE		5 /* B */
  117: #define   OAKLEY_ATTR_GRP_TYPE_MODP		1
  118: #define   OAKLEY_ATTR_GRP_TYPE_ECP		2
  119: #define   OAKLEY_ATTR_GRP_TYPE_EC2N		3
  120: 					/*	65001 - 65535 Private Use */
  121: #define OAKLEY_ATTR_GRP_PI		6 /* V */
  122: #define OAKLEY_ATTR_GRP_GEN_ONE		7 /* V */
  123: #define OAKLEY_ATTR_GRP_GEN_TWO		8 /* V */
  124: #define OAKLEY_ATTR_GRP_CURVE_A		9 /* V */
  125: #define OAKLEY_ATTR_GRP_CURVE_B		10 /* V */
  126: #define OAKLEY_ATTR_SA_LD_TYPE		11 /* B */
  127: #define   OAKLEY_ATTR_SA_LD_TYPE_DEFAULT	1
  128: #define   OAKLEY_ATTR_SA_LD_TYPE_SEC		1
  129: #define   OAKLEY_ATTR_SA_LD_TYPE_KB		2
  130: #define   OAKLEY_ATTR_SA_LD_TYPE_MAX		3
  131: 					/*	65001 - 65535 Private Use */
  132: #define OAKLEY_ATTR_SA_LD		12 /* V */
  133: #define   OAKLEY_ATTR_SA_LD_SEC_DEFAULT		28800 /* 8 hours */
  134: #define OAKLEY_ATTR_PRF			13 /* B */
  135: #define OAKLEY_ATTR_KEY_LEN		14 /* B */
  136: #define OAKLEY_ATTR_FIELD_SIZE		15 /* B */
  137: #define OAKLEY_ATTR_GRP_ORDER		16 /* V */
  138: #define OAKLEY_ATTR_BLOCK_SIZE		17 /* B */
  139: 				/*	16384 - 32767 Private Use */
  140: 
  141: 	/*
  142: 	 * The following are valid when the Vendor ID is one of
  143: 	 * the following:
  144: 	 *
  145: 	 *	MD5("A GSS-API Authentication Method for IKE")
  146: 	 *	MD5("GSSAPI") (recognized by Windows 2000)
  147: 	 *	MD5("MS NT5 ISAKMPOAKLEY") (sent by Windows 2000)
  148: 	 */
  149: #define OAKLEY_ATTR_GSS_ID		16384
  150: 
  151: #define MAXPADLWORD	20
  152: 
  153: struct dhgroup {
  154: 	int type;
  155: 	vchar_t *prime;
  156: 	int gen1;
  157: 	int gen2;
  158: 	vchar_t *curve_a;
  159: 	vchar_t *curve_b;
  160: 	vchar_t *order;
  161: };
  162: 
  163: struct ph1handle;
  164: struct ph2handle;
  165: struct isakmp_ivm;
  166: 
  167: extern int oakley_get_defaultlifetime __P((void));
  168: 
  169: extern int oakley_dhinit __P((void));
  170: extern void oakley_dhgrp_free __P((struct dhgroup *));
  171: extern int oakley_dh_compute __P((const struct dhgroup *,
  172: 	vchar_t *, vchar_t *, vchar_t *, vchar_t **));
  173: extern int oakley_dh_generate __P((const struct dhgroup *,
  174: 	vchar_t **, vchar_t **));
  175: extern int oakley_setdhgroup __P((int, struct dhgroup **));
  176: 
  177: extern vchar_t *oakley_prf __P((vchar_t *, vchar_t *, struct ph1handle *));
  178: extern vchar_t *oakley_hash __P((vchar_t *, struct ph1handle *));
  179: 
  180: extern int oakley_compute_keymat __P((struct ph2handle *, int));
  181: 
  182: #if notyet
  183: extern vchar_t *oakley_compute_hashx __P((void));
  184: #endif
  185: extern vchar_t *oakley_compute_hash3 __P((struct ph1handle *,
  186: 	u_int32_t, vchar_t *));
  187: extern vchar_t *oakley_compute_hash1 __P((struct ph1handle *,
  188: 	u_int32_t, vchar_t *));
  189: extern vchar_t *oakley_ph1hash_common __P((struct ph1handle *, int));
  190: extern vchar_t *oakley_ph1hash_base_i __P((struct ph1handle *, int));
  191: extern vchar_t *oakley_ph1hash_base_r __P((struct ph1handle *, int));
  192: 
  193: extern int oakley_get_certtype __P((vchar_t *));
  194: extern int oakley_validate_auth __P((struct ph1handle *));
  195: extern int oakley_getmycert __P((struct ph1handle *));
  196: extern int oakley_getsign __P((struct ph1handle *));
  197: extern vchar_t *oakley_getcr __P((struct ph1handle *));
  198: extern struct payload_list *oakley_append_cr __P((struct payload_list *,
  199: 						  struct ph1handle *));
  200: extern int oakley_checkcr __P((struct ph1handle *));
  201: extern int oakley_needcr __P((int));
  202: struct isakmp_gen;
  203: extern int oakley_savecert __P((struct ph1handle *, struct isakmp_gen *));
  204: extern int oakley_savecr __P((struct ph1handle *, struct isakmp_gen *));
  205: 
  206: extern int oakley_skeyid __P((struct ph1handle *));
  207: extern int oakley_skeyid_dae __P((struct ph1handle *));
  208: 
  209: extern int oakley_compute_enckey __P((struct ph1handle *));
  210: extern int oakley_newiv __P((struct ph1handle *));
  211: extern struct isakmp_ivm *oakley_newiv2 __P((struct ph1handle *, u_int32_t));
  212: extern void oakley_delivm __P((struct isakmp_ivm *));
  213: extern vchar_t *oakley_do_decrypt __P((struct ph1handle *,
  214: 	vchar_t *, vchar_t *, vchar_t *));
  215: extern vchar_t *oakley_do_encrypt __P((struct ph1handle *,
  216: 	vchar_t *, vchar_t *, vchar_t *));
  217: 
  218: #endif /* _OAKLEY_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>