mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-01-17 05:32:45 +01:00
19278: gnrc_dhcpv6_client_simple_pd: select upstream based on type/index r=benpicco a=benpicco 19290: sys/crypto: make AES_KEY struct private & rename it r=benpicco a=benpicco Co-authored-by: Benjamin Valentin <benjamin.valentin@ml-pa.com> Co-authored-by: Benjamin Valentin <benjamin.valentin@bht-berlin.de>
This commit is contained in:
commit
be29a00d74
@ -32,8 +32,6 @@
|
|||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
@ -62,6 +60,16 @@
|
|||||||
# define AES_KEY_SIZE(ctx) ctx->key_size
|
# define AES_KEY_SIZE(ctx) ctx->key_size
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AES key
|
||||||
|
* @see cipher_context_t
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
/** @cond INTERNAL */
|
||||||
|
uint32_t rd_key[4 * (AES_MAXNR + 1)];
|
||||||
|
int rounds;
|
||||||
|
/** @endcond */
|
||||||
|
} aes_key_t;
|
||||||
/**
|
/**
|
||||||
* Interface to the aes cipher
|
* Interface to the aes cipher
|
||||||
*/
|
*/
|
||||||
@ -860,7 +868,7 @@ int aes_init(cipher_context_t *context, const uint8_t *key, uint8_t keySize)
|
|||||||
* Expand the cipher key into the encryption key schedule.
|
* Expand the cipher key into the encryption key schedule.
|
||||||
*/
|
*/
|
||||||
static int aes_set_encrypt_key(const unsigned char *userKey, const int bits,
|
static int aes_set_encrypt_key(const unsigned char *userKey, const int bits,
|
||||||
AES_KEY *key)
|
aes_key_t *key)
|
||||||
{
|
{
|
||||||
u32 *rk;
|
u32 *rk;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
@ -979,7 +987,7 @@ static int aes_set_encrypt_key(const unsigned char *userKey, const int bits,
|
|||||||
* Expand the cipher key into the decryption key schedule.
|
* Expand the cipher key into the decryption key schedule.
|
||||||
*/
|
*/
|
||||||
static int aes_set_decrypt_key(const unsigned char *userKey, const int bits,
|
static int aes_set_decrypt_key(const unsigned char *userKey, const int bits,
|
||||||
AES_KEY *key)
|
aes_key_t *key)
|
||||||
{
|
{
|
||||||
u32 *rk;
|
u32 *rk;
|
||||||
int i, j;
|
int i, j;
|
||||||
@ -1062,8 +1070,8 @@ int aes_encrypt(const cipher_context_t *context, const uint8_t *plainBlock,
|
|||||||
{
|
{
|
||||||
/* setup AES_KEY */
|
/* setup AES_KEY */
|
||||||
int res;
|
int res;
|
||||||
AES_KEY aeskey;
|
aes_key_t aeskey;
|
||||||
const AES_KEY *key = &aeskey;
|
const aes_key_t *key = &aeskey;
|
||||||
|
|
||||||
res = aes_set_encrypt_key((unsigned char *)context->context,
|
res = aes_set_encrypt_key((unsigned char *)context->context,
|
||||||
AES_KEY_SIZE(context) * 8, &aeskey);
|
AES_KEY_SIZE(context) * 8, &aeskey);
|
||||||
@ -1331,8 +1339,8 @@ int aes_decrypt(const cipher_context_t *context, const uint8_t *cipherBlock,
|
|||||||
{
|
{
|
||||||
/* setup AES_KEY */
|
/* setup AES_KEY */
|
||||||
int res;
|
int res;
|
||||||
AES_KEY aeskey;
|
aes_key_t aeskey;
|
||||||
const AES_KEY *key = &aeskey;
|
const aes_key_t *key = &aeskey;
|
||||||
|
|
||||||
res = aes_set_decrypt_key((unsigned char *)context->context,
|
res = aes_set_decrypt_key((unsigned char *)context->context,
|
||||||
AES_KEY_SIZE(context) * 8, &aeskey);
|
AES_KEY_SIZE(context) * 8, &aeskey);
|
||||||
|
@ -30,10 +30,6 @@
|
|||||||
#ifndef CRYPTO_AES_H
|
#ifndef CRYPTO_AES_H
|
||||||
#define CRYPTO_AES_H
|
#define CRYPTO_AES_H
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "crypto/ciphers.h"
|
#include "crypto/ciphers.h"
|
||||||
|
|
||||||
@ -64,17 +60,6 @@ typedef uint8_t u8;
|
|||||||
#define AES_KEY_SIZE_256 32
|
#define AES_KEY_SIZE_256 32
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief AES key
|
|
||||||
* @see cipher_context_t
|
|
||||||
*/
|
|
||||||
typedef struct aes_key_st {
|
|
||||||
/** @cond INTERNAL */
|
|
||||||
uint32_t rd_key[4 * (AES_MAXNR + 1)];
|
|
||||||
int rounds;
|
|
||||||
/** @endcond */
|
|
||||||
} AES_KEY;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief the cipher_context_t-struct adapted for AES
|
* @brief the cipher_context_t-struct adapted for AES
|
||||||
*/
|
*/
|
||||||
|
@ -36,6 +36,25 @@ extern "C" {
|
|||||||
#define CONFIG_GNRC_DHCPV6_CLIENT_6LBR_UPSTREAM (0)
|
#define CONFIG_GNRC_DHCPV6_CLIENT_6LBR_UPSTREAM (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Interface type of the upstream interface
|
||||||
|
*
|
||||||
|
* See @ref netdev_type_t for possible values
|
||||||
|
*/
|
||||||
|
#ifndef CONFIG_GNRC_DHCPV6_CLIENT_6LBR_UPSTREAM_TYPE
|
||||||
|
#define CONFIG_GNRC_DHCPV6_CLIENT_6LBR_UPSTREAM_TYPE NETDEV_ANY
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Interface index of the upstream interface
|
||||||
|
*
|
||||||
|
* If there are multiple interfaces of the same type, set this to select
|
||||||
|
* which one to use for the upstream.
|
||||||
|
*/
|
||||||
|
#ifndef CONFIG_GNRC_DHCPV6_CLIENT_6LBR_UPSTREAM_IDX
|
||||||
|
#define CONFIG_GNRC_DHCPV6_CLIENT_6LBR_UPSTREAM_IDX (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 6LoWPAN compression context lifetime for configured prefixes in
|
* @brief 6LoWPAN compression context lifetime for configured prefixes in
|
||||||
* minutes
|
* minutes
|
||||||
|
@ -48,6 +48,12 @@ static gnrc_netif_t *_find_upstream_netif(void)
|
|||||||
if (CONFIG_GNRC_DHCPV6_CLIENT_6LBR_UPSTREAM) {
|
if (CONFIG_GNRC_DHCPV6_CLIENT_6LBR_UPSTREAM) {
|
||||||
return gnrc_netif_get_by_pid(CONFIG_GNRC_DHCPV6_CLIENT_6LBR_UPSTREAM);
|
return gnrc_netif_get_by_pid(CONFIG_GNRC_DHCPV6_CLIENT_6LBR_UPSTREAM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (CONFIG_GNRC_DHCPV6_CLIENT_6LBR_UPSTREAM_TYPE != NETDEV_ANY) {
|
||||||
|
return gnrc_netif_get_by_type(CONFIG_GNRC_DHCPV6_CLIENT_6LBR_UPSTREAM_TYPE,
|
||||||
|
CONFIG_GNRC_DHCPV6_CLIENT_6LBR_UPSTREAM_IDX);
|
||||||
|
}
|
||||||
|
|
||||||
while ((netif = gnrc_netif_iter(netif))) {
|
while ((netif = gnrc_netif_iter(netif))) {
|
||||||
if (!gnrc_netif_is_6lo(netif)) {
|
if (!gnrc_netif_is_6lo(netif)) {
|
||||||
LOG_WARNING("DHCPv6: Selecting interface %d as upstream\n",
|
LOG_WARNING("DHCPv6: Selecting interface %d as upstream\n",
|
||||||
@ -93,9 +99,16 @@ static void _configure_dhcpv6_client(void)
|
|||||||
{
|
{
|
||||||
gnrc_netif_t *netif = NULL;
|
gnrc_netif_t *netif = NULL;
|
||||||
gnrc_netif_t *upstream = _find_upstream_netif();
|
gnrc_netif_t *upstream = _find_upstream_netif();
|
||||||
|
|
||||||
|
if (upstream == NULL) {
|
||||||
|
LOG_ERROR("DHCPv6: No upstream interface found!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (IS_ACTIVE(MODULE_DHCPV6_CLIENT_IA_NA)) {
|
if (IS_ACTIVE(MODULE_DHCPV6_CLIENT_IA_NA)) {
|
||||||
upstream->ipv6.aac_mode |= GNRC_NETIF_AAC_DHCP;
|
upstream->ipv6.aac_mode |= GNRC_NETIF_AAC_DHCP;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((netif = gnrc_netif_iter(netif))) {
|
while ((netif = gnrc_netif_iter(netif))) {
|
||||||
if (IS_USED(MODULE_GNRC_DHCPV6_CLIENT_6LBR)
|
if (IS_USED(MODULE_GNRC_DHCPV6_CLIENT_6LBR)
|
||||||
&& !gnrc_netif_is_6lo(netif)) {
|
&& !gnrc_netif_is_6lo(netif)) {
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
* directory for more details.
|
* directory for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
||||||
#include "embUnit.h"
|
#include "embUnit.h"
|
||||||
|
Loading…
Reference in New Issue
Block a user