Greenbone Vulnerability Management Libraries 22.26.0
streamvalidator.c File Reference

Data stream validation. More...

#include "streamvalidator.h"
#include "authutils.h"
#include <assert.h>
#include <gcrypt.h>
#include <glib.h>

Data Structures

struct  gvm_stream_validator
 Data stream validator structure. More...

Functions

const char * gvm_stream_validator_return_str (gvm_stream_validator_return_t value)
 Gets a string representation of a gvm_stream_validator_return_t.
gvm_stream_validator_return_t gvm_stream_validator_new (const char *expected_hash_str, size_t expected_size, gvm_stream_validator_t *validator_out)
 Allocate and initialize a new data stream validator.
void gvm_stream_validator_rewind (gvm_stream_validator_t validator)
 Rewind the validation state of a stream validator while keeping the expected hash and data size.
void gvm_stream_validator_free (gvm_stream_validator_t validator)
 Free a stream validator and all of its fields.
gvm_stream_validator_return_t gvm_stream_validator_write (gvm_stream_validator_t validator, const char *data, size_t length)
 Write data to a validator, updating the hash state and current size.
gvm_stream_validator_return_t gvm_stream_validator_end (gvm_stream_validator_t validator)
 Signal the end of data input into a validator and produce the result of the validation.

Detailed Description

Data stream validation.

Function Documentation

◆ gvm_stream_validator_end()

gvm_stream_validator_return_t gvm_stream_validator_end ( gvm_stream_validator_t validator)

Signal the end of data input into a validator and produce the result of the validation.

Parameters
[in]validatorThe validator to signal the end of data input of.
Returns
The validation result.

◆ gvm_stream_validator_free()

void gvm_stream_validator_free ( gvm_stream_validator_t validator)

Free a stream validator and all of its fields.

Parameters
[in]validatorThe validator to free.

◆ gvm_stream_validator_new()

gvm_stream_validator_return_t gvm_stream_validator_new ( const char * expected_hash_str,
size_t expected_size,
gvm_stream_validator_t * validator_out )

Allocate and initialize a new data stream validator.

Parameters
[in]expected_hash_strExpected hash / checksum string consisting of an algorithm name or OID as recognized by gcrypt, followed by a colon and the hex-encoded hash, e.g. "md5:70165459812a0d38851a4a4c3e4124c9".
[in]expected_sizeThe number of bytes expected to be sent.
[out]validator_outPointer to output location of the newly allocated validator.
Returns
A validator return code, returning a failure if the expeced hash string is invalid or uses an unsupported algorithm.

◆ gvm_stream_validator_return_str()

const char * gvm_stream_validator_return_str ( gvm_stream_validator_return_t value)

Gets a string representation of a gvm_stream_validator_return_t.

Parameters
[in]valueThe value to get a string representation of.
Returns
Static string describing the return value or NULL if value is GVM_STREAM_VALIDATOR_OK.

◆ gvm_stream_validator_rewind()

void gvm_stream_validator_rewind ( gvm_stream_validator_t validator)

Rewind the validation state of a stream validator while keeping the expected hash and data size.

Parameters
[in]validatorThe validator to rewind.

◆ gvm_stream_validator_write()

gvm_stream_validator_return_t gvm_stream_validator_write ( gvm_stream_validator_t validator,
const char * data,
size_t length )

Write data to a validator, updating the hash state and current size.

Will fail if the total data size exceeds the expected size.

Parameters
[in]validatorThe validator to handle the data
[in]dataThe data to write.
[in]lengthLength of the data.
Returns
Validator return code, either a "success" or "too long".