^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright 2002-2004, Instant802 Networks, Inc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #ifndef TKIP_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #define TKIP_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/crypto.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include "key.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) int ieee80211_tkip_encrypt_data(struct arc4_ctx *ctx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) struct ieee80211_key *key,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) struct sk_buff *skb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) u8 *payload, size_t payload_len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) enum {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) TKIP_DECRYPT_OK = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) TKIP_DECRYPT_NO_EXT_IV = -1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) TKIP_DECRYPT_INVALID_KEYIDX = -2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) TKIP_DECRYPT_REPLAY = -3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) int ieee80211_tkip_decrypt_data(struct arc4_ctx *ctx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) struct ieee80211_key *key,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) u8 *payload, size_t payload_len, u8 *ta,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) u8 *ra, int only_iv, int queue,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) u32 *out_iv32, u16 *out_iv16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #endif /* TKIP_H */