libssh  0.8.4
The SSH library
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_ */
Definition: session.h:102
Definition: buffer.c:47