My Project
Loading...
Searching...
No Matches
curve25519.h File Reference

Go to the source code of this file.

Data Structures

struct  curve25519_set_type
 
struct  ECPoint
 
struct  curve25519_key
 

Typedefs

typedef const char * curve25519_str
 
typedef struct curve25519_key curve25519_key
 

Enumerations

enum  { EC25519_LITTLE_ENDIAN =0 , EC25519_BIG_ENDIAN =1 }
 

Functions

WOLFSSL_API int wc_curve25519_make_key (WC_RNG *rng, int keysize, curve25519_key *key)
 This function generates a curve25519 key using the given random number generator, rng, of the size given (keysize), and stores it in the given curve25519_key structure. It should be called after the key structure has been initialized through wc_curve25519_init.
 
WOLFSSL_API int wc_curve25519_shared_secret (curve25519_key *private_key, curve25519_key *public_key, byte *out, word32 *outlen)
 This function computes a shared secret key given a secret private key and a received public key. It stores the generated secret key in the buffer out and assigns the variable of the secret key to outlen. Only supports big endian.
 
WOLFSSL_API int wc_curve25519_shared_secret_ex (curve25519_key *private_key, curve25519_key *public_key, byte *out, word32 *outlen, int endian)
 This function computes a shared secret key given a secret private key and a received public key. It stores the generated secret key in the buffer out and assigns the variable of the secret key to outlen. Supports both big and little endian.
 
WOLFSSL_API int wc_curve25519_init (curve25519_key *key)
 This function initializes a curve25519 key. It should be called before generating a key for the structure with wc_curve25519_init and before using the key to encrypt data.
 
WOLFSSL_API void wc_curve25519_free (curve25519_key *key)
 This function frees a curve 25519 object.
 
WOLFSSL_API int wc_curve25519_import_private (const byte *priv, word32 privSz, curve25519_key *key)
 This function imports a curve25519 private key only. (Big endian).
 
WOLFSSL_API int wc_curve25519_import_private_ex (const byte *priv, word32 privSz, curve25519_key *key, int endian)
 curve25519 private key import only. (Big or Little endian).
 
WOLFSSL_API int wc_curve25519_import_private_raw (const byte *priv, word32 privSz, const byte *pub, word32 pubSz, curve25519_key *key)
 This function imports a public-private key pair into a curve25519_key structure. Big endian only.
 
WOLFSSL_API int wc_curve25519_import_private_raw_ex (const byte *priv, word32 privSz, const byte *pub, word32 pubSz, curve25519_key *key, int endian)
 This function imports a public-private key pair into a curve25519_key structure. Supports both big and little endian.
 
WOLFSSL_API int wc_curve25519_export_private_raw (curve25519_key *key, byte *out, word32 *outLen)
 This function exports a private key from a curve25519_key structure and stores it in the given out buffer. It also sets outLen to be the size of the exported key. Big Endian only.
 
WOLFSSL_API int wc_curve25519_export_private_raw_ex (curve25519_key *key, byte *out, word32 *outLen, int endian)
 This function exports a private key from a curve25519_key structure and stores it in the given out buffer. It also sets outLen to be the size of the exported key. Can specify whether it's big or little endian.
 
WOLFSSL_API int wc_curve25519_import_public (const byte *in, word32 inLen, curve25519_key *key)
 
WOLFSSL_API int wc_curve25519_import_public_ex (const byte *in, word32 inLen, curve25519_key *key, int endian)
 This function imports a public key from the given in buffer and stores it in the curve25519_key structure.
 
WOLFSSL_API int wc_curve25519_check_public (const byte *pub, word32 pubSz, int endian)
 
WOLFSSL_API int wc_curve25519_export_public (curve25519_key *key, byte *out, word32 *outLen)
 This function exports a public key from the given key structure and stores the result in the out buffer. Big endian only.
 
WOLFSSL_API int wc_curve25519_export_public_ex (curve25519_key *key, byte *out, word32 *outLen, int endian)
 This function exports a public key from the given key structure and stores the result in the out buffer. Supports both big and little endian.
 
WOLFSSL_API int wc_curve25519_export_key_raw (curve25519_key *key, byte *priv, word32 *privSz, byte *pub, word32 *pubSz)
 Export curve25519 key pair. Big endian only.
 
WOLFSSL_API int wc_curve25519_export_key_raw_ex (curve25519_key *key, byte *priv, word32 *privSz, byte *pub, word32 *pubSz, int endian)
 Export curve25519 key pair. Big or little endian.
 
WOLFSSL_API int wc_curve25519_size (curve25519_key *key)
 This function returns the key size of the given key structure.
 

Variables

 C
 

Function Documentation

◆ wc_curve25519_import_public()

WOLFSSL_API int wc_curve25519_import_public ( const byte * in,
word32 inLen,
curve25519_key * key )
\ingroup Curve25519

\brief This function imports a public key from the given in buffer and
stores it in the  curve25519_key structure.

\return 0 Returned on successfully importing the public key into the
curve25519_key structure
\return ECC_BAD_ARG_E Returned if any of the input parameters are NULL,
or if the inLen

parameter does not match the key size of the key structure.

Returns
BAD_FUNC_ARG Returned if any of the input parameters are NULL.
Parameters
inpointer to the buffer containing the public key to import
inLenlength of the public key to import
keypointer to the curve25519_key structure in which to store the key

Example

int ret;
byte pub[32];
// initialize pub with public key
// initialize key
ret = wc_curve25519_import_public(pub,sizeof(pub), &key);
if (ret != 0) {
// error exporting key
}
Definition curve25519.h:70
See also
wc_curve25519_init
wc_curve25519_export_public
wc_curve25519_import_private_raw
wc_curve25519_public_ex

Variable Documentation

◆ C

C
extern
Initial value:
{
#endif
#define CURVE25519_KEYSIZE 32
#ifdef WOLFSSL_NAMES_STATIC
typedef char curve25519_str[12]