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.4
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.
