33 #include "libssh/wrapper.h"    42 #ifdef HAVE_OPENSSL_ECDH_H    43 #include <openssl/ecdh.h>    45 #include "libssh/ecdh.h"    46 #include "libssh/kex.h"    47 #include "libssh/curve25519.h"    49 #define DIGEST_MAX_LEN 64    51 enum ssh_key_exchange_e {
    53   SSH_KEX_DH_GROUP1_SHA1=1,
    55   SSH_KEX_DH_GROUP14_SHA1,
    57   SSH_KEX_ECDH_SHA2_NISTP256,
    59   SSH_KEX_ECDH_SHA2_NISTP384,
    61   SSH_KEX_ECDH_SHA2_NISTP521,
    63   SSH_KEX_CURVE25519_SHA256_LIBSSH_ORG,
    65   SSH_KEX_CURVE25519_SHA256,
    67   SSH_KEX_DH_GROUP16_SHA512,
    69   SSH_KEX_DH_GROUP18_SHA512,
    87 #ifdef HAVE_OPENSSL_ECC    89 #elif defined HAVE_GCRYPT_ECC    90     gcry_sexp_t ecdh_privkey;
    91 #elif defined HAVE_LIBMBEDCRYPTO    92     mbedtls_ecp_keypair *ecdh_privkey;
    97 #ifdef HAVE_CURVE25519    98     ssh_curve25519_privkey curve25519_privkey;
    99     ssh_curve25519_pubkey curve25519_client_pubkey;
   100     ssh_curve25519_pubkey curve25519_server_pubkey;
   104     unsigned char *session_id;
   105     unsigned char *secret_hash; 
   106     unsigned char *encryptIV;
   107     unsigned char *decryptIV;
   108     unsigned char *decryptkey;
   109     unsigned char *encryptkey;
   110     unsigned char *encryptMAC;
   111     unsigned char *decryptMAC;
   112     unsigned char hmacbuf[DIGEST_MAX_LEN];
   114     enum ssh_hmac_e in_hmac, out_hmac; 
   119     int delayed_compress_in; 
   120     int delayed_compress_out;
   121     void *compress_out_ctx; 
   122     void *compress_in_ctx; 
   126     char *kex_methods[SSH_KEX_METHODS];
   127     enum ssh_key_exchange_e kex_type;
   128     enum ssh_mac_e mac_type; 
   133     unsigned int blocksize; 
   134     enum ssh_cipher_e ciphertype;
   135     uint32_t lenfield_blocksize; 
   137 #ifdef HAVE_LIBGCRYPT   138     gcry_cipher_hd_t *key;
   139 #elif defined HAVE_LIBCRYPTO   140     struct ssh_3des_key_schedule *des3_key;
   141     struct ssh_aes_key_schedule *aes_key;
   142     const EVP_CIPHER *cipher;
   144 #elif defined HAVE_LIBMBEDCRYPTO   145     mbedtls_cipher_context_t encrypt_ctx;
   146     mbedtls_cipher_context_t decrypt_ctx;
   147     mbedtls_cipher_type_t type;
   150     unsigned int keysize; 
   160         size_t len, uint8_t *mac, uint64_t seq);
   162         uint8_t *out, 
size_t len, uint64_t seq);
   163     int (*aead_decrypt)(
struct ssh_cipher_struct *cipher, 
void *complete_packet, uint8_t *out,
   164         size_t encrypted_size, uint64_t seq);
 
Definition: chachapoly.c:32