mirror of
https://github.com/lux-tel/libsession-util.git
synced 2026-10-30 20:25:11 +00:00
This is more accurate as we are returning just the 64 byte libsodium style private key, not the public and private key std::pair (32, 64b) respectively which is what other functions use the `keypair` nomenclamenture to denote.
118 lines
4.2 KiB
C
118 lines
4.2 KiB
C
#pragma once
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <stddef.h>
|
|
|
|
#include "export.h"
|
|
|
|
/// API: crypto/session_ed25519_key_pair
|
|
///
|
|
/// Generates a random ed25519 key pair.
|
|
///
|
|
/// Inputs:
|
|
/// - `ed25519_pk_out` -- [out] pointer to a buffer of 32 bytes where the public key will be
|
|
/// written.
|
|
/// - `ed25519_sk_out` -- [out] pointer to a buffer of 64 bytes where the private key will be
|
|
/// written.
|
|
///
|
|
/// Outputs:
|
|
/// - `bool` -- True if the seed was successfully retrieved, false if failed.
|
|
LIBSESSION_EXPORT bool session_ed25519_key_pair(
|
|
unsigned char* ed25519_pk_out, /* 32 byte output buffer */
|
|
unsigned char* ed25519_sk_out /* 64 byte output buffer */);
|
|
|
|
/// API: crypto/session_ed25519_key_pair_seed
|
|
///
|
|
/// Generates a ed25519 key pair for a 32 byte seed.
|
|
///
|
|
/// Inputs:
|
|
/// - `ed25519_seed` -- [in] the 32 byte seed.
|
|
/// - `ed25519_pk_out` -- [out] pointer to a buffer of 32 bytes where the public key will be
|
|
/// written.
|
|
/// - `ed25519_sk_out` -- [out] pointer to a buffer of 64 bytes where the private key will be
|
|
/// written.
|
|
///
|
|
/// Outputs:
|
|
/// - `bool` -- True if the seed was successfully retrieved, false if failed.
|
|
LIBSESSION_EXPORT bool session_ed25519_key_pair_seed(
|
|
const unsigned char* ed25519_seed, /* 32 bytes */
|
|
unsigned char* ed25519_pk_out, /* 32 byte output buffer */
|
|
unsigned char* ed25519_sk_out /* 64 byte output buffer */);
|
|
|
|
/// API: crypto/session_seed_for_ed_privkey
|
|
///
|
|
/// Returns the seed for an ed25519 key pair given either the libsodium-style secret key, 64
|
|
/// bytes.
|
|
///
|
|
/// Inputs:
|
|
/// - `ed25519_privkey` -- [in] the libsodium-style secret key of the sender, 64 bytes.
|
|
/// - `ed25519_seed_out` -- [out] pointer to a buffer of 32 bytes where the seed will be written.
|
|
///
|
|
/// Outputs:
|
|
/// - `bool` -- True if the seed was successfully retrieved, false if failed.
|
|
LIBSESSION_EXPORT bool session_seed_for_ed_privkey(
|
|
const unsigned char* ed25519_privkey, /* 64 bytes */
|
|
unsigned char* ed25519_seed_out /* 32 byte output buffer */);
|
|
|
|
/// API: crypto/session_ed25519_sign
|
|
///
|
|
/// Generates a signature for the message using the libsodium-style ed25519 secret key, 64 bytes.
|
|
///
|
|
/// Inputs:
|
|
/// - `ed25519_privkey` -- [in] the libsodium-style secret key of the sender, 64 bytes.
|
|
/// - `msg` -- [in] the data to generate a signature for.
|
|
/// - `msg_len` -- [in] the length of the `msg` data.
|
|
/// - `ed25519_sig_out` -- [out] pointer to a buffer of 64 bytes where the signature will be
|
|
/// written.
|
|
///
|
|
/// Outputs:
|
|
/// - `bool` -- True if the seed was successfully retrieved, false if failed.
|
|
LIBSESSION_EXPORT bool session_ed25519_sign(
|
|
const unsigned char* ed25519_privkey, /* 64 bytes */
|
|
const unsigned char* msg,
|
|
size_t msg_len,
|
|
unsigned char* ed25519_sig_out /* 64 byte output buffer */);
|
|
|
|
/// API: crypto/session_ed25519_verify
|
|
///
|
|
/// Verify a message and signature for a given pubkey.
|
|
///
|
|
/// Inputs:
|
|
/// - `sig` -- [in] the signature to verify, 64 bytes.
|
|
/// - `pubkey` -- [in] the pubkey for the secret key that was used to generate the signature, 32
|
|
/// bytes.
|
|
/// - `msg` -- [in] the data to verify the signature for.
|
|
/// - `msg_len` -- [in] the length of the `msg` data.
|
|
///
|
|
/// Outputs:
|
|
/// - A flag indicating whether the signature is valid
|
|
LIBSESSION_EXPORT bool session_ed25519_verify(
|
|
const unsigned char* sig, /* 64 bytes */
|
|
const unsigned char* pubkey,
|
|
const unsigned char* msg,
|
|
size_t msg_len);
|
|
|
|
/// API: crypto/session_ed25519_pro_privkey_for_ed25519_seed
|
|
///
|
|
/// Generate the deterministic Master Session Pro key for signing requests to interact with the
|
|
/// Session Pro features of the protocol.
|
|
///
|
|
/// Inputs:
|
|
/// - `ed25519_seed` -- [in] the seed to the long-term key for the Session account to derive the
|
|
/// deterministic key from.
|
|
/// - `ed25519_sk_out` -- [out] pointer to a buffer of 64 bytes where the private key will be
|
|
/// written.
|
|
///
|
|
/// Outputs:
|
|
/// - `bool` -- True if the key pair was successfully derived, false if failed.
|
|
LIBSESSION_EXPORT bool session_ed25519_pro_privkey_for_ed25519_seed(
|
|
const unsigned char* ed25519_seed, /* 32 bytes */
|
|
unsigned char* ed25519_sk_out /*64 byte output buffer*/);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|