mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-06 10:27:22 +09:00
More work on the server side and sftp.
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@9 7dcaeef0-15fb-0310-b436-a5af3365683c
This commit is contained in:
@@ -213,14 +213,14 @@ void dh_build_k(SSH_SESSION *session){
|
||||
#endif
|
||||
bignum_ctx_free(ctx);
|
||||
}
|
||||
|
||||
/*
|
||||
static void sha_add(STRING *str,SHACTX *ctx){
|
||||
sha1_update(ctx,str,string_len(str)+4);
|
||||
#ifdef DEBUG_CRYPTO
|
||||
ssh_print_hexa("partial hashed sessionid",str,string_len(str)+4);
|
||||
#endif
|
||||
}
|
||||
|
||||
*/
|
||||
void make_sessionid(SSH_SESSION *session){
|
||||
SHACTX *ctx;
|
||||
STRING *num,*str;
|
||||
|
||||
@@ -34,7 +34,11 @@ MA 02111-1307, USA. */
|
||||
#include <string.h>
|
||||
|
||||
static SSH_MESSAGE *message_new(SSH_SESSION *session){
|
||||
SSH_MESSAGE *msg=malloc(sizeof(SSH_MESSAGE));
|
||||
SSH_MESSAGE *msg=session->ssh_message;
|
||||
if(!msg){
|
||||
msg=malloc(sizeof(SSH_MESSAGE));
|
||||
session->ssh_message=msg;
|
||||
}
|
||||
memset(msg,0,sizeof (*msg));
|
||||
msg->session=session;
|
||||
return msg;
|
||||
@@ -402,5 +406,4 @@ void ssh_message_free(SSH_MESSAGE *msg){
|
||||
break;
|
||||
}
|
||||
memset(msg,0,sizeof(*msg));
|
||||
free(msg);
|
||||
}
|
||||
|
||||
@@ -375,7 +375,7 @@ static int packet_send1(SSH_SESSION *session){
|
||||
*/
|
||||
padding=blocksize-(currentlen % blocksize);
|
||||
if(session->current_crypto)
|
||||
ssh_get_random(padstring,padding);
|
||||
ssh_get_random(padstring,padding,0);
|
||||
else
|
||||
memset(padstring,0,padding);
|
||||
finallen=htonl(currentlen);
|
||||
|
||||
@@ -211,6 +211,8 @@ static int dh_handshake_server(SSH_SESSION *session){
|
||||
case TYPE_RSA:
|
||||
prv=session->rsa_key;
|
||||
break;
|
||||
default:
|
||||
prv=NULL;
|
||||
}
|
||||
pub=publickey_from_privatekey(prv);
|
||||
pubkey=publickey_to_string(pub);
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
#include <string.h>
|
||||
#include "libssh/libssh.h"
|
||||
#include "libssh/priv.h"
|
||||
|
||||
#include "libssh/server.h"
|
||||
#define FIRST_CHANNEL 42 // why not ? it helps to find bugs.
|
||||
|
||||
SSH_SESSION *ssh_new() {
|
||||
@@ -72,6 +72,10 @@ void ssh_cleanup(SSH_SESSION *session){
|
||||
private_key_free(session->dsa_key);
|
||||
if(session->rsa_key)
|
||||
private_key_free(session->rsa_key);
|
||||
if(session->ssh_message){
|
||||
ssh_message_free(session->ssh_message);
|
||||
free(session->ssh_message);
|
||||
}
|
||||
memset(session,'X',sizeof(SSH_SESSION)); /* burn connection, it could hangs
|
||||
sensitive datas */
|
||||
free(session);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/* don't look further if you believe this is just FTP over some tunnel. It IS different */
|
||||
/* This file contains code written by Nick Zitzmann */
|
||||
/*
|
||||
Copyright 2003 Aris Adamantiadis
|
||||
Copyright 2003-2005 Aris Adamantiadis
|
||||
|
||||
This file is part of the SSH Library
|
||||
|
||||
@@ -60,6 +60,16 @@ SFTP_SESSION *sftp_new(SSH_SESSION *session){
|
||||
return sftp;
|
||||
}
|
||||
|
||||
#ifndef NO_SERVER
|
||||
SFTP_SESSION *sftp_server_new(SSH_SESSION *session, CHANNEL *chan){
|
||||
SFTP_SESSION *sftp=malloc(sizeof(SFTP_SESSION));
|
||||
memset(sftp,0,sizeof(SFTP_SESSION));
|
||||
sftp->session=session;
|
||||
sftp->channel=chan;
|
||||
return sftp;
|
||||
}
|
||||
#endif
|
||||
|
||||
void sftp_free(SFTP_SESSION *sftp){
|
||||
struct request_queue *ptr;
|
||||
channel_send_eof(sftp->channel);
|
||||
|
||||
Reference in New Issue
Block a user