mirror of
https://github.com/oxen-io/session-android.git
synced 2025-01-11 06:23:38 +00:00
35 lines
1.5 KiB
C
35 lines
1.5 KiB
C
#pragma once
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/// XEd25519-signed a message given a curve25519 privkey and message. Writes the 64-byte signature
|
|
/// to `sig` on success and returns 0. Returns non-zero on failure.
|
|
__attribute__((warn_unused_result)) int session_xed25519_sign(
|
|
unsigned char* signature /* 64 byte buffer */,
|
|
const unsigned char* curve25519_privkey /* 32 bytes */,
|
|
const unsigned char* msg,
|
|
const unsigned int msg_len);
|
|
|
|
/// Verifies an XEd25519-signed message given a 64-byte signature, 32-byte curve25519 pubkey, and
|
|
/// message. Returns 0 if the signature verifies successfully, non-zero on failure.
|
|
__attribute__((warn_unused_result)) int session_xed25519_verify(
|
|
const unsigned char* signature /* 64 bytes */,
|
|
const unsigned char* pubkey /* 32-bytes */,
|
|
const unsigned char* msg,
|
|
const unsigned int msg_len);
|
|
|
|
/// Given a curve25519 pubkey, this writes the associated XEd25519-derived Ed25519 pubkey into
|
|
/// ed25519_pubkey. Note, however, that there are *two* possible Ed25519 pubkeys that could result
|
|
/// in a given curve25519 pubkey: this always returns the positive value. You can get the other
|
|
/// possibility (the negative) by flipping the sign bit, i.e. `returned_pubkey[31] |= 0x80`.
|
|
/// Returns 0 on success, non-0 on failure.
|
|
__attribute__((warn_unused_result)) int session_xed25519_pubkey(
|
|
unsigned char* ed25519_pubkey /* 32-byte output buffer */,
|
|
const unsigned char* curve25519_pubkey /* 32 bytes */);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|