aboutsummaryrefslogtreecommitdiff
path: root/include/net/ah.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/ah.h')
-rw-r--r--include/net/ah.h30
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