aes_wrap.c File Reference

AES-based functions. More...

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "common.h"
#include "aes_wrap.h"
#include "crypto.h"
#include "aes.c"

Include dependency graph for aes_wrap.c:

Go to the source code of this file.

Defines

#define BLOCK_SIZE   16

Functions

int aes_wrap (const u8 *kek, int n, const u8 *plain, u8 *cipher)
 Wrap keys with AES Key Wrap Algorithm (128-bit KEK) (RFC3394).
int aes_unwrap (const u8 *kek, int n, const u8 *cipher, u8 *plain)
 Unwrap key with AES Key Wrap Algorithm (128-bit KEK) (RFC3394).
int omac1_aes_128 (const u8 *key, const u8 *data, size_t data_len, u8 *mac)
 One-Key CBC MAC (OMAC1) hash with AES-128.
int aes_128_encrypt_block (const u8 *key, const u8 *in, u8 *out)
 Perform one AES 128-bit block operation.
int aes_128_ctr_encrypt (const u8 *key, const u8 *nonce, u8 *data, size_t data_len)
 AES-128 CTR mode encryption.
int aes_128_eax_encrypt (const u8 *key, const u8 *nonce, size_t nonce_len, const u8 *hdr, size_t hdr_len, u8 *data, size_t data_len, u8 *tag)
 AES-128 EAX mode encryption.
int aes_128_eax_decrypt (const u8 *key, const u8 *nonce, size_t nonce_len, const u8 *hdr, size_t hdr_len, u8 *data, size_t data_len, const u8 *tag)
 AES-128 EAX mode decryption.
int aes_128_cbc_encrypt (const u8 *key, const u8 *iv, u8 *data, size_t data_len)
 AES-128 CBC encryption.
int aes_128_cbc_decrypt (const u8 *key, const u8 *iv, u8 *data, size_t data_len)
 AES-128 CBC decryption.


Detailed Description

AES-based functions.

Copyright
Copyright (c) 2003-2005, Jouni Malinen <[email protected]>
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.

Alternatively, this software may be distributed under the terms of BSD license.

See README and COPYING for more details.

Definition in file aes_wrap.c.


Function Documentation

int aes_128_cbc_decrypt const u8 *  key,
const u8 *  iv,
u8 *  data,
size_t  data_len
 

AES-128 CBC decryption.

Parameters:
key Decryption key
iv Decryption IV for CBC mode (16 bytes)
data Data to decrypt in-place
data_len Length of data in bytes (must be divisible by 16)
Returns:
0 on success, -1 on failure

Definition at line 441 of file aes_wrap.c.

Here is the call graph for this function:

int aes_128_cbc_encrypt const u8 *  key,
const u8 *  iv,
u8 *  data,
size_t  data_len
 

AES-128 CBC encryption.

Parameters:
key Encryption key
iv Encryption IV for CBC mode (16 bytes)
data Data to encrypt in-place
data_len Length of data in bytes (must be divisible by 16)
Returns:
0 on success, -1 on failure

Definition at line 407 of file aes_wrap.c.

Here is the call graph for this function:

int aes_128_ctr_encrypt const u8 *  key,
const u8 *  nonce,
u8 *  data,
size_t  data_len
 

AES-128 CTR mode encryption.

Parameters:
key Key for encryption (16 bytes)
nonce Nonce for counter mode (16 bytes)
data Data to encrypt in-place
data_len Length of data in bytes
Returns:
0 on success, -1 on failure

Definition at line 245 of file aes_wrap.c.

Here is the call graph for this function:

int aes_128_eax_decrypt const u8 *  key,
const u8 *  nonce,
size_t  nonce_len,
const u8 *  hdr,
size_t  hdr_len,
u8 *  data,
size_t  data_len,
const u8 *  tag
 

AES-128 EAX mode decryption.

Parameters:
key Key for decryption (16 bytes)
nonce Nonce for counter mode
nonce_len Nonce length in bytes
hdr Header data to be authenticity protected
hdr_len Length of the header data bytes
data Data to encrypt in-place
data_len Length of data in bytes
tag 16-byte tag value
Returns:
0 on success, -1 on failure, -2 if tag does not match

Definition at line 350 of file aes_wrap.c.

Here is the call graph for this function:

int aes_128_eax_encrypt const u8 *  key,
const u8 *  nonce,
size_t  nonce_len,
const u8 *  hdr,
size_t  hdr_len,
u8 *  data,
size_t  data_len,
u8 *  tag
 

AES-128 EAX mode encryption.

Parameters:
key Key for encryption (16 bytes)
nonce Nonce for counter mode
nonce_len Nonce length in bytes
hdr Header data to be authenticity protected
hdr_len Length of the header data bytes
data Data to encrypt in-place
data_len Length of data in bytes
tag 16-byte tag value
Returns:
0 on success, -1 on failure

Definition at line 292 of file aes_wrap.c.

Here is the call graph for this function:

int aes_128_encrypt_block const u8 *  key,
const u8 *  in,
u8 *  out
 

Perform one AES 128-bit block operation.

Parameters:
key Key for AES
in Input data (16 bytes)
out Output of the AES block operation (16 bytes)
Returns:
0 on success, -1 on failure

Definition at line 224 of file aes_wrap.c.

Here is the call graph for this function:

int aes_unwrap const u8 *  kek,
int  n,
const u8 *  cipher,
u8 *  plain
 

Unwrap key with AES Key Wrap Algorithm (128-bit KEK) (RFC3394).

Parameters:
kek Key encryption key (KEK)
n Length of the wrapped key in 64-bit units; e.g., 2 = 128-bit = 16 bytes
cipher Wrapped key to be unwrapped, (n + 1) * 64 bit
plain Plaintext key, n * 64 bit
Returns:
0 on success, -1 on failure (e.g., integrity verification failed)

Definition at line 101 of file aes_wrap.c.

Here is the call graph for this function:

int aes_wrap const u8 *  kek,
int  n,
const u8 *  plain,
u8 *  cipher
 

Wrap keys with AES Key Wrap Algorithm (128-bit KEK) (RFC3394).

Parameters:
kek Key encryption key (KEK)
n Length of the wrapped key in 64-bit units; e.g., 2 = 128-bit = 16 bytes
plain Plaintext key to be wrapped, n * 64 bit
cipher Wrapped key, (n + 1) * 64 bit
Returns:
0 on success, -1 on failure

Definition at line 44 of file aes_wrap.c.

Here is the call graph for this function:

int omac1_aes_128 const u8 *  key,
const u8 *  data,
size_t  data_len,
u8 *  mac
 

One-Key CBC MAC (OMAC1) hash with AES-128.

Parameters:
key Key for the hash operation
data Data buffer for which a MAC is determined
data Length of data buffer in bytes
mac Buffer for MAC (128 bits, i.e., 16 bytes)
Returns:
0 on success, -1 on failure

Definition at line 176 of file aes_wrap.c.

Here is the call graph for this function:


Generated on Sat May 6 21:14:09 2006 for wpa_supplicant by  doxygen 1.4.2