diff options
Diffstat (limited to 'include/net/ah.h')
| -rw-r--r-- | include/net/ah.h | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/include/net/ah.h b/include/net/ah.h index ceff00afae0..ca95b98969d 100644 --- a/include/net/ah.h +++ b/include/net/ah.h @@ -1,35 +1,25 @@ #ifndef _NET_AH_H #define _NET_AH_H -#include <net/xfrm.h> +#include <linux/skbuff.h> /* This is the maximum truncated ICV length that we know of. */ -#define MAX_AH_AUTH_LEN 12 +#define MAX_AH_AUTH_LEN 64 -struct ah_data -{ - u8 *key; - int key_len; - u8 *work_icv; +struct crypto_ahash; + +struct ah_data { int icv_full_len; int icv_trunc_len; - void (*icv)(struct ah_data*, - struct sk_buff *skb, u8 *icv); - - struct crypto_tfm *tfm; + struct crypto_ahash *ahash; }; -static inline void -ah_hmac_digest(struct ah_data *ahp, struct sk_buff *skb, u8 *auth_data) -{ - struct crypto_tfm *tfm = ahp->tfm; +struct ip_auth_hdr; - memset(auth_data, 0, ahp->icv_trunc_len); - crypto_hmac_init(tfm, ahp->key, &ahp->key_len); - skb_icv_walk(skb, tfm, 0, skb->len, crypto_hmac_update); - crypto_hmac_final(tfm, ahp->key, &ahp->key_len, ahp->work_icv); - memcpy(auth_data, ahp->work_icv, ahp->icv_trunc_len); +static inline struct ip_auth_hdr *ip_auth_hdr(const struct sk_buff *skb) +{ + return (struct ip_auth_hdr *)skb_transport_header(skb); } #endif |
