#include <grpc/support/port_platform.h>
#include "src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h"
#include <stdlib.h>
#include <string.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include "src/core/lib/gprpp/crash.h"
#include "src/core/tsi/alts/frame_protector/alts_counter.h"
struct alts_iovec_record_protocol { … };
static void maybe_copy_error_msg(const char* src, char** dst) { … }
static void maybe_append_error_msg(const char* appendix, char** dst) { … }
static uint32_t load_32_le(const unsigned char* buffer) { … }
static void store_32_le(uint32_t value, unsigned char* buffer) { … }
static grpc_status_code ensure_header_and_tag_length(
const alts_iovec_record_protocol* rp, iovec_t header, iovec_t tag,
char** error_details) { … }
static grpc_status_code increment_counter(alts_counter* counter,
char** error_details) { … }
static size_t get_total_length(const iovec_t* vec, size_t vec_length) { … }
static grpc_status_code write_frame_header(size_t data_length,
unsigned char* header,
char** error_details) { … }
static grpc_status_code verify_frame_header(size_t data_length,
unsigned char* header,
char** error_details) { … }
size_t alts_iovec_record_protocol_get_header_length() { … }
size_t alts_iovec_record_protocol_get_tag_length(
const alts_iovec_record_protocol* rp) { … }
size_t alts_iovec_record_protocol_max_unprotected_data_size(
const alts_iovec_record_protocol* rp, size_t max_protected_frame_size) { … }
grpc_status_code alts_iovec_record_protocol_integrity_only_protect(
alts_iovec_record_protocol* rp, const iovec_t* unprotected_vec,
size_t unprotected_vec_length, iovec_t header, iovec_t tag,
char** error_details) { … }
grpc_status_code alts_iovec_record_protocol_integrity_only_unprotect(
alts_iovec_record_protocol* rp, const iovec_t* protected_vec,
size_t protected_vec_length, iovec_t header, iovec_t tag,
char** error_details) { … }
grpc_status_code alts_iovec_record_protocol_privacy_integrity_protect(
alts_iovec_record_protocol* rp, const iovec_t* unprotected_vec,
size_t unprotected_vec_length, iovec_t protected_frame,
char** error_details) { … }
grpc_status_code alts_iovec_record_protocol_privacy_integrity_unprotect(
alts_iovec_record_protocol* rp, iovec_t header,
const iovec_t* protected_vec, size_t protected_vec_length,
iovec_t unprotected_data, char** error_details) { … }
grpc_status_code alts_iovec_record_protocol_create(
gsec_aead_crypter* crypter, size_t overflow_size, bool is_client,
bool is_integrity_only, bool is_protect, alts_iovec_record_protocol** rp,
char** error_details) { … }
void alts_iovec_record_protocol_destroy(alts_iovec_record_protocol* rp) { … }