#ifndef TRUNNEL_PWBOX_H
#define TRUNNEL_PWBOX_H
#include <stdint.h>
#include "trunnel.h"
#define PWBOX0_CONST0 1414484546
#define PWBOX0_CONST1 1331179568
#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_PWBOX_ENCODED)
struct pwbox_encoded_st {
uint32_t fixedbytes0;
uint32_t fixedbytes1;
uint8_t header_len;
TRUNNEL_DYNARRAY_HEAD(, uint8_t) skey_header;
uint8_t iv[16];
TRUNNEL_DYNARRAY_HEAD(, uint8_t) data;
uint8_t hmac[32];
uint8_t trunnel_error_code_;
};
#endif
typedef struct pwbox_encoded_st pwbox_encoded_t;
pwbox_encoded_t *pwbox_encoded_new(void);
void pwbox_encoded_free(pwbox_encoded_t *victim);
ssize_t pwbox_encoded_parse(pwbox_encoded_t **output, const uint8_t *input, const size_t len_in);
ssize_t pwbox_encoded_encoded_len(const pwbox_encoded_t *obj);
ssize_t pwbox_encoded_encode(uint8_t *output, size_t avail, const pwbox_encoded_t *input);
const char *pwbox_encoded_check(const pwbox_encoded_t *obj);
int pwbox_encoded_clear_errors(pwbox_encoded_t *obj);
uint32_t pwbox_encoded_get_fixedbytes0(const pwbox_encoded_t *inp);
int pwbox_encoded_set_fixedbytes0(pwbox_encoded_t *inp, uint32_t val);
uint32_t pwbox_encoded_get_fixedbytes1(const pwbox_encoded_t *inp);
int pwbox_encoded_set_fixedbytes1(pwbox_encoded_t *inp, uint32_t val);
uint8_t pwbox_encoded_get_header_len(const pwbox_encoded_t *inp);
int pwbox_encoded_set_header_len(pwbox_encoded_t *inp, uint8_t val);
size_t pwbox_encoded_getlen_skey_header(const pwbox_encoded_t *inp);
uint8_t pwbox_encoded_get_skey_header(pwbox_encoded_t *inp, size_t idx);
uint8_t pwbox_encoded_getconst_skey_header(const pwbox_encoded_t *inp, size_t idx);
int pwbox_encoded_set_skey_header(pwbox_encoded_t *inp, size_t idx, uint8_t elt);
int pwbox_encoded_add_skey_header(pwbox_encoded_t *inp, uint8_t elt);
uint8_t * pwbox_encoded_getarray_skey_header(pwbox_encoded_t *inp);
const uint8_t * pwbox_encoded_getconstarray_skey_header(const pwbox_encoded_t *inp);
int pwbox_encoded_setlen_skey_header(pwbox_encoded_t *inp, size_t newlen);
size_t pwbox_encoded_getlen_iv(const pwbox_encoded_t *inp);
uint8_t pwbox_encoded_get_iv(pwbox_encoded_t *inp, size_t idx);
uint8_t pwbox_encoded_getconst_iv(const pwbox_encoded_t *inp, size_t idx);
int pwbox_encoded_set_iv(pwbox_encoded_t *inp, size_t idx, uint8_t elt);
uint8_t * pwbox_encoded_getarray_iv(pwbox_encoded_t *inp);
const uint8_t * pwbox_encoded_getconstarray_iv(const pwbox_encoded_t *inp);
size_t pwbox_encoded_getlen_data(const pwbox_encoded_t *inp);
uint8_t pwbox_encoded_get_data(pwbox_encoded_t *inp, size_t idx);
uint8_t pwbox_encoded_getconst_data(const pwbox_encoded_t *inp, size_t idx);
int pwbox_encoded_set_data(pwbox_encoded_t *inp, size_t idx, uint8_t elt);
int pwbox_encoded_add_data(pwbox_encoded_t *inp, uint8_t elt);
uint8_t * pwbox_encoded_getarray_data(pwbox_encoded_t *inp);
const uint8_t * pwbox_encoded_getconstarray_data(const pwbox_encoded_t *inp);
int pwbox_encoded_setlen_data(pwbox_encoded_t *inp, size_t newlen);
size_t pwbox_encoded_getlen_hmac(const pwbox_encoded_t *inp);
uint8_t pwbox_encoded_get_hmac(pwbox_encoded_t *inp, size_t idx);
uint8_t pwbox_encoded_getconst_hmac(const pwbox_encoded_t *inp, size_t idx);
int pwbox_encoded_set_hmac(pwbox_encoded_t *inp, size_t idx, uint8_t elt);
uint8_t * pwbox_encoded_getarray_hmac(pwbox_encoded_t *inp);
const uint8_t * pwbox_encoded_getconstarray_hmac(const pwbox_encoded_t *inp);
#endif