epan: use json_dumper for json outputs.
[metze/wireshark/wip.git] / wsutil / curve25519.h
1 /* curve25519.h
2  * NaCl/Sodium-compatible API for Curve25519 cryptography.
3  *
4  * Copyright (c) 2018, Peter Wu <peter@lekensteyn.nl>
5  *
6  * Wireshark - Network traffic analyzer
7  * By Gerald Combs <gerald@wireshark.org>
8  * Copyright 1998 Gerald Combs
9  *
10  * SPDX-License-Identifier: GPL-2.0-or-later
11  */
12
13 #ifndef __CURVE25519_H__
14 #define __CURVE25519_H__
15
16 #include "ws_symbol_export.h"
17 #include "wsgcrypt.h"
18
19 #if GCRYPT_VERSION_NUMBER >= 0x010700 /* 1.7.0 */
20 #define HAVE_X25519
21 #endif
22
23 #ifdef HAVE_X25519
24 /*
25  * Computes Q = X25519(n, P). In other words, given the secret key n, the public
26  * key P, compute the shared secret Q. Each key is 32 bytes long.
27  * Returns 0 on success or -1 on failure.
28  */
29 WS_DLL_PUBLIC
30 int crypto_scalarmult_curve25519(unsigned char *q, const unsigned char *n,
31                                  const unsigned char *p);
32
33 /*
34  * Computes the Curve25519 32-byte public key Q from the 32-byte secret key n.
35  * Returns 0 on success or -1 on failure.
36  */
37 WS_DLL_PUBLIC
38 int crypto_scalarmult_curve25519_base(unsigned char *q, const unsigned char *n);
39 #endif /* HAVE_X25519 */
40
41 #endif /* __CURVE25519_H__ */