Curve25519 elliptic curve (constant-time implementation) More...
Go to the source code of this file.
Macros | |
#define | TRACE_LEVEL CRYPTO_TRACE_LEVEL |
Functions | |
void | curve25519SetInt (int32_t *a, int32_t b) |
Set integer value. More... | |
void | curve25519Add (int32_t *r, const int32_t *a, const int32_t *b) |
Modular addition. More... | |
void | curve25519AddInt (int32_t *r, const int32_t *a, int32_t b) |
Modular addition. More... | |
void | curve25519Sub (int32_t *r, const int32_t *a, const int32_t *b) |
Modular subtraction. More... | |
void | curve25519SubInt (int32_t *r, const int32_t *a, int32_t b) |
Modular subtraction. More... | |
__weak_func void | curve25519Mul (int32_t *r, const int32_t *a, const int32_t *b) |
Modular multiplication. More... | |
void | curve25519MulInt (int32_t *r, const int32_t *a, int32_t b) |
Modular multiplication. More... | |
__weak_func void | curve25519Sqr (int32_t *r, const int32_t *a) |
Modular squaring. More... | |
void | curve25519Pwr2 (int32_t *r, const int32_t *a, uint_t n) |
Raise an integer to power 2^n. More... | |
void | curve25519Inv (int32_t *r, const int32_t *a) |
Modular multiplicative inverse. More... | |
uint32_t | curve25519Sqrt (int32_t *r, const int32_t *a, const int32_t *b) |
Compute the square root of (A / B) modulo p. More... | |
void | curve25519Canonicalize (int32_t *r, const int32_t *a) |
Reduce non-canonical value. More... | |
void | curve25519Copy (int32_t *a, const int32_t *b) |
Copy an integer. More... | |
void | curve25519Swap (int32_t *a, int32_t *b, uint32_t c) |
Conditional swap. More... | |
void | curve25519Select (int32_t *r, const int32_t *a, const int32_t *b, uint32_t c) |
Select an integer. More... | |
uint32_t | curve25519Comp (const int32_t *a, const int32_t *b) |
Compare integers. More... | |
void | curve25519Import (int32_t *a, const uint8_t *data) |
Import an octet string. More... | |
void | curve25519Export (int32_t *a, uint8_t *data) |
Export an octet string. More... | |
Detailed Description
Curve25519 elliptic curve (constant-time implementation)
License
SPDX-License-Identifier: GPL-2.0-or-later
Copyright (C) 2010-2025 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.
- Version
- 2.5.0
Definition in file curve25519.c.
Macro Definition Documentation
◆ TRACE_LEVEL
#define TRACE_LEVEL CRYPTO_TRACE_LEVEL |
Definition at line 32 of file curve25519.c.
Function Documentation
◆ curve25519Add()
void curve25519Add | ( | int32_t * | r, |
const int32_t * | a, | ||
const int32_t * | b | ||
) |
Modular addition.
- Parameters
-
[out] r Resulting integer R = (A + B) mod p [in] a An integer such as 0 <= A < p [in] b An integer such as 0 <= B < p
Definition at line 79 of file curve25519.c.
◆ curve25519AddInt()
void curve25519AddInt | ( | int32_t * | r, |
const int32_t * | a, | ||
int32_t | b | ||
) |
Modular addition.
- Parameters
-
[out] r Resulting integer R = (A + B) mod p [in] a An integer such as 0 <= A < p [in] b An integer such as 0 <= B < (2^32 - 1)
Definition at line 144 of file curve25519.c.
◆ curve25519Canonicalize()
void curve25519Canonicalize | ( | int32_t * | r, |
const int32_t * | a | ||
) |
Reduce non-canonical value.
- Parameters
-
[out] r Resulting integer R = A mod p [in] a An integer such as 0 <= A < (2^255 - 1)
Definition at line 749 of file curve25519.c.
◆ curve25519Comp()
uint32_t curve25519Comp | ( | const int32_t * | a, |
const int32_t * | b | ||
) |
Compare integers.
- Parameters
-
[in] a Pointer to the first integer [in] b Pointer to the second integer
- Returns
- The function returns 0 if the A = B, else 1
Definition at line 870 of file curve25519.c.
◆ curve25519Copy()
void curve25519Copy | ( | int32_t * | a, |
const int32_t * | b | ||
) |
Copy an integer.
- Parameters
-
[out] a Pointer to the destination integer [in] b Pointer to the source integer
Definition at line 798 of file curve25519.c.
◆ curve25519Export()
void curve25519Export | ( | int32_t * | a, |
uint8_t * | data | ||
) |
Export an octet string.
- Parameters
-
[in] a Pointer to the integer to be exported [out] data Octet string resulting from the conversion
Definition at line 917 of file curve25519.c.
◆ curve25519Import()
void curve25519Import | ( | int32_t * | a, |
const uint8_t * | data | ||
) |
Import an octet string.
- Parameters
-
[out] a Pointer to resulting integer [in] data Octet string to be converted
Definition at line 896 of file curve25519.c.
◆ curve25519Inv()
void curve25519Inv | ( | int32_t * | r, |
const int32_t * | a | ||
) |
Modular multiplicative inverse.
- Parameters
-
[out] r Resulting integer R = A^-1 mod p [in] a An integer such as 0 <= A < p
Definition at line 606 of file curve25519.c.
◆ curve25519Mul()
__weak_func void curve25519Mul | ( | int32_t * | r, |
const int32_t * | a, | ||
const int32_t * | b | ||
) |
Modular multiplication.
- Parameters
-
[out] r Resulting integer R = (A * B) mod p [in] a An integer such as 0 <= A < p [in] b An integer such as 0 <= B < p
Definition at line 267 of file curve25519.c.
◆ curve25519MulInt()
void curve25519MulInt | ( | int32_t * | r, |
const int32_t * | a, | ||
int32_t | b | ||
) |
Modular multiplication.
- Parameters
-
[out] r Resulting integer R = (A * B) mod p [in] a An integer such as 0 <= A < p [in] b An integer such as 0 <= B < (2^29 - 1)
Definition at line 499 of file curve25519.c.
◆ curve25519Pwr2()
void curve25519Pwr2 | ( | int32_t * | r, |
const int32_t * | a, | ||
uint_t | n | ||
) |
Raise an integer to power 2^n.
- Parameters
-
[out] r Resulting integer R = (A ^ (2^n)) mod p [in] a An integer such as 0 <= A < p [in] n An integer such as n >= 1
Definition at line 585 of file curve25519.c.
◆ curve25519Select()
void curve25519Select | ( | int32_t * | r, |
const int32_t * | a, | ||
const int32_t * | b, | ||
uint32_t | c | ||
) |
Select an integer.
- Parameters
-
[out] r Pointer to the destination integer [in] a Pointer to the first source integer [in] b Pointer to the second source integer [in] c Condition variable
Definition at line 845 of file curve25519.c.
◆ curve25519SetInt()
void curve25519SetInt | ( | int32_t * | a, |
int32_t | b | ||
) |
Set integer value.
- Parameters
-
[out] a Pointer to the integer to be initialized [in] b An integer such as 0 <= B < (2^29 - 1)
Definition at line 57 of file curve25519.c.
◆ curve25519Sqr()
__weak_func void curve25519Sqr | ( | int32_t * | r, |
const int32_t * | a | ||
) |
Modular squaring.
- Parameters
-
[out] r Resulting integer R = (A ^ 2) mod p [in] a An integer such as 0 <= A < p
Definition at line 571 of file curve25519.c.
◆ curve25519Sqrt()
uint32_t curve25519Sqrt | ( | int32_t * | r, |
const int32_t * | a, | ||
const int32_t * | b | ||
) |
Compute the square root of (A / B) modulo p.
- Parameters
-
[out] r Resulting integer R = (A / B)^(1 / 2) mod p [in] a An integer such as 0 <= A < p [in] b An integer such as 0 < B < p
- Returns
- The function returns 0 if the square root exists, else 1
Definition at line 656 of file curve25519.c.
◆ curve25519Sub()
void curve25519Sub | ( | int32_t * | r, |
const int32_t * | a, | ||
const int32_t * | b | ||
) |
Modular subtraction.
- Parameters
-
[out] r Resulting integer R = (A - B) mod p [in] a An integer such as 0 <= A < p [in] b An integer such as 0 <= B < p
Definition at line 173 of file curve25519.c.
◆ curve25519SubInt()
void curve25519SubInt | ( | int32_t * | r, |
const int32_t * | a, | ||
int32_t | b | ||
) |
Modular subtraction.
- Parameters
-
[out] r Resulting integer R = (A - B) mod p [in] a An integer such as 0 <= A < p [in] b An integer such as 0 <= B < (2^32 - 1)
Definition at line 238 of file curve25519.c.
◆ curve25519Swap()
void curve25519Swap | ( | int32_t * | a, |
int32_t * | b, | ||
uint32_t | c | ||
) |
Conditional swap.
- Parameters
-
[in,out] a Pointer to the first integer [in,out] b Pointer to the second integer [in] c Condition variable
Definition at line 817 of file curve25519.c.