2
* This file is part of the SSH Library
4
* Copyright (c) 2009 by Aris Adamantiadis
6
* The SSH Library is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU Lesser General Public License as published by
8
* the Free Software Foundation; either version 2.1 of the License, or (at your
9
* option) any later version.
11
* The SSH Library is distributed in the hope that it will be useful, but
12
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14
* License for more details.
16
* You should have received a copy of the GNU Lesser General Public License
17
* along with the SSH Library; see the file COPYING. If not, write to
18
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
25
/** Describes a buffer state at a moment
27
struct ssh_buffer_struct {
34
int buffer_add_ssh_string(ssh_buffer buffer, ssh_string string);
35
int buffer_add_u8(ssh_buffer buffer, uint8_t data);
36
int buffer_add_u16(ssh_buffer buffer, uint16_t data);
37
int buffer_add_u32(ssh_buffer buffer, uint32_t data);
38
int buffer_add_u64(ssh_buffer buffer, uint64_t data);
39
int buffer_add_data(ssh_buffer buffer, const void *data, uint32_t len);
40
int buffer_prepend_data(ssh_buffer buffer, const void *data, uint32_t len);
41
int buffer_add_buffer(ssh_buffer buffer, ssh_buffer source);
42
int buffer_reinit(ssh_buffer buffer);
44
/* buffer_get_rest returns a pointer to the current position into the buffer */
45
void *buffer_get_rest(ssh_buffer buffer);
46
/* buffer_get_rest_len returns the number of bytes which can be read */
47
uint32_t buffer_get_rest_len(ssh_buffer buffer);
49
/* buffer_read_*() returns the number of bytes read, except for ssh strings */
50
int buffer_get_u8(ssh_buffer buffer, uint8_t *data);
51
int buffer_get_u32(ssh_buffer buffer, uint32_t *data);
52
int buffer_get_u64(ssh_buffer buffer, uint64_t *data);
54
uint32_t buffer_get_data(ssh_buffer buffer, void *data, uint32_t requestedlen);
55
/* buffer_get_ssh_string() is an exception. if the String read is too large or invalid, it will answer NULL. */
56
ssh_string buffer_get_ssh_string(ssh_buffer buffer);
57
/* gets a string out of a SSH-1 mpint */
58
ssh_string buffer_get_mpint(ssh_buffer buffer);
59
/* buffer_pass_bytes acts as if len bytes have been read (used for padding) */
60
uint32_t buffer_pass_bytes_end(ssh_buffer buffer, uint32_t len);
61
uint32_t buffer_pass_bytes(ssh_buffer buffer, uint32_t len);
63
#endif /* BUFFER_H_ */