]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/netinet6/esp.h
xnu-3789.51.2.tar.gz
[apple/xnu.git] / bsd / netinet6 / esp.h
index 8add062e1f03812f1a4663d6644b66061d51f506..b2deaa2f3f95d29c99403ef459537935923247c1 100644 (file)
@@ -1,4 +1,33 @@
-/*     $KAME: esp.h,v 1.5 2000/02/22 14:04:15 itojun Exp $     */
+/*
+ * Copyright (c) 2008-2013 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ * 
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+/*     $FreeBSD: src/sys/netinet6/esp.h,v 1.2.2.2 2001/07/03 11:01:49 ume Exp $        */
+/*     $KAME: esp.h,v 1.16 2000/10/18 21:28:00 itojun Exp $    */
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -35,8 +64,8 @@
 
 #ifndef _NETINET6_ESP_H_
 #define _NETINET6_ESP_H_
+#include <sys/appleapiopts.h>
 
-#include <netkey/keydb.h>              /* for struct secas */
 
 struct esp {
        u_int32_t       esp_spi;        /* ESP */
@@ -66,41 +95,45 @@ struct esptail {
        /*variable size, 32bit bound*/  /* Authentication data (new IPsec)*/
 };
 
-struct esp_algorithm_state {
-       struct secasvar *sav;
-       void* foo;      /*per algorithm data - maybe*/
-};
+#ifdef BSD_KERNEL_PRIVATE
+struct secasvar;
 
-/* XXX yet to be defined */
 struct esp_algorithm {
        size_t padbound;        /* pad boundary, in byte */
-       int (*mature) __P((struct secasvar *));
+       int ivlenval;           /* iv length, in byte */
+       int (*mature)(struct secasvar *);
        int keymin;     /* in bits */
        int keymax;     /* in bits */
-       int (*ivlen) __P((struct secasvar *));
-       int (*decrypt) __P((struct mbuf *, size_t,
-               struct secasvar *, struct esp_algorithm *, int));
-       int (*encrypt) __P((struct mbuf *, size_t, size_t,
-               struct secasvar *, struct esp_algorithm *, int));
+       int (*schedlen)(const struct esp_algorithm *);
+       const char *name;
+       int (*ivlen)(const struct esp_algorithm *, struct secasvar *);
+       int (*decrypt)(struct mbuf *, size_t,
+               struct secasvar *, const struct esp_algorithm *, int);
+       int (*encrypt)(struct mbuf *, size_t, size_t,
+               struct secasvar *, const struct esp_algorithm *, int);
+       /* not supposed to be called directly */
+       int (*schedule)(const struct esp_algorithm *, struct secasvar *);
+       int (*blockdecrypt)(const struct esp_algorithm *,
+               struct secasvar *, u_int8_t *, u_int8_t *);
+       int (*blockencrypt)(const struct esp_algorithm *,
+               struct secasvar *, u_int8_t *, u_int8_t *);
+       /* For Authenticated Encryption Methods */
+       size_t icvlen;
+       int (*finalizedecrypt)(struct secasvar *, u_int8_t *, uint);
+       int (*finalizeencrypt)(struct secasvar *, u_int8_t *, uint);
 };
 
-#if KERNEL
-extern struct esp_algorithm esp_algorithms[];
+extern const struct esp_algorithm *esp_algorithm_lookup(int);
+extern int esp_max_ivlen(void);
 
 /* crypt routines */
-extern int esp4_output __P((struct mbuf *, struct ipsecrequest *));
-extern void esp4_input __P((struct mbuf *, int off));
-extern size_t esp_hdrsiz __P((struct ipsecrequest *));
+extern int esp4_output(struct mbuf *, struct secasvar *);
+extern void esp4_input(struct mbuf *, int off);
+extern size_t esp_hdrsiz(struct ipsecrequest *);
 
-#if INET6
-extern int esp6_output __P((struct mbuf *, u_char *, struct mbuf *,
-       struct ipsecrequest *));
-extern int esp6_input __P((struct mbuf **, int *, int));
-#endif /* INET6 */
-#endif /*KERNEL*/
-
-struct secasvar;
-extern int esp_auth __P((struct mbuf *, size_t, size_t,
-       struct secasvar *, u_char *));
+extern int esp_schedule(const struct esp_algorithm *, struct secasvar *);
+extern int esp_auth(struct mbuf *, size_t, size_t,
+       struct secasvar *, u_char *);
+#endif /* BSD_KERNEL_PRIVATE */
 
-#endif /*_NETINET6_ESP_H_*/
+#endif /* _NETINET6_ESP_H_ */