crypto_gnutls.c File Reference
WPA Supplicant / wrapper functions for libgcrypt.
More...
#include "includes.h"
#include <gcrypt.h>
#include "common.h"
#include "crypto.h"
Data Structures |
| struct | crypto_cipher |
Functions |
| int | md4_vector (size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac) |
| | MD4 hash for data vector.
|
| void | des_encrypt (const u8 *clear, const u8 *key, u8 *cypher) |
| | Encrypt one block with DES.
|
| int | md5_vector (size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac) |
| | MD5 hash for data vector.
|
| int | sha1_vector (size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac) |
| | SHA-1 hash for data vector.
|
| void * | aes_encrypt_init (const u8 *key, size_t len) |
| | Initialize AES for encryption.
|
| void | aes_encrypt (void *ctx, const u8 *plain, u8 *crypt) |
| | Encrypt one AES block.
|
| void | aes_encrypt_deinit (void *ctx) |
| | Deinitialize AES encryption.
|
| void * | aes_decrypt_init (const u8 *key, size_t len) |
| | Initialize AES for decryption.
|
| void | aes_decrypt (void *ctx, const u8 *crypt, u8 *plain) |
| | Decrypt one AES block.
|
| void | aes_decrypt_deinit (void *ctx) |
| | Deinitialize AES decryption.
|
| int | crypto_mod_exp (const u8 *base, size_t base_len, const u8 *power, size_t power_len, const u8 *modulus, size_t modulus_len, u8 *result, size_t *result_len) |
| | Modular exponentiation of large integers.
|
| struct crypto_cipher * | crypto_cipher_init (enum crypto_cipher_alg alg, const u8 *iv, const u8 *key, size_t key_len) |
| | Initialize block/stream cipher function.
|
| int | crypto_cipher_encrypt (struct crypto_cipher *ctx, const u8 *plain, u8 *crypt, size_t len) |
| | Cipher encrypt.
|
| int | crypto_cipher_decrypt (struct crypto_cipher *ctx, const u8 *crypt, u8 *plain, size_t len) |
| | Cipher decrypt.
|
| void | crypto_cipher_deinit (struct crypto_cipher *ctx) |
| | Free cipher context.
|
Detailed Description
WPA Supplicant / wrapper functions for libgcrypt.
- Copyright
- Copyright (c) 2004-2009, Jouni Malinen <j@w1.fi>
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.
Function Documentation
| void aes_decrypt |
( |
void * |
ctx, |
|
|
const u8 * |
crypt, |
|
|
u8 * |
plain | |
|
) |
| | |
Decrypt one AES block.
- Parameters:
-
| ctx | Context pointer from aes_encrypt_init() |
| crypt | Encrypted data (16 bytes) |
| plain | Buffer for the decrypted data (16 bytes) |
| void aes_decrypt_deinit |
( |
void * |
ctx |
) |
|
Deinitialize AES decryption.
- Parameters:
-
| void* aes_decrypt_init |
( |
const u8 * |
key, |
|
|
size_t |
len | |
|
) |
| | |
Initialize AES for decryption.
- Parameters:
-
| key | Decryption key |
| len | Key length in bytes (usually 16, i.e., 128 bits) |
- Returns:
- Pointer to context data or NULL on failure
| void aes_encrypt |
( |
void * |
ctx, |
|
|
const u8 * |
plain, |
|
|
u8 * |
crypt | |
|
) |
| | |
Encrypt one AES block.
- Parameters:
-
| ctx | Context pointer from aes_encrypt_init() |
| plain | Plaintext data to be encrypted (16 bytes) |
| crypt | Buffer for the encrypted data (16 bytes) |
| void aes_encrypt_deinit |
( |
void * |
ctx |
) |
|
Deinitialize AES encryption.
- Parameters:
-
| void* aes_encrypt_init |
( |
const u8 * |
key, |
|
|
size_t |
len | |
|
) |
| | |
Initialize AES for encryption.
- Parameters:
-
| key | Encryption key |
| len | Key length in bytes (usually 16, i.e., 128 bits) |
- Returns:
- Pointer to context data or NULL on failure
| int crypto_cipher_decrypt |
( |
struct crypto_cipher * |
ctx, |
|
|
const u8 * |
crypt, |
|
|
u8 * |
plain, |
|
|
size_t |
len | |
|
) |
| | |
Cipher decrypt.
- Parameters:
-
| ctx | Context pointer from crypto_cipher_init() |
| crypt | Ciphertext to decrypt |
| plain | Resulting plaintext |
| len | Length of the cipher text |
- Returns:
- 0 on success, -1 on failure
This function is only used with internal TLSv1 implementation (CONFIG_TLS=internal). If that is not used, the crypto wrapper does not need to implement this.
Free cipher context.
- Parameters:
-
This function is only used with internal TLSv1 implementation (CONFIG_TLS=internal). If that is not used, the crypto wrapper does not need to implement this.
| int crypto_cipher_encrypt |
( |
struct crypto_cipher * |
ctx, |
|
|
const u8 * |
plain, |
|
|
u8 * |
crypt, |
|
|
size_t |
len | |
|
) |
| | |
Cipher encrypt.
- Parameters:
-
| ctx | Context pointer from crypto_cipher_init() |
| plain | Plaintext to cipher |
| crypt | Resulting ciphertext |
| len | Length of the plaintext |
- Returns:
- 0 on success, -1 on failure
This function is only used with internal TLSv1 implementation (CONFIG_TLS=internal). If that is not used, the crypto wrapper does not need to implement this.
| struct crypto_cipher* crypto_cipher_init |
( |
enum crypto_cipher_alg |
alg, |
|
|
const u8 * |
iv, |
|
|
const u8 * |
key, |
|
|
size_t |
key_len | |
|
) |
| | [read] |
Initialize block/stream cipher function.
- Parameters:
-
| alg | Cipher algorithm |
| iv | Initialization vector for block ciphers or NULL for stream ciphers |
| key | Cipher key |
| key_len | Length of key in bytes |
- Returns:
- Pointer to cipher context to use with other cipher functions or NULL on failure
This function is only used with internal TLSv1 implementation (CONFIG_TLS=internal). If that is not used, the crypto wrapper does not need to implement this.
| int crypto_mod_exp |
( |
const u8 * |
base, |
|
|
size_t |
base_len, |
|
|
const u8 * |
power, |
|
|
size_t |
power_len, |
|
|
const u8 * |
modulus, |
|
|
size_t |
modulus_len, |
|
|
u8 * |
result, |
|
|
size_t * |
result_len | |
|
) |
| | |
Modular exponentiation of large integers.
- Parameters:
-
| base | Base integer (big endian byte array) |
| base_len | Length of base integer in bytes |
| power | Power integer (big endian byte array) |
| power_len | Length of power integer in bytes |
| modulus | Modulus integer (big endian byte array) |
| modulus_len | Length of modulus integer in bytes |
| result | Buffer for the result |
| result_len | Result length (max buffer size on input, real len on output) |
- Returns:
- 0 on success, -1 on failure
This function calculates result = base ^ power mod modulus. modules_len is used as the maximum size of modulus buffer. It is set to the used size on success.
This function is only used with internal TLSv1 implementation (CONFIG_TLS=internal). If that is not used, the crypto wrapper does not need to implement this.
| void des_encrypt |
( |
const u8 * |
clear, |
|
|
const u8 * |
key, |
|
|
u8 * |
cypher | |
|
) |
| | |
Encrypt one block with DES.
- Parameters:
-
| clear | 8 octets (in) |
| key | 7 octets (in) (no parity bits included) |
| cypher | 8 octets (out) |
| int md4_vector |
( |
size_t |
num_elem, |
|
|
const u8 * |
addr[], |
|
|
const size_t * |
len, |
|
|
u8 * |
mac | |
|
) |
| | |
MD4 hash for data vector.
- Parameters:
-
| num_elem | Number of elements in the data vector |
| addr | Pointers to the data areas |
| len | Lengths of the data blocks |
| mac | Buffer for the hash |
- Returns:
- 0 on success, -1 on failure
| int md5_vector |
( |
size_t |
num_elem, |
|
|
const u8 * |
addr[], |
|
|
const size_t * |
len, |
|
|
u8 * |
mac | |
|
) |
| | |
MD5 hash for data vector.
- Parameters:
-
| num_elem | Number of elements in the data vector |
| addr | Pointers to the data areas |
| len | Lengths of the data blocks |
| mac | Buffer for the hash |
- Returns:
- 0 on success, -1 on failure
| int sha1_vector |
( |
size_t |
num_elem, |
|
|
const u8 * |
addr[], |
|
|
const size_t * |
len, |
|
|
u8 * |
mac | |
|
) |
| | |
SHA-1 hash for data vector.
- Parameters:
-
| num_elem | Number of elements in the data vector |
| addr | Pointers to the data areas |
| len | Lengths of the data blocks |
| mac | Buffer for the hash |
- Returns:
- 0 on success, -1 on failure