source: rtems-libbsd/ipsec-tools/src/racoon/algorithm.h @ ff36f5e

55-freebsd-126-freebsd-12
Last change on this file since ff36f5e was ff36f5e, checked in by Christian Mauderer <christian.mauderer@…>, on 05/30/18 at 12:27:35

Import ipsec-tools 0.8.2.

Import unchanged ipsec-tools sources in the release version 0.8.2. The
homepage of ipsec-tools is http://ipsec-tools.sourceforge.net/. The
sources can be obtained from there.

  • Property mode set to 100644
File size: 5.6 KB
Line 
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 */
40enum {
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 */
56enum 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
129struct 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
140struct 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
151struct 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 */
163struct dh_algorithm {
164        char *name;
165        int type;
166        int doi;
167        struct dhgroup *dhgroup;
168};
169
170/* ipcomp, auth meth, dh group */
171struct misc_algorithm {
172        char *name;
173        int type;
174        int doi;
175};
176
177extern int alg_oakley_hashdef_ok __P((int));
178extern int alg_oakley_hashdef_doi __P((int));
179extern int alg_oakley_hashdef_hashlen __P((int));
180extern vchar_t *alg_oakley_hashdef_one __P((int, vchar_t *));
181
182extern int alg_oakley_hmacdef_doi __P((int));
183extern vchar_t *alg_oakley_hmacdef_one __P((int, vchar_t *, vchar_t *));
184
185extern int alg_oakley_encdef_ok __P((int));
186extern int alg_oakley_encdef_doi __P((int));
187extern int alg_oakley_encdef_keylen __P((int, int));
188extern int alg_oakley_encdef_blocklen __P((int));
189extern vchar_t *alg_oakley_encdef_decrypt __P((int, vchar_t *, vchar_t *, vchar_t *));
190extern vchar_t *alg_oakley_encdef_encrypt __P((int, vchar_t *, vchar_t *, vchar_t *));
191
192extern int alg_ipsec_encdef_doi __P((int));
193extern int alg_ipsec_encdef_keylen __P((int, int));
194
195extern int alg_ipsec_hmacdef_doi __P((int));
196extern int alg_ipsec_hmacdef_hashlen __P((int));
197
198extern int alg_ipsec_compdef_doi __P((int));
199
200extern int alg_oakley_dhdef_doi __P((int));
201extern int alg_oakley_dhdef_ok __P((int));
202extern struct dhgroup *alg_oakley_dhdef_group __P((int));
203
204extern int alg_oakley_authdef_doi __P((int));
205
206extern int default_keylen __P((int, int));
207extern int check_keylen __P((int, int, int));
208extern int algtype2doi __P((int, int));
209extern int algclass2doi __P((int));
210
211extern const char *alg_oakley_encdef_name __P((int));
212extern const char *alg_oakley_hashdef_name __P((int));
213extern const char *alg_oakley_dhdef_name __P((int));
214extern const char *alg_oakley_authdef_name __P((int));
215
216#endif /* _ALGORITHM_H */
Note: See TracBrowser for help on using the repository browser.