X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;ds=sidebyside;f=include%2Fnet%2Fesp.h;h=d58451331dbde8a0d9b4231a61bd4957f62cdeec;hb=9d2a3f31d6d7832cd441eeda08bc2266cdd5d972;hp=064366d66eead993061d9752958b2d4ee739e3c1;hpb=07d4ee583e21830ec5604d31f65cdc60a6eca19e;p=safe%2Fjmp%2Flinux-2.6 diff --git a/include/net/esp.h b/include/net/esp.h index 064366d..d584513 100644 --- a/include/net/esp.h +++ b/include/net/esp.h @@ -1,64 +1,25 @@ #ifndef _NET_ESP_H #define _NET_ESP_H -#include -#include -#include +#include -#define ESP_NUM_FAST_SG 4 +struct crypto_aead; -struct esp_data -{ - struct scatterlist sgbuf[ESP_NUM_FAST_SG]; - - /* Confidentiality */ - struct { - u8 *key; /* Key */ - int key_len; /* Key length */ - u8 *ivec; /* ivec buffer */ - /* ivlen is offset from enc_data, where encrypted data start. - * It is logically different of crypto_tfm_alg_ivsize(tfm). - * We assume that it is either zero (no ivec), or - * >= crypto_tfm_alg_ivsize(tfm). */ - int ivlen; - int padlen; /* 0..255 */ - struct crypto_blkcipher *tfm; /* crypto handle */ - } conf; +struct esp_data { + /* 0..255 */ + int padlen; - /* Integrity. It is active when icv_full_len != 0 */ - struct { - u8 *key; /* Key */ - int key_len; /* Length of the key */ - u8 *work_icv; - int icv_full_len; - int icv_trunc_len; - void (*icv)(struct esp_data*, - struct sk_buff *skb, - int offset, int len, u8 *icv); - struct crypto_hash *tfm; - } auth; + /* Confidentiality & Integrity */ + struct crypto_aead *aead; }; -extern int skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len); -extern int skb_cow_data(struct sk_buff *skb, int tailbits, struct sk_buff **trailer); extern void *pskb_put(struct sk_buff *skb, struct sk_buff *tail, int len); -static inline int esp_mac_digest(struct esp_data *esp, struct sk_buff *skb, - int offset, int len) -{ - struct hash_desc desc; - int err; +struct ip_esp_hdr; - desc.tfm = esp->auth.tfm; - desc.flags = 0; - - err = crypto_hash_init(&desc); - if (unlikely(err)) - return err; - err = skb_icv_walk(skb, &desc, offset, len, crypto_hash_update); - if (unlikely(err)) - return err; - return crypto_hash_final(&desc, esp->auth.work_icv); +static inline struct ip_esp_hdr *ip_esp_hdr(const struct sk_buff *skb) +{ + return (struct ip_esp_hdr *)skb_transport_header(skb); } #endif