1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-08-10 06:23:01 +03:00

Add return value to dh_generate_y().

git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@499 7dcaeef0-15fb-0310-b436-a5af3365683c
This commit is contained in:
Andreas Schneider
2009-04-16 14:27:50 +00:00
parent 5dc03728ed
commit ece047171a
3 changed files with 19 additions and 8 deletions

View File

@@ -517,7 +517,7 @@ void ssh_set_error(void *error, int code, const char *descr, ...) PRINTF_ATTRIBU
void dh_generate_e(SSH_SESSION *session); void dh_generate_e(SSH_SESSION *session);
void ssh_print_bignum(const char *which,bignum num); void ssh_print_bignum(const char *which,bignum num);
int dh_generate_x(SSH_SESSION *session); int dh_generate_x(SSH_SESSION *session);
void dh_generate_y(SSH_SESSION *session); int dh_generate_y(SSH_SESSION *session);
void dh_generate_f(SSH_SESSION *session); void dh_generate_f(SSH_SESSION *session);
int ssh_crypto_init(void); int ssh_crypto_init(void);

View File

@@ -234,18 +234,26 @@ int dh_generate_x(SSH_SESSION *session) {
} }
/* used by server */ /* used by server */
void dh_generate_y(SSH_SESSION *session){ int dh_generate_y(SSH_SESSION *session) {
session->next_crypto->y=bignum_new(); session->next_crypto->y = bignum_new();
if (session->next_crypto->y == NULL) {
return -1;
}
#ifdef HAVE_LIBGCRYPT #ifdef HAVE_LIBGCRYPT
bignum_rand(session->next_crypto->y,128); bignum_rand(session->next_crypto->y, 128);
#elif defined HAVE_LIBCRYPTO #elif defined HAVE_LIBCRYPTO
bignum_rand(session->next_crypto->y,128,0,-1); bignum_rand(session->next_crypto->y, 128, 0, -1);
#endif #endif
/* not harder than this */
/* not harder than this */
#ifdef DEBUG_CRYPTO #ifdef DEBUG_CRYPTO
ssh_print_bignum("y",session->next_crypto->y); ssh_print_bignum("y", session->next_crypto->y);
#endif #endif
return 0;
} }
/* used by server */ /* used by server */
void dh_generate_e(SSH_SESSION *session){ void dh_generate_e(SSH_SESSION *session){
#ifdef HAVE_LIBCRYPTO #ifdef HAVE_LIBCRYPTO

View File

@@ -274,7 +274,10 @@ static int dh_handshake_server(SSH_SESSION *session){
} }
dh_import_e(session,e); dh_import_e(session,e);
free(e); free(e);
dh_generate_y(session); if (dh_generate_y(session) < 0) {
ssh_set_error(session,SSH_FATAL,"Could not create y number");
return -1;
}
dh_generate_f(session); dh_generate_f(session);
f=dh_get_f(session); f=dh_get_f(session);
switch(session->hostkeys){ switch(session->hostkeys){