27#include "libssh/libssh.h"
28#include "libssh/libcrypto.h"
29#include "libssh/libgcrypt.h"
30#include "libssh/libmbedcrypto.h"
48 SSH_HMAC_AEAD_POLY1305,
60 enum ssh_hmac_e hmac_type;
64enum ssh_crypto_direction_e {
66 SSH_DIRECTION_OUT = 2,
67 SSH_DIRECTION_BOTH = 3,
75void md5_update(MD5CTX c,
const void *data,
size_t len);
76void md5_final(
unsigned char *md,MD5CTX c);
78SHACTX sha1_init(
void);
79void sha1_update(SHACTX c,
const void *data,
size_t len);
80void sha1_final(
unsigned char *md,SHACTX c);
81void sha1(
const unsigned char *digest,
size_t len,
unsigned char *hash);
83SHA256CTX sha256_init(
void);
84void sha256_update(SHA256CTX c,
const void *data,
size_t len);
85void sha256_final(
unsigned char *md,SHA256CTX c);
86void sha256(
const unsigned char *digest,
size_t len,
unsigned char *hash);
88SHA384CTX sha384_init(
void);
89void sha384_update(SHA384CTX c,
const void *data,
size_t len);
90void sha384_final(
unsigned char *md,SHA384CTX c);
91void sha384(
const unsigned char *digest,
size_t len,
unsigned char *hash);
93SHA512CTX sha512_init(
void);
94void sha512_update(SHA512CTX c,
const void *data,
size_t len);
95void sha512_final(
unsigned char *md,SHA512CTX c);
96void sha512(
const unsigned char *digest,
size_t len,
unsigned char *hash);
98void evp(
int nid,
unsigned char *digest,
size_t len,
unsigned char *hash,
unsigned int *hlen);
99EVPCTX evp_init(
int nid);
100void evp_update(EVPCTX ctx,
const void *data,
size_t len);
101void evp_final(EVPCTX ctx,
unsigned char *md,
unsigned int *mdlen);
103HMACCTX hmac_init(
const void *key,
size_t len,
enum ssh_hmac_e type);
104int hmac_update(HMACCTX c,
const void *data,
size_t len);
105int hmac_final(HMACCTX ctx,
unsigned char *hashmacbuf,
size_t *len);
106size_t hmac_digest_len(
enum ssh_hmac_e type);
109 unsigned char *key,
size_t key_len,
110 uint8_t key_type,
unsigned char *output,
111 size_t requested_len);
113int crypt_set_algorithms_client(
ssh_session session);
114int crypt_set_algorithms_server(
ssh_session session);
118void ssh_reseed(
void);
119int ssh_crypto_init(
void);
120void ssh_crypto_finalize(
void);
125const char *ssh_hmac_type_to_string(
enum ssh_hmac_e hmac_type,
bool etm);
127#if defined(HAVE_LIBCRYPTO) && OPENSSL_VERSION_NUMBER >= 0x30000000L
128int evp_build_pkey(
const char* name, OSSL_PARAM_BLD *param_bld, EVP_PKEY **pkey,
int selection);
129int evp_dup_dsa_pkey(
const ssh_key key,
ssh_key new_key,
int demote);
130int evp_dup_rsa_pkey(
const ssh_key key,
ssh_key new_key,
int demote);
131int evp_dup_ecdsa_pkey(
const ssh_key key,
ssh_key new_key,
int demote);