wpa_supplicant / hostapd
2.5
|
WPA Supplicant / Crypto wrapper for LibTomCrypt (for internal TLSv1) More...
Data Structures | |
struct | crypto_hash |
struct | crypto_cipher |
struct | crypto_public_key |
struct | crypto_private_key |
Functions | |
int | md4_vector (size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac) |
MD4 hash for data vector. More... | |
void | des_encrypt (const u8 *clear, const u8 *key, u8 *cypher) |
Encrypt one block with DES. More... | |
int | md5_vector (size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac) |
MD5 hash for data vector. More... | |
int | sha1_vector (size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac) |
SHA-1 hash for data vector. More... | |
void * | aes_encrypt_init (const u8 *key, size_t len) |
Initialize AES for encryption. More... | |
void | aes_encrypt (void *ctx, const u8 *plain, u8 *crypt) |
Encrypt one AES block. More... | |
void | aes_encrypt_deinit (void *ctx) |
Deinitialize AES encryption. More... | |
void * | aes_decrypt_init (const u8 *key, size_t len) |
Initialize AES for decryption. More... | |
void | aes_decrypt (void *ctx, const u8 *crypt, u8 *plain) |
Decrypt one AES block. More... | |
void | aes_decrypt_deinit (void *ctx) |
Deinitialize AES decryption. More... | |
struct crypto_hash * | crypto_hash_init (enum crypto_hash_alg alg, const u8 *key, size_t key_len) |
Initialize hash/HMAC function. More... | |
void | crypto_hash_update (struct crypto_hash *ctx, const u8 *data, size_t len) |
Add data to hash calculation. More... | |
int | crypto_hash_finish (struct crypto_hash *ctx, u8 *mac, size_t *len) |
Complete hash calculation. More... | |
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. More... | |
int | crypto_cipher_encrypt (struct crypto_cipher *ctx, const u8 *plain, u8 *crypt, size_t len) |
Cipher encrypt. More... | |
int | crypto_cipher_decrypt (struct crypto_cipher *ctx, const u8 *crypt, u8 *plain, size_t len) |
Cipher decrypt. More... | |
void | crypto_cipher_deinit (struct crypto_cipher *ctx) |
Free cipher context. More... | |
struct crypto_public_key * | crypto_public_key_import (const u8 *key, size_t len) |
Import an RSA public key. More... | |
struct crypto_private_key * | crypto_private_key_import (const u8 *key, size_t len, const char *passwd) |
Import an RSA private key. More... | |
struct crypto_public_key * | crypto_public_key_from_cert (const u8 *buf, size_t len) |
Import an RSA public key from a certificate. More... | |
int | crypto_public_key_encrypt_pkcs1_v15 (struct crypto_public_key *key, const u8 *in, size_t inlen, u8 *out, size_t *outlen) |
Public key encryption (PKCS #1 v1.5) More... | |
int | crypto_private_key_sign_pkcs1 (struct crypto_private_key *key, const u8 *in, size_t inlen, u8 *out, size_t *outlen) |
Sign with private key (PKCS #1) More... | |
void | crypto_public_key_free (struct crypto_public_key *key) |
Free public key. More... | |
void | crypto_private_key_free (struct crypto_private_key *key) |
Free private key. More... | |
int | crypto_public_key_decrypt_pkcs1 (struct crypto_public_key *key, const u8 *crypt, size_t crypt_len, u8 *plain, size_t *plain_len) |
Decrypt PKCS #1 signature. More... | |
int | crypto_global_init (void) |
Initialize crypto wrapper. More... | |
void | crypto_global_deinit (void) |
Deinitialize crypto wrapper. More... | |
WPA Supplicant / Crypto wrapper for LibTomCrypt (for internal TLSv1)
void aes_decrypt | ( | void * | ctx, |
const u8 * | crypt, | ||
u8 * | plain | ||
) |
Decrypt one AES block.
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.
ctx | Context pointer from aes_encrypt_init() |
void* aes_decrypt_init | ( | const u8 * | key, |
size_t | len | ||
) |
Initialize AES for decryption.
key | Decryption key |
len | Key length in bytes (usually 16, i.e., 128 bits) |
void aes_encrypt | ( | void * | ctx, |
const u8 * | plain, | ||
u8 * | crypt | ||
) |
Encrypt one AES block.
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.
ctx | Context pointer from aes_encrypt_init() |
void* aes_encrypt_init | ( | const u8 * | key, |
size_t | len | ||
) |
Initialize AES for encryption.
key | Encryption key |
len | Key length in bytes (usually 16, i.e., 128 bits) |
int crypto_cipher_decrypt | ( | struct crypto_cipher * | ctx, |
const u8 * | crypt, | ||
u8 * | plain, | ||
size_t | len | ||
) |
Cipher decrypt.
ctx | Context pointer from crypto_cipher_init() |
crypt | Ciphertext to decrypt |
plain | Resulting plaintext |
len | Length of the cipher text |
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 crypto_cipher_deinit | ( | struct crypto_cipher * | ctx | ) |
Free cipher context.
ctx | Context pointer from crypto_cipher_init() |
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.
ctx | Context pointer from crypto_cipher_init() |
plain | Plaintext to cipher |
crypt | Resulting ciphertext |
len | Length of the plaintext |
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 | ||
) |
Initialize block/stream cipher function.
alg | Cipher algorithm |
iv | Initialization vector for block ciphers or NULL for stream ciphers |
key | Cipher key |
key_len | Length of key in bytes |
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 crypto_global_deinit | ( | void | ) |
Deinitialize crypto wrapper.
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_global_init | ( | void | ) |
Initialize crypto wrapper.
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_hash_finish | ( | struct crypto_hash * | ctx, |
u8 * | hash, | ||
size_t * | len | ||
) |
Complete hash calculation.
ctx | Context pointer from crypto_hash_init() |
hash | Buffer for hash value or NULL if caller is just freeing the hash context |
len | Pointer to length of the buffer or NULL if caller is just freeing the hash context; on return, this is set to the actual length of the hash value |
This function calculates the hash value and frees the context buffer that was used for hash calculation.
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_hash* crypto_hash_init | ( | enum crypto_hash_alg | alg, |
const u8 * | key, | ||
size_t | key_len | ||
) |
Initialize hash/HMAC function.
alg | Hash algorithm |
key | Key for keyed hash (e.g., HMAC) or NULL if not needed |
key_len | Length of the key in bytes |
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 crypto_hash_update | ( | struct crypto_hash * | ctx, |
const u8 * | data, | ||
size_t | len | ||
) |
Add data to hash calculation.
ctx | Context pointer from crypto_hash_init() |
data | Data buffer to add |
len | Length of the buffer |
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 crypto_private_key_free | ( | struct crypto_private_key * | key | ) |
Free private key.
key | Private key from crypto_private_key_import() |
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_private_key* crypto_private_key_import | ( | const u8 * | key, |
size_t | len, | ||
const char * | passwd | ||
) |
Import an RSA private key.
key | Key buffer (DER encoded RSA private key) |
len | Key buffer length in bytes |
passwd | Key encryption password or NULL if key is not encrypted |
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_private_key_sign_pkcs1 | ( | struct crypto_private_key * | key, |
const u8 * | in, | ||
size_t | inlen, | ||
u8 * | out, | ||
size_t * | outlen | ||
) |
Sign with private key (PKCS #1)
key | Private key from crypto_private_key_import() |
in | Plaintext buffer |
inlen | Length of plaintext buffer in bytes |
out | Output buffer for encrypted (signed) data |
outlen | Length of output buffer in bytes; set to used length 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.
int crypto_public_key_decrypt_pkcs1 | ( | struct crypto_public_key * | key, |
const u8 * | crypt, | ||
size_t | crypt_len, | ||
u8 * | plain, | ||
size_t * | plain_len | ||
) |
Decrypt PKCS #1 signature.
key | Public key |
crypt | Encrypted signature data (using the private key) |
crypt_len | Encrypted signature data length |
plain | Buffer for plaintext (at least crypt_len bytes) |
plain_len | Plaintext length (max buffer size on input, real len on output); |
int crypto_public_key_encrypt_pkcs1_v15 | ( | struct crypto_public_key * | key, |
const u8 * | in, | ||
size_t | inlen, | ||
u8 * | out, | ||
size_t * | outlen | ||
) |
Public key encryption (PKCS #1 v1.5)
key | Public key |
in | Plaintext buffer |
inlen | Length of plaintext buffer in bytes |
out | Output buffer for encrypted data |
outlen | Length of output buffer in bytes; set to used length 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 crypto_public_key_free | ( | struct crypto_public_key * | key | ) |
Free public key.
key | Public key |
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_public_key* crypto_public_key_from_cert | ( | const u8 * | buf, |
size_t | len | ||
) |
Import an RSA public key from a certificate.
buf | DER encoded X.509 certificate |
len | Certificate buffer length in bytes |
This function can just return NULL if the crypto library does not support X.509 parsing. In that case, internal code will be used to parse the certificate and public key is imported using crypto_public_key_import().
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_public_key* crypto_public_key_import | ( | const u8 * | key, |
size_t | len | ||
) |
Import an RSA public key.
key | Key buffer (DER encoded RSA public key) |
len | Key buffer length in bytes |
This function can just return NULL if the crypto library supports X.509 parsing. In that case, crypto_public_key_from_cert() is used to import the public key from a certificate.
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.
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.
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 |
int md5_vector | ( | size_t | num_elem, |
const u8 * | addr[], | ||
const size_t * | len, | ||
u8 * | mac | ||
) |
MD5 hash for data vector.
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 |
int sha1_vector | ( | size_t | num_elem, |
const u8 * | addr[], | ||
const size_t * | len, | ||
u8 * | mac | ||
) |
SHA-1 hash for data vector.
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 |