version 1.75, 2001/12/19 07:18:56 |
version 1.76, 2001/12/19 17:16:13 |
|
|
buffer_put_int(&outgoing_packet, value); |
buffer_put_int(&outgoing_packet, value); |
} |
} |
void |
void |
packet_put_string(const char *buf, u_int len) |
packet_put_string(const void *buf, u_int len) |
{ |
{ |
buffer_put_string(&outgoing_packet, buf, len); |
buffer_put_string(&outgoing_packet, buf, len); |
} |
} |
|
|
buffer_put_cstring(&outgoing_packet, str); |
buffer_put_cstring(&outgoing_packet, str); |
} |
} |
void |
void |
packet_put_raw(const char *buf, u_int len) |
packet_put_raw(const void *buf, u_int len) |
{ |
{ |
buffer_append(&outgoing_packet, buf, len); |
buffer_append(&outgoing_packet, buf, len); |
} |
} |
|
|
/* Append to output. */ |
/* Append to output. */ |
PUT_32BIT(buf, len); |
PUT_32BIT(buf, len); |
buffer_append(&output, buf, 4); |
buffer_append(&output, buf, 4); |
buffer_append_space(&output, &cp, buffer_len(&outgoing_packet)); |
cp = buffer_append_space(&output, buffer_len(&outgoing_packet)); |
cipher_encrypt(&send_context, cp, buffer_ptr(&outgoing_packet), |
cipher_encrypt(&send_context, cp, buffer_ptr(&outgoing_packet), |
buffer_len(&outgoing_packet)); |
buffer_len(&outgoing_packet)); |
|
|
|
|
padlen += pad; |
padlen += pad; |
extra_pad = 0; |
extra_pad = 0; |
} |
} |
buffer_append_space(&outgoing_packet, &cp, padlen); |
cp = buffer_append_space(&outgoing_packet, padlen); |
if (enc && enc->cipher->number != SSH_CIPHER_NONE) { |
if (enc && enc->cipher->number != SSH_CIPHER_NONE) { |
/* random padding */ |
/* random padding */ |
for (i = 0; i < padlen; i++) { |
for (i = 0; i < padlen; i++) { |
|
|
DBG(debug("done calc MAC out #%d", seqnr)); |
DBG(debug("done calc MAC out #%d", seqnr)); |
} |
} |
/* encrypt packet and append to output buffer. */ |
/* encrypt packet and append to output buffer. */ |
buffer_append_space(&output, &cp, buffer_len(&outgoing_packet)); |
cp = buffer_append_space(&output, buffer_len(&outgoing_packet)); |
cipher_encrypt(&send_context, cp, buffer_ptr(&outgoing_packet), |
cipher_encrypt(&send_context, cp, buffer_ptr(&outgoing_packet), |
buffer_len(&outgoing_packet)); |
buffer_len(&outgoing_packet)); |
/* append unencrypted MAC */ |
/* append unencrypted MAC */ |
|
|
|
|
/* Decrypt data to incoming_packet. */ |
/* Decrypt data to incoming_packet. */ |
buffer_clear(&incoming_packet); |
buffer_clear(&incoming_packet); |
buffer_append_space(&incoming_packet, &cp, padded_len); |
cp = buffer_append_space(&incoming_packet, padded_len); |
cipher_decrypt(&receive_context, cp, buffer_ptr(&input), padded_len); |
cipher_decrypt(&receive_context, cp, buffer_ptr(&input), padded_len); |
|
|
buffer_consume(&input, padded_len); |
buffer_consume(&input, padded_len); |
|
|
if (buffer_len(&input) < block_size) |
if (buffer_len(&input) < block_size) |
return SSH_MSG_NONE; |
return SSH_MSG_NONE; |
buffer_clear(&incoming_packet); |
buffer_clear(&incoming_packet); |
buffer_append_space(&incoming_packet, &cp, block_size); |
cp = buffer_append_space(&incoming_packet, block_size); |
cipher_decrypt(&receive_context, cp, buffer_ptr(&input), |
cipher_decrypt(&receive_context, cp, buffer_ptr(&input), |
block_size); |
block_size); |
ucp = (u_char *) buffer_ptr(&incoming_packet); |
ucp = (u_char *) buffer_ptr(&incoming_packet); |
|
|
fprintf(stderr, "read_poll enc/full: "); |
fprintf(stderr, "read_poll enc/full: "); |
buffer_dump(&input); |
buffer_dump(&input); |
#endif |
#endif |
buffer_append_space(&incoming_packet, &cp, need); |
cp = buffer_append_space(&incoming_packet, need); |
cipher_decrypt(&receive_context, cp, buffer_ptr(&input), need); |
cipher_decrypt(&receive_context, cp, buffer_ptr(&input), need); |
buffer_consume(&input, need); |
buffer_consume(&input, need); |
/* |
/* |
|
|
log("incoming seqnr wraps around"); |
log("incoming seqnr wraps around"); |
|
|
/* get padlen */ |
/* get padlen */ |
cp = buffer_ptr(&incoming_packet) + 4; |
cp = buffer_ptr(&incoming_packet); |
|
cp += 4; |
padlen = (u_char) *cp; |
padlen = (u_char) *cp; |
DBG(debug("input: padlen %d", padlen)); |
DBG(debug("input: padlen %d", padlen)); |
if (padlen < 4) |
if (padlen < 4) |
|
|
*length_ptr = buffer_get_bignum2(&incoming_packet, value); |
*length_ptr = buffer_get_bignum2(&incoming_packet, value); |
} |
} |
|
|
char * |
void * |
packet_get_raw(int *length_ptr) |
packet_get_raw(int *length_ptr) |
{ |
{ |
int bytes = buffer_len(&incoming_packet); |
int bytes = buffer_len(&incoming_packet); |
|
|
* integer into which the length of the string is stored. |
* integer into which the length of the string is stored. |
*/ |
*/ |
|
|
char * |
void * |
packet_get_string(u_int *length_ptr) |
packet_get_string(u_int *length_ptr) |
{ |
{ |
return buffer_get_string(&incoming_packet, length_ptr); |
return buffer_get_string(&incoming_packet, length_ptr); |