557 lines
18 KiB
C
557 lines
18 KiB
C
/*
|
|
******************************************************************************
|
|
* IPSSH CONFIGURATION FILE
|
|
*
|
|
* Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: ipssh_config.c,v $ $Revision: 1.49.10.9 $
|
|
* $Source: /home/interpeak/CVSRoot/ipssh/config/ipssh_config.c,v $
|
|
* $Author: svc-cmnet $
|
|
* $State: Exp $ $Locker: $
|
|
*
|
|
* INTERPEAK_COPYRIGHT_STRING
|
|
* Design and implementation by Roger Boden <roger@interpeak.se>
|
|
******************************************************************************
|
|
*/
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 1 DESCRIPTION
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 2 INCLUDE FILES
|
|
****************************************************************************
|
|
*/
|
|
|
|
#include "ipssh_config.h"
|
|
|
|
#include <ipcom_type.h>
|
|
#include <ipcom_cstyle.h>
|
|
#include <ipcom_clib.h>
|
|
#include <ipcom_shell.h>
|
|
#include <ipcom_err.h>
|
|
#include <ipcom_sysvar.h>
|
|
|
|
#include <ipssh.h>
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 3 DEFINES
|
|
****************************************************************************
|
|
*/
|
|
#ifndef IPSSH_GET_SFTP_FUNC_CB
|
|
#define IPSSH_GET_SFTP_FUNC_CB ipssh_get_sftp_func_example_cb
|
|
#endif
|
|
|
|
#ifndef IPSSH_SFTP_CHECK_ACCESS_CB
|
|
#define IPSSH_SFTP_CHECK_ACCESS_CB ipssh_sftp_check_access_example_cb
|
|
#endif
|
|
|
|
#ifndef IPSSH_SHELL_CHECK_ACCESS_CB
|
|
#define IPSSH_SHELL_CHECK_ACCESS_CB ipssh_shell_check_access_example_cb
|
|
#endif
|
|
|
|
|
|
#ifndef IPSSH_VALIDATE_USERID_PW_CB
|
|
#define IPSSH_VALIDATE_USERID_PW_CB ipssh_validate_userid_pw_example_cb
|
|
#endif
|
|
|
|
#ifndef IPSSH_VALIDATE_PUBKEY_CB
|
|
#define IPSSH_VALIDATE_PUBKEY_CB ipssh_validate_pubkey_example_cb
|
|
#endif
|
|
|
|
#ifndef IPSSH_VALIDATE_HOSTBASED_CB
|
|
#define IPSSH_VALIDATE_HOSTBASED_CB ipssh_validate_hostbased_example_cb
|
|
#endif
|
|
|
|
#ifndef IPSSH_VALIDATE_RSA_PUBKEY_V1_CB
|
|
#define IPSSH_VALIDATE_RSA_PUBKEY_V1_CB ipssh_validate_rsa_pubkey_v1_example_cb
|
|
#endif
|
|
|
|
#ifndef IPSSH_AUTH_COMPLETE_CB
|
|
#define IPSSH_AUTH_COMPLETE_CB ipssh_auth_complete_example_cb
|
|
#endif
|
|
|
|
#ifndef IPSSH_VALIDATE_SRV_PUBLIC_KEY_CB
|
|
#define IPSSH_VALIDATE_SRV_PUBLIC_KEY_CB ipssh_validate_srv_public_key_example_cb
|
|
#endif
|
|
|
|
#ifndef IPSSH_LOAD_RSA_KEY_CB
|
|
#define IPSSH_LOAD_RSA_KEY_CB ipssh_load_rsa_key_example_cb
|
|
#endif
|
|
|
|
#ifndef IPSSH_LOAD_RSA_KEYEX_KEY_CB
|
|
#define IPSSH_LOAD_RSA_KEYEX_KEY_CB ipssh_load_rsa_keyex_key_example_cb
|
|
#endif
|
|
|
|
#ifndef IPSSH_LOAD_DSA_KEY_CB
|
|
#define IPSSH_LOAD_DSA_KEY_CB ipssh_load_dsa_key_example_cb
|
|
#endif
|
|
|
|
#ifndef SSH_SFTP_START_DIR
|
|
#define SSH_SFTP_START_DIR "/ram"
|
|
#endif
|
|
|
|
#ifndef SSH_DSA_KEY_ID
|
|
#define SSH_DSA_KEY_ID "default_dsa"
|
|
#endif
|
|
|
|
#ifndef SSH_RSA_KEY_ID
|
|
#define SSH_RSA_KEY_ID "default_rsa"
|
|
#endif
|
|
|
|
#ifndef SSH_RSA_KEYEX_KEY_ID
|
|
#define SSH_RSA_KEYEX_KEY_ID "default_rsa"
|
|
#endif
|
|
|
|
#ifndef SSH_AUTH_HOSTBASED_ALLOWED
|
|
#define SSH_AUTH_HOSTBASED_ALLOWED "1"
|
|
#endif
|
|
|
|
#ifndef SSH_AUTH_HOSTBASED_REQUIRED
|
|
#define SSH_AUTH_HOSTBASED_REQUIRED "0"
|
|
#endif
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 4 TYPES
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 5 EXTERN PROTOTYPES
|
|
****************************************************************************
|
|
*/
|
|
|
|
|
|
IP_GLOBAL int ipssh_stop_cmd(int argc, char **argv);
|
|
IP_GLOBAL int ipssh_cmd_sftp(int argc, char **argv);
|
|
IP_GLOBAL int ipssh_list_cmd(int argc, char **argv);
|
|
IP_GLOBAL int ipssh_keyfp_cmd(int argc, char **argv);
|
|
#ifdef IPTESTENGINE
|
|
IP_GLOBAL Ip_err ipssh_cmd_ssh_subsystem(int argc, char** argv);
|
|
IP_GLOBAL Ip_err ipssh_cmd_ssh_stdio_echo(int argc, char** argv);
|
|
#endif
|
|
|
|
IP_PUBLIC Ipssh_sftp_func_cb* IPSSH_GET_SFTP_FUNC_CB(const char *path);
|
|
IP_PUBLIC Ip_err IPSSH_SFTP_CHECK_ACCESS_CB(const char *user,
|
|
int action,
|
|
const char *path,
|
|
int flags);
|
|
IP_PUBLIC Ip_err IPSSH_SHELL_CHECK_ACCESS_CB(const char *user,
|
|
int flags);
|
|
IP_PUBLIC Ip_err IPSSH_VALIDATE_USERID_PW_CB(const char *user,
|
|
const char *pw,
|
|
Ipcom_shell_ctx* sh_ctx);
|
|
IP_PUBLIC Ip_err IPSSH_VALIDATE_PUBKEY_CB(const char *user,
|
|
EVP_PKEY *pub_key,
|
|
Ipcom_shell_ctx* sh_ctx);
|
|
IP_PUBLIC Ip_err IPSSH_VALIDATE_HOSTBASED_CB(const char *user,
|
|
char *host,
|
|
EVP_PKEY *pub_key,
|
|
Ipcom_shell_ctx* sh_ctx);
|
|
IP_PUBLIC RSA * IPSSH_VALIDATE_RSA_PUBKEY_V1_CB(const char *user,
|
|
BIGNUM *modulus,
|
|
Ipcom_shell_ctx* sh_ctx);
|
|
IP_PUBLIC Ip_err IPSSH_AUTH_COMPLETE_CB(const char* user,
|
|
Ipcom_shell_ctx* sh_ctx);
|
|
IP_PUBLIC Ip_err IPSSH_VALIDATE_SRV_PUBLIC_KEY_CB(EVP_PKEY *srv_key,
|
|
const union Ip_sockaddr_union *srv_addr);
|
|
IP_PUBLIC RSA* IPSSH_LOAD_RSA_KEY_CB(void);
|
|
IP_PUBLIC RSA* IPSSH_LOAD_RSA_KEYEX_KEY_CB(void);
|
|
IP_PUBLIC DSA* IPSSH_LOAD_DSA_KEY_CB(void);
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 6 LOCAL PROTOTYPES
|
|
****************************************************************************
|
|
*/
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 7 DATA
|
|
****************************************************************************
|
|
*/
|
|
|
|
IP_CONST Ipcom_sysvar ipssh_conf_sysvar[] =
|
|
{
|
|
IP_SYSVAR("ipssh.port", "22", SSH_PORT),
|
|
{ "ipssh.bind_addr", "0.0.0.0" },
|
|
IP_SYSVAR("ipssh.idle_timeout", "0", SSH_IDLE_TIMEOUT),
|
|
IP_SYSVAR("ipssh.max_clients", "20", SSH_MAX_CLIENTS),
|
|
IP_SYSVAR("ipssh.max_channels", "10", SSH_MAX_SHELLS),
|
|
#ifdef IPSSH_USE_AES
|
|
IP_SYSVAR("ipssh.enc.aes", "1", SSH_USE_AES),
|
|
IP_SYSVAR("ipssh.enc.aes192", "1", SSH_USE_AES),
|
|
IP_SYSVAR("ipssh.enc.aes256", "1", SSH_USE_AES),
|
|
#endif
|
|
#ifdef IPSSH_USE_DES
|
|
IP_SYSVAR("ipssh.enc.3des", "1", SSH_USE_3DES),
|
|
IP_SYSVAR("ipssh.enc.des", "0", SSH_USE_DES),
|
|
#endif
|
|
#ifdef IPSSH_USE_BLOWFISH
|
|
IP_SYSVAR("ipssh.enc.blowfish", "1", SSH_USE_BLOWFISH),
|
|
#endif
|
|
#ifdef IPSSH_USE_CAST
|
|
IP_SYSVAR("ipssh.enc.cast", "1", SSH_USE_CAST),
|
|
#endif
|
|
#ifdef IPSSH_USE_ARCFOUR
|
|
IP_SYSVAR("ipssh.enc.arcfour", "0", SSH_USE_ARCFOUR),
|
|
IP_SYSVAR("ipssh.enc.arcfour128", "1", SSH_USE_ARCFOUR_128),
|
|
#endif
|
|
IP_SYSVAR("ipssh.enc.none", "0", SSH_USE_NO_CIPHER),
|
|
|
|
#ifdef IPSSH_USE_SHA1
|
|
IP_SYSVAR("ipssh.mac.sha1", "1", SSH_USE_SHA1),
|
|
IP_SYSVAR("ipssh.mac.sha1-96", "1", SSH_USE_SHA1_96),
|
|
#endif
|
|
#ifdef _WRS_CONFIG_COMPONENT_IPSSH_SUPPORT_SHA2
|
|
#ifdef IPSSH_USE_SHA256
|
|
IP_SYSVAR("ipssh.mac.sha256", "1", SSH_USE_SHA256),
|
|
#endif
|
|
#ifdef IPSSH_USE_SHA512
|
|
IP_SYSVAR("ipssh.mac.sha512", "1", SSH_USE_SHA512),
|
|
#endif
|
|
#endif
|
|
#ifdef IPSSH_USE_MD5
|
|
IP_SYSVAR("ipssh.mac.md5", "0", SSH_USE_MD5),
|
|
IP_SYSVAR("ipssh.mac.md5-96", "0", SSH_USE_MD5_96),
|
|
#endif
|
|
IP_SYSVAR("ipssh.mac.none", "0", SSH_USE_NO_MAC),
|
|
|
|
/* Key-exchange mechanisms */
|
|
IP_SYSVAR("ipssh.kex.dh_gr1_sha1", "0", SSH_USE_DH_GR1_SHA1),
|
|
IP_SYSVAR("ipssh.kex.dh_gr14_sha1", "1", SSH_USE_DH_GR14_SHA1),
|
|
IP_SYSVAR("ipssh.kex.dh_gex.sha1", "1", SSH_USE_DH_GEX_SHA1),
|
|
IP_SYSVAR("ipssh.kex.dh_gex.sha256", "1", SSH_USE_DH_GEX_SHA256),
|
|
IP_SYSVAR("ipssh.kex.rsa1024-sha1", "1", SSH_USE_RSA1024_SHA1),
|
|
IP_SYSVAR("ipssh.kex.rsa2048-sha256", "0", SSH_USE_RSA2048_SHA256),
|
|
IP_SYSVAR("ipssh.kex.dh_gex.clt.min", "2048", SSH_USE_DH_GEX_CLT_MIN),
|
|
IP_SYSVAR("ipssh.kex.dh_gex.clt.n", "2048", SSH_USE_DH_GEX_CLT_N),
|
|
IP_SYSVAR("ipssh.kex.dh_gex.clt.max", "4096", SSH_USE_DH_GEX_CLT_MAX),
|
|
IP_SYSVAR("ipssh.kex.dh_gex.moduli_file", IPCOM_FILE_ROOT"moduli", SSH_MODULI_FILE),
|
|
|
|
#ifdef IPSSH_USE_V1
|
|
IP_SYSVAR("ipssh.v1", "0", SSH_USE_V1),
|
|
IP_SYSVAR("ipssh.v2", "1", SSH_USE_V2),
|
|
#endif
|
|
IP_SYSVAR("ipssh.service.terminal", "1", SSH_USE_TERMINAL),
|
|
#ifdef IPSSH_USE_SFTP
|
|
IP_SYSVAR("ipssh.service.sftp", "1", SSH_USE_SFTP),
|
|
IP_SYSVAR( "ipssh.sftp.start_dir", IPSSH_SFTP_START_DIR, SSH_SFTP_START_DIR ),
|
|
#endif
|
|
IP_SYSVAR("ipssh.service.port_fwd", "1", SSH_USE_PORT_FWD),
|
|
IP_SYSVAR("ipssh.key_id.rsa", "default_rsa", SSH_RSA_KEY_ID),
|
|
IP_SYSVAR("ipssh.key_id.rsa_keyex", "default_rsa", SSH_RSA_KEYEX_KEY_ID),
|
|
IP_SYSVAR("ipssh.key_id.dsa", "default_dsa", SSH_DSA_KEY_ID),
|
|
IP_SYSVAR("ipssh.auth.pw.allowed", "1", SSH_AUTH_PW_ALLOWED),
|
|
IP_SYSVAR("ipssh.auth.pw.required", "0", SSH_AUTH_PW_REQUIRED),
|
|
IP_SYSVAR("ipssh.auth.pub_key.allowed", "1", SSH_AUTH_PUB_KEY_ALLOWED),
|
|
IP_SYSVAR("ipssh.auth.pub_key.required", "0", SSH_AUTH_PUB_KEY_REQUIRED),
|
|
IP_SYSVAR("ipssh.auth.pub_key_first", "1", SSH_AUTH_PUB_KEY_FIRST),
|
|
IP_SYSVAR("ipssh.auth.hostbased.allowed", "1", SSH_AUTH_HOSTBASED_ALLOWED),
|
|
IP_SYSVAR("ipssh.auth.hostbased.required", "0", SSH_AUTH_HOSTBASED_REQUIRED),
|
|
IP_SYSVAR("ipssh.auth.max_fail", "3", SSH_AUTH_MAX_FAIL),
|
|
IP_SYSVAR("ipssh.host_key.rsa", "1", SSH_HOST_KEY_RSA),
|
|
IP_SYSVAR("ipssh.host_key.dsa", "1", SSH_HOST_KEY_DSA),
|
|
{ IP_NULL, IP_NULL }
|
|
};
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 8 STATIC FUNCTIONS
|
|
****************************************************************************
|
|
*/
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 9 GLOBAL FUNCTIONS
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 10 PUBLIC FUNCTIONS
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipssh_configure
|
|
*===========================================================================
|
|
* Description:
|
|
* Parameters:
|
|
* Returns:
|
|
*
|
|
*/
|
|
IP_GLOBAL Ip_err
|
|
ipssh_configure(void)
|
|
{
|
|
ipcom_sysvar_setv(ipssh_conf_sysvar, 0);
|
|
|
|
#ifdef IPSSH_USE_STOP_SPAWN
|
|
(void)ipcom_shell_add_cmd("ipssh_stop",
|
|
"ipssh_stop [-c <id>] [-a] [-h]",
|
|
"Stop SSH spawns",
|
|
(Ipcom_shell_cmd_type) ipssh_stop_cmd,
|
|
IPSSH_SHELLCMD_PROC_PRIO,
|
|
IPCOM_PROC_STACK_DEFAULT);
|
|
#endif
|
|
(void)ipcom_shell_add_cmd("ipssh_list",
|
|
"ipssh_list [-l] [-h]",
|
|
"List connected ssh clients",
|
|
(Ipcom_shell_cmd_type) ipssh_list_cmd,
|
|
IPSSH_SHELLCMD_PROC_PRIO,
|
|
IPCOM_PROC_STACK_DEFAULT);
|
|
#ifdef IPSSH_USE_SFTP_CLT_CMD
|
|
(void)ipcom_shell_add_cmd("sftp",
|
|
"sftp",
|
|
"sftp file transfer",
|
|
(Ipcom_shell_cmd_type) ipssh_cmd_sftp,
|
|
IPSSH_SHELLCMD_PROC_PRIO,
|
|
IPCOM_PROC_STACK_MAX);
|
|
#endif
|
|
|
|
#ifdef IPSSH_USE_KEY_FINGERPRINT
|
|
(void)ipcom_shell_add_cmd("keyfp",
|
|
"keyfp -f <file> <-b|-h>",
|
|
"Generate key finger print",
|
|
(Ipcom_shell_cmd_type) ipssh_keyfp_cmd,
|
|
IPSSH_SHELLCMD_PROC_PRIO,
|
|
IPCOM_PROC_STACK_DEFAULT);
|
|
#endif
|
|
|
|
#ifdef IPTESTENGINE
|
|
(void)ipcom_shell_add_cmd("ssh_subsystem",
|
|
"ssh_subsystem [-p port] [-u user] [-w password] -s subsystem host",
|
|
"",
|
|
(Ipcom_shell_cmd_type) ipssh_cmd_ssh_subsystem,
|
|
IPSSH_SHELLCMD_PROC_PRIO,
|
|
IPCOM_PROC_STACK_DEFAULT);
|
|
(void)ipcom_shell_add_cmd("stdio_echo",
|
|
"stdio_echo",
|
|
"",
|
|
(Ipcom_shell_cmd_type) ipssh_cmd_ssh_stdio_echo,
|
|
IPSSH_SHELLCMD_PROC_PRIO,
|
|
IPCOM_PROC_STACK_DEFAULT);
|
|
#endif
|
|
|
|
#ifdef IPSSH_USE_DH_GROUP_EX_EXAMPLE_MODULI_FILE
|
|
ipssh_create_dh_gex_moduli_example_file();
|
|
#endif
|
|
|
|
return IPCOM_SUCCESS;
|
|
}
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipssh_get_sftp_func_cb
|
|
*===========================================================================
|
|
* Description:
|
|
* Parameters:
|
|
* Returns:
|
|
*
|
|
*/
|
|
IP_PUBLIC Ipssh_sftp_func_cb *
|
|
ipssh_get_sftp_func_cb(const char *path)
|
|
{
|
|
(void) path;
|
|
|
|
return IPSSH_GET_SFTP_FUNC_CB(path);
|
|
}
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipssh_sftp_check_access_cb
|
|
*===========================================================================
|
|
* Description:
|
|
* Parameters:
|
|
* Returns:
|
|
*
|
|
*/
|
|
IP_PUBLIC Ip_err
|
|
ipssh_sftp_check_access_cb(const char *user, int action, const char *path, int flags)
|
|
{
|
|
return IPSSH_SFTP_CHECK_ACCESS_CB(user, action, path, flags);
|
|
}
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipssh_shell_check_access_cb
|
|
*===========================================================================
|
|
* Description:
|
|
* Parameters:
|
|
* Returns:
|
|
*
|
|
*/
|
|
IP_PUBLIC Ip_err
|
|
ipssh_shell_check_access_cb(const char *user, int flags)
|
|
{
|
|
return IPSSH_SHELL_CHECK_ACCESS_CB(user, flags);
|
|
}
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipssh_validate_userid_pw_cb
|
|
*===========================================================================
|
|
* Description:
|
|
* Parameters:
|
|
* Returns:
|
|
*
|
|
*/
|
|
IP_PUBLIC Ip_err
|
|
ipssh_validate_userid_pw_cb(const char *user, const char *pw, Ipcom_shell_ctx* sh_ctx)
|
|
{
|
|
return IPSSH_VALIDATE_USERID_PW_CB(user, pw, sh_ctx);
|
|
}
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipssh_validate_pubkey_cb
|
|
*===========================================================================
|
|
* Description:
|
|
* Parameters:
|
|
* Returns:
|
|
*
|
|
*/
|
|
IP_PUBLIC Ip_err
|
|
ipssh_validate_pubkey_cb(const char *user, EVP_PKEY *pub_key, Ipcom_shell_ctx* sh_ctx)
|
|
{
|
|
return IPSSH_VALIDATE_PUBKEY_CB(user, pub_key, sh_ctx);
|
|
}
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipssh_validate_hostbased_cb
|
|
*===========================================================================
|
|
* Description:
|
|
* Parameters:
|
|
* Returns:
|
|
*
|
|
*/
|
|
IP_PUBLIC Ip_err
|
|
ipssh_validate_hostbased_cb(const char *user, char *host, EVP_PKEY *pub_key, Ipcom_shell_ctx* sh_ctx)
|
|
{
|
|
return IPSSH_VALIDATE_HOSTBASED_CB(user, host, pub_key, sh_ctx);
|
|
}
|
|
|
|
|
|
#ifdef IPSSH_USE_RSA
|
|
/*
|
|
*===========================================================================
|
|
* ipssh_validate_rsa_pubkey_v1_cb
|
|
*===========================================================================
|
|
* Description:
|
|
* Parameters:
|
|
* Returns:
|
|
*
|
|
*/
|
|
IP_PUBLIC RSA *
|
|
ipssh_validate_rsa_pubkey_v1_cb(const char *user, BIGNUM *modulus, Ipcom_shell_ctx* sh_ctx)
|
|
{
|
|
return IPSSH_VALIDATE_RSA_PUBKEY_V1_CB(user, modulus, sh_ctx);
|
|
}
|
|
#endif
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipssh_auth_complete_cb
|
|
*===========================================================================
|
|
* Description:
|
|
* Parameters:
|
|
* Returns:
|
|
*
|
|
*/
|
|
IP_PUBLIC Ip_err
|
|
ipssh_auth_complete_cb(const char* user, Ipcom_shell_ctx* sh_ctx)
|
|
{
|
|
return IPSSH_AUTH_COMPLETE_CB(user, sh_ctx);
|
|
}
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipssh_validate_srv_public_key_cb
|
|
*===========================================================================
|
|
* Description:
|
|
* Parameters:
|
|
* Returns:
|
|
*
|
|
*/
|
|
IP_PUBLIC Ip_err
|
|
ipssh_validate_srv_public_key_cb(EVP_PKEY *srv_key, const union Ip_sockaddr_union *srv_addr)
|
|
{
|
|
return IPSSH_VALIDATE_SRV_PUBLIC_KEY_CB(srv_key, srv_addr);
|
|
}
|
|
|
|
|
|
#ifdef IPSSH_USE_RSA
|
|
/*
|
|
*===========================================================================
|
|
* ipssh_load_rsa_key_cb
|
|
*===========================================================================
|
|
* Description:
|
|
* Parameters:
|
|
* Returns:
|
|
*
|
|
*/
|
|
IP_PUBLIC RSA *
|
|
ipssh_load_rsa_key_cb(void)
|
|
{
|
|
return IPSSH_LOAD_RSA_KEY_CB();
|
|
}
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipssh_load_rsa_keyex_key_cb
|
|
*===========================================================================
|
|
* Description:
|
|
* Parameters:
|
|
* Returns:
|
|
*
|
|
*/
|
|
IP_PUBLIC RSA *
|
|
ipssh_load_rsa_keyex_key_cb(void)
|
|
{
|
|
return IPSSH_LOAD_RSA_KEYEX_KEY_CB();
|
|
}
|
|
#endif
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* ipssh_load_dsa_key_cb
|
|
*===========================================================================
|
|
* Description:
|
|
* Parameters:
|
|
* Returns:
|
|
*
|
|
*/
|
|
IP_PUBLIC DSA *
|
|
ipssh_load_dsa_key_cb(void)
|
|
{
|
|
return IPSSH_LOAD_DSA_KEY_CB();
|
|
}
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* END OF FILE
|
|
****************************************************************************
|
|
*/
|
|
|