ike_key_material.c File Reference

Key material generation. More...

#include "ike/ike.h"
#include "ike/ike_key_material.h"
#include "ike/ike_algorithms.h"
#include "ah/ah_algorithms.h"
#include "esp/esp_algorithms.h"
#include "debug.h"

Go to the source code of this file.

Macros

#define TRACE_LEVEL   IKE_TRACE_LEVEL
 

Functions

error_t ikeGenerateSaKeyMaterial (IkeSaEntry *sa, IkeSaEntry *oldSa)
 Generate keying material for the IKE SA. More...
 
error_t ikeGenerateChildSaKeyMaterial (IkeChildSaEntry *childSa)
 Generate keying material for the Child SA. More...
 
error_t ikeComputePrf (IkeSaEntry *sa, const uint8_t *k, size_t kLen, const void *s, size_t sLen, uint8_t *output)
 Pseudorandom function (prf function) More...
 
error_t ikeComputePrfPlus (IkeSaEntry *sa, const uint8_t *k, size_t kLen, const uint8_t *s, size_t sLen, uint8_t *output, size_t outputLen)
 Function that outputs a pseudorandom stream (prf+ function) More...
 
error_t ikeInitPrf (IkeSaEntry *sa, const uint8_t *vk, size_t vkLen)
 Initialize PRF calculation. More...
 
void ikeUpdatePrf (IkeSaEntry *sa, const uint8_t *s, size_t sLen)
 Update PRF calculation. More...
 
error_t ikeFinalizePrf (IkeSaEntry *sa, uint8_t *output)
 Finalize PRF calculation. More...
 

Detailed Description

Key material generation.

License

SPDX-License-Identifier: GPL-2.0-or-later

Copyright (C) 2022-2024 Oryx Embedded SARL. All rights reserved.

This file is part of CycloneIPSEC Open.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Author
Oryx Embedded SARL (www.oryx-embedded.com)
Version
2.4.0

Definition in file ike_key_material.c.

Macro Definition Documentation

◆ TRACE_LEVEL

#define TRACE_LEVEL   IKE_TRACE_LEVEL

Definition at line 32 of file ike_key_material.c.

Function Documentation

◆ ikeComputePrf()

error_t ikeComputePrf ( IkeSaEntry sa,
const uint8_t *  k,
size_t  kLen,
const void *  s,
size_t  sLen,
uint8_t *  output 
)

Pseudorandom function (prf function)

Parameters
[in]saPointer to the IKE SA
[in]kPointer to the key
[in]kLenLength of the key, in bytes
[in]sPointer to the data
[in]sLenLength of the data, in bytes
[in]outputPseudorandom output
Returns
Error code

Definition at line 421 of file ike_key_material.c.

◆ ikeComputePrfPlus()

error_t ikeComputePrfPlus ( IkeSaEntry sa,
const uint8_t *  k,
size_t  kLen,
const uint8_t *  s,
size_t  sLen,
uint8_t *  output,
size_t  outputLen 
)

Function that outputs a pseudorandom stream (prf+ function)

Parameters
[in]saPointer to the IKE SA
[in]kPointer to the key
[in]kLenLength of the key, in bytes
[in]sPointer to the data
[in]sLenLength of the data, in bytes
[out]outputPseudorandom output stream
[in]outputLenDesired length of the pseudorandom output stream
Returns
Error code

Definition at line 456 of file ike_key_material.c.

◆ ikeFinalizePrf()

error_t ikeFinalizePrf ( IkeSaEntry sa,
uint8_t *  output 
)

Finalize PRF calculation.

Parameters
[in]saPointer to the IKE SA
[in]outputPseudorandom output
Returns
Error code

Definition at line 698 of file ike_key_material.c.

◆ ikeGenerateChildSaKeyMaterial()

error_t ikeGenerateChildSaKeyMaterial ( IkeChildSaEntry childSa)

Generate keying material for the Child SA.

Parameters
[in]childSaPointer to the Child SA
Returns
Error code

Definition at line 261 of file ike_key_material.c.

◆ ikeGenerateSaKeyMaterial()

error_t ikeGenerateSaKeyMaterial ( IkeSaEntry sa,
IkeSaEntry oldSa 
)

Generate keying material for the IKE SA.

Parameters
[in]saPointer to the IKE SA
[in]oldSaPointer to the old IKE SA
Returns
Error code

Definition at line 53 of file ike_key_material.c.

◆ ikeInitPrf()

error_t ikeInitPrf ( IkeSaEntry sa,
const uint8_t *  vk,
size_t  vkLen 
)

Initialize PRF calculation.

Parameters
[in]saPointer to the IKE SA
[in]vkPointer to the variable-length key
[in]vkLenLength of the key, in bytes
Returns
Error code

Definition at line 517 of file ike_key_material.c.

◆ ikeUpdatePrf()

void ikeUpdatePrf ( IkeSaEntry sa,
const uint8_t *  s,
size_t  sLen 
)

Update PRF calculation.

Parameters
[in]saPointer to the IKE SA
[in]sPointer to the data
[in]sLenLength of the data, in bytes

Definition at line 653 of file ike_key_material.c.