Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/net80211/ieee80211_crypto_gcm.h
39475 views
1
/*-
2
* SPDX-License-Identifier: BSD-2-Clause
3
*
4
* Copyright (c) 2012, Jouni Malinen <[email protected]>
5
* All rights reserved.
6
*
7
* Galois/Counter Mode (GCM) and GMAC with AES
8
*
9
* Redistribution and use in source and binary forms, with or without
10
* modification, are permitted provided that the following conditions
11
* are met:
12
* 1. Redistributions of source code must retain the above copyright
13
* notice, this list of conditions and the following disclaimer.
14
* 2. Redistributions in binary form must reproduce the above copyright
15
* notice, this list of conditions and the following disclaimer in the
16
* documentation and/or other materials provided with the distribution.
17
*
18
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
*/
29
#ifndef __IEEE80211_CRYPTO_GCM_H__
30
#define __IEEE80211_CRYPTO_GCM_H__
31
32
#if defined(__KERNEL__) || defined(_KERNEL)
33
34
#include <crypto/rijndael/rijndael.h>
35
36
#define AES_BLOCK_LEN 16
37
38
/*
39
* buffer is 2x the AES_BLOCK_LEN, but the AAD contents may be variable
40
* and are padded.
41
*/
42
#define GCM_AAD_LEN (AES_BLOCK_LEN * 2)
43
44
/* GCMP is always 128 bit / 16 byte MIC */
45
#define GCMP_MIC_LEN 16
46
47
void ieee80211_crypto_aes_gcm_ae(rijndael_ctx *aes, const uint8_t *iv,
48
size_t iv_len, const uint8_t *plain, size_t plain_len,
49
const uint8_t *aad, size_t aad_len, uint8_t *crypt, uint8_t *tag);
50
51
int ieee80211_crypto_aes_gcm_ad(rijndael_ctx *aes, const uint8_t *iv,
52
size_t iv_len, const uint8_t *crypt, size_t crypt_len,
53
const uint8_t *aad, size_t aad_len, const uint8_t *tag,
54
uint8_t *plain);
55
56
#endif /* __KERNEL__ */
57
58
#endif /* __IEEE80211_CRYPTO_GCM_H__ */
59
60