00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef CURVE25519_H_
00022 #define CURVE25519_H_
00023
00024 #include "config.h"
00025 #include "libssh.h"
00026
00027 #ifdef WITH_NACL
00028
00029 #include <nacl/crypto_scalarmult_curve25519.h>
00030 #define CURVE25519_PUBKEY_SIZE crypto_scalarmult_curve25519_BYTES
00031 #define CURVE25519_PRIVKEY_SIZE crypto_scalarmult_curve25519_SCALARBYTES
00032 #define crypto_scalarmult_base crypto_scalarmult_curve25519_base
00033 #define crypto_scalarmult crypto_scalarmult_curve25519
00034 #else
00035
00036 #define CURVE25519_PUBKEY_SIZE 32
00037 #define CURVE25519_PRIVKEY_SIZE 32
00038 int crypto_scalarmult_base(unsigned char *q, const unsigned char *n);
00039 int crypto_scalarmult(unsigned char *q, const unsigned char *n, const unsigned char *p);
00040 #endif
00041
00042 #ifdef HAVE_ECC
00043 #define HAVE_CURVE25519 1
00044 #endif
00045
00046 typedef unsigned char ssh_curve25519_pubkey[CURVE25519_PUBKEY_SIZE];
00047 typedef unsigned char ssh_curve25519_privkey[CURVE25519_PRIVKEY_SIZE];
00048
00049
00050 int ssh_client_curve25519_init(ssh_session session);
00051 int ssh_client_curve25519_reply(ssh_session session, ssh_buffer packet);
00052
00053 #ifdef WITH_SERVER
00054 int ssh_server_curve25519_init(ssh_session session, ssh_buffer packet);
00055 #endif
00056
00057 #endif