kem.h File Reference

Key encapsulation mechanism (KEM) More...

#include "core/crypto.h"
#include "pqc/mlkem512.h"
#include "pqc/mlkem768.h"
#include "pqc/mlkem1024.h"
#include "pqc/sntrup761.h"

Go to the source code of this file.

Data Structures

struct  KemContext
 KEM context. More...
 

Functions

void kemInit (KemContext *context, const KemAlgo *kemAlgo)
 Initialize KEM context. More...
 
void kemFree (KemContext *context)
 Release KEM context. More...
 
error_t kemGenerateKeyPair (KemContext *context, const PrngAlgo *prngAlgo, void *prngContext)
 Key pair generation. More...
 
error_t kemLoadPublicKey (KemContext *context, const uint8_t *pk)
 Load public key. More...
 
error_t kemEncapsulate (KemContext *context, const PrngAlgo *prngAlgo, void *prngContext, uint8_t *ct, uint8_t *ss)
 Encapsulation algorithm. More...
 
error_t kemDecapsulate (KemContext *context, const uint8_t *ct, uint8_t *ss)
 Decapsulation algorithm. More...
 

Detailed Description

Key encapsulation mechanism (KEM)

License

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

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

This file is part of CycloneCRYPTO 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.4

Definition in file kem.h.

Function Documentation

◆ kemDecapsulate()

error_t kemDecapsulate ( KemContext context,
const uint8_t *  ct,
uint8_t *  ss 
)

Decapsulation algorithm.

Parameters
[in]contextPointer to the KEM context
[in]ctCiphertext
[out]ssShared secret
Returns
Error code

Definition at line 240 of file kem.c.

◆ kemEncapsulate()

error_t kemEncapsulate ( KemContext context,
const PrngAlgo prngAlgo,
void *  prngContext,
uint8_t *  ct,
uint8_t *  ss 
)

Encapsulation algorithm.

Parameters
[in]contextPointer to the KEM context
[in]prngAlgoPRNG algorithm
[in]prngContextPointer to the PRNG context
[out]ctCiphertext
[out]ssShared secret
Returns
Error code

Definition at line 209 of file kem.c.

◆ kemFree()

void kemFree ( KemContext context)

Release KEM context.

Parameters
[in]contextPointer to the KEM context

Definition at line 62 of file kem.c.

◆ kemGenerateKeyPair()

error_t kemGenerateKeyPair ( KemContext context,
const PrngAlgo prngAlgo,
void *  prngContext 
)

Key pair generation.

Parameters
[in]contextPointer to the KEM context
[in]prngAlgoPRNG algorithm
[in]prngContextPointer to the PRNG context
Returns
Error code

Definition at line 100 of file kem.c.

◆ kemInit()

void kemInit ( KemContext context,
const KemAlgo kemAlgo 
)

Initialize KEM context.

Parameters
[in]contextPointer to the KEM context
[in]kemAlgoKey encapsulation mechanism

Definition at line 48 of file kem.c.

◆ kemLoadPublicKey()

error_t kemLoadPublicKey ( KemContext context,
const uint8_t *  pk 
)

Load public key.

Parameters
[in]contextPointer to the KEM context
[in]pkPublic key
Returns
Error code

Definition at line 160 of file kem.c.