Go to the documentation of this file.
25 #include "../../internal.h"
41 size_t key_len,
size_t tag_len) {
59 const uint8_t *
key,
size_t key_len,
size_t tag_len,
97 if (
ctx->aead == NULL) {
116 size_t max_out_len,
const uint8_t *nonce,
117 size_t nonce_len,
const uint8_t *
in,
size_t in_len,
118 const uint8_t *ad,
size_t ad_len) {
119 if (in_len +
ctx->aead->overhead < in_len ) {
124 if (max_out_len < in_len) {
135 if (
ctx->aead->seal_scatter(
ctx,
out,
out + in_len, &out_tag_len,
136 max_out_len - in_len, nonce, nonce_len,
in,
137 in_len, NULL, 0, ad, ad_len)) {
138 *out_len = in_len + out_tag_len;
152 *out_tag_len,
size_t max_out_tag_len,
const uint8_t *nonce,
size_t
154 size_t extra_in_len,
const uint8_t *ad,
size_t ad_len) {
163 if (!
ctx->aead->seal_scatter_supports_extra_in && extra_in_len) {
168 if (
ctx->aead->seal_scatter(
ctx,
out, out_tag, out_tag_len, max_out_tag_len,
169 nonce, nonce_len,
in, in_len, extra_in,
170 extra_in_len, ad, ad_len)) {
184 size_t max_out_len,
const uint8_t *nonce,
185 size_t nonce_len,
const uint8_t *
in,
size_t in_len,
186 const uint8_t *ad,
size_t ad_len) {
192 if (
ctx->aead->open) {
193 if (!
ctx->aead->open(
ctx,
out, out_len, max_out_len, nonce, nonce_len,
in,
194 in_len, ad, ad_len)) {
202 assert(
ctx->tag_len);
204 if (in_len < ctx->tag_len) {
209 size_t plaintext_len = in_len -
ctx->tag_len;
210 if (max_out_len < plaintext_len) {
215 in + plaintext_len,
ctx->tag_len, ad, ad_len)) {
216 *out_len = plaintext_len;
230 const uint8_t *nonce,
size_t nonce_len,
232 const uint8_t *in_tag,
size_t in_tag_len,
233 const uint8_t *ad,
size_t ad_len) {
239 if (!
ctx->aead->open_gather) {
244 if (
ctx->aead->open_gather(
ctx,
out, nonce, nonce_len,
in, in_len, in_tag,
245 in_tag_len, ad, ad_len)) {
261 if (
ctx->aead->get_iv == NULL) {
265 return ctx->aead->get_iv(
ctx, out_iv, out_len);
269 const size_t in_len,
const size_t extra_in_len) {
270 assert(
ctx->aead->seal_scatter_supports_extra_in || !extra_in_len);
272 if (
ctx->aead->tag_len) {
273 *out_tag_len =
ctx->aead->tag_len(
ctx, in_len, extra_in_len);
277 if (extra_in_len +
ctx->tag_len < extra_in_len) {
282 *out_tag_len = extra_in_len +
ctx->tag_len;
int EVP_AEAD_CTX_init(EVP_AEAD_CTX *ctx, const EVP_AEAD *aead, const uint8_t *key, size_t key_len, size_t tag_len, ENGINE *impl)
#define CIPHER_R_INVALID_OPERATION
#define OPENSSL_PUT_ERROR(library, reason)
void EVP_AEAD_CTX_cleanup(EVP_AEAD_CTX *ctx)
#define CIPHER_R_NO_DIRECTION_SET
int(* init_with_direction)(EVP_AEAD_CTX *, const uint8_t *key, size_t key_len, size_t tag_len, enum evp_aead_direction_t dir)
int(* init)(EVP_AEAD_CTX *, const uint8_t *key, size_t key_len, size_t tag_len)
#define CIPHER_R_CTRL_NOT_IMPLEMENTED
static struct test_ctx ctx
const EVP_AEAD * EVP_AEAD_CTX_aead(const EVP_AEAD_CTX *ctx)
int EVP_AEAD_CTX_open(const EVP_AEAD_CTX *ctx, uint8_t *out, size_t *out_len, size_t max_out_len, const uint8_t *nonce, size_t nonce_len, const uint8_t *in, size_t in_len, const uint8_t *ad, size_t ad_len)
static void * OPENSSL_memset(void *dst, int c, size_t n)
int EVP_AEAD_CTX_tag_len(const EVP_AEAD_CTX *ctx, size_t *out_tag_len, const size_t in_len, const size_t extra_in_len)
#define CIPHER_R_UNSUPPORTED_KEY_SIZE
size_t EVP_AEAD_key_length(const EVP_AEAD *aead)
int EVP_AEAD_CTX_seal(const EVP_AEAD_CTX *ctx, uint8_t *out, size_t *out_len, size_t max_out_len, const uint8_t *nonce, size_t nonce_len, const uint8_t *in, size_t in_len, const uint8_t *ad, size_t ad_len)
void EVP_AEAD_CTX_zero(EVP_AEAD_CTX *ctx)
size_t EVP_AEAD_nonce_length(const EVP_AEAD *aead)
static int check_alias(const uint8_t *in, size_t in_len, const uint8_t *out, size_t out_len)
#define CIPHER_R_BUFFER_TOO_SMALL
size_t EVP_AEAD_max_overhead(const EVP_AEAD *aead)
EVP_AEAD_CTX * EVP_AEAD_CTX_new(const EVP_AEAD *aead, const uint8_t *key, size_t key_len, size_t tag_len)
#define CIPHER_R_OUTPUT_ALIASES_INPUT
int EVP_AEAD_CTX_seal_scatter(const EVP_AEAD_CTX *ctx, uint8_t *out, uint8_t *out_tag, size_t *out_tag_len, size_t max_out_tag_len, const uint8_t *nonce, size_t nonce_len, const uint8_t *in, size_t in_len, const uint8_t *extra_in, size_t extra_in_len, const uint8_t *ad, size_t ad_len)
#define CIPHER_R_TOO_LARGE
void EVP_AEAD_CTX_free(EVP_AEAD_CTX *ctx)
int EVP_AEAD_CTX_init_with_direction(EVP_AEAD_CTX *ctx, const EVP_AEAD *aead, const uint8_t *key, size_t key_len, size_t tag_len, enum evp_aead_direction_t dir)
int EVP_AEAD_CTX_get_iv(const EVP_AEAD_CTX *ctx, const uint8_t **out_iv, size_t *out_len)
int EVP_AEAD_CTX_open_gather(const EVP_AEAD_CTX *ctx, uint8_t *out, const uint8_t *nonce, size_t nonce_len, const uint8_t *in, size_t in_len, const uint8_t *in_tag, size_t in_tag_len, const uint8_t *ad, size_t ad_len)
static int buffers_alias(const uint8_t *a, size_t a_len, const uint8_t *b, size_t b_len)
size_t EVP_AEAD_max_tag_len(const EVP_AEAD *aead)
#define CIPHER_R_BAD_DECRYPT
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:40