libssh 0.7.5

curve25519.h
1 /*
2 * This file is part of the SSH Library
3 *
4 * Copyright (c) 2013 by Aris Adamantiadis <aris@badcode.be>
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation,
9 * version 2.1 of the License.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21 #ifndef CURVE25519_H_
22 #define CURVE25519_H_
23
24 #include "config.h"
25 #include "libssh.h"
26
27 #ifdef WITH_NACL
28
29 #include <nacl/crypto_scalarmult_curve25519.h>
30 #define CURVE25519_PUBKEY_SIZE crypto_scalarmult_curve25519_BYTES
31 #define CURVE25519_PRIVKEY_SIZE crypto_scalarmult_curve25519_SCALARBYTES
32 #define crypto_scalarmult_base crypto_scalarmult_curve25519_base
33 #define crypto_scalarmult crypto_scalarmult_curve25519
34 #else
35
36 #define CURVE25519_PUBKEY_SIZE 32
37 #define CURVE25519_PRIVKEY_SIZE 32
38 int crypto_scalarmult_base(unsigned char *q, const unsigned char *n);
39 int crypto_scalarmult(unsigned char *q, const unsigned char *n, const unsigned char *p);
40 #endif /* WITH_NACL */
41
42 #ifdef HAVE_ECC
43 #define HAVE_CURVE25519 1
44 #endif
45
46 typedef unsigned char ssh_curve25519_pubkey[CURVE25519_PUBKEY_SIZE];
47 typedef unsigned char ssh_curve25519_privkey[CURVE25519_PRIVKEY_SIZE];
48
49
50 int ssh_client_curve25519_init(ssh_session session);
51 int ssh_client_curve25519_reply(ssh_session session, ssh_buffer packet);
52
53 #ifdef WITH_SERVER
54 int ssh_server_curve25519_init(ssh_session session, ssh_buffer packet);
55 #endif /* WITH_SERVER */
56
57 #endif /* CURVE25519_H_ */