#ifndef SVP_H
#define SVP_H
#include "sa_types.h"
#ifdef __cplusplus
#include <cstdbool>
#include <cstddef>
extern "C" {
#else
#include <stdbool.h>
#include <stddef.h>
#include <stored_key.h>
#endif
typedef struct svp_buffer_s svp_buffer_t;
bool svp_create_buffer(
svp_buffer_t** svp_buffer,
void* svp_memory,
size_t size);
bool svp_release_buffer(
void** svp_memory,
size_t* size,
svp_buffer_t* svp_buffer);
bool svp_write(
svp_buffer_t* out_svp_buffer,
const void* in,
size_t in_length,
sa_svp_offset* offsets,
size_t offsets_length);
bool svp_copy(
svp_buffer_t* out_svp_buffer,
const svp_buffer_t* in_svp_buffer,
sa_svp_offset* offsets,
size_t offsets_length);
bool svp_key_check(
uint8_t* in_bytes,
size_t bytes_to_process,
const void* expected,
stored_key_t* stored_key);
bool svp_digest(
void* out,
size_t* out_length,
sa_digest_algorithm digest_algorithm,
const svp_buffer_t* svp_buffer,
size_t offset,
size_t length);
void* svp_get_svp_memory(const svp_buffer_t* svp_buffer);
size_t svp_get_size(const svp_buffer_t* svp_buffer);
#ifdef __cplusplus
}
#endif
#endif