Go to the documentation of this file.
28 #include "../fipsmodule/cipher/internal.h"
29 #include "../internal.h"
46 "mac_key_len does not fit in uint8_t");
50 "AEAD state is too small");
51 #if defined(__GNUC__) || defined(__clang__)
54 "AEAD state has insufficient alignment");
80 assert(mac_key_len + enc_key_len +
92 implicit_iv ? &
key[mac_key_len + enc_key_len] : NULL,
104 const size_t extra_in_len) {
105 assert(extra_in_len == 0);
117 assert(block_size != 0 && (block_size & (block_size - 1)) == 0);
118 const size_t pad_len = block_size - (in_len + hmac_len) % block_size;
119 return hmac_len + pad_len;
123 uint8_t *out_tag,
size_t *out_tag_len,
124 const size_t max_out_tag_len,
125 const uint8_t *nonce,
const size_t nonce_len,
128 const size_t extra_in_len,
const uint8_t *ad,
129 const size_t ad_len) {
138 if (in_len > INT_MAX) {
154 if (ad_len != 13 - 2 ) {
162 ad_extra[0] = (
uint8_t)(in_len >> 8);
163 ad_extra[1] = (
uint8_t)(in_len & 0xff);
196 const size_t early_mac_len = (block_size - (in_len % block_size)) % block_size;
197 if (early_mac_len != 0) {
198 assert(
len + block_size - early_mac_len == in_len);
202 (
int)early_mac_len)) {
205 assert(buf_len == (
int)block_size);
209 size_t tag_len = early_mac_len;
212 mac + tag_len, mac_len - tag_len)) {
217 if (block_size > 1) {
218 assert(block_size <= 256);
223 unsigned padding_len = block_size - ((in_len + mac_len) % block_size);
226 padding, (
int)padding_len)) {
238 *out_tag_len = tag_len;
243 size_t max_out_len,
const uint8_t *nonce,
244 size_t nonce_len,
const uint8_t *
in,
size_t in_len,
245 const uint8_t *ad,
size_t ad_len) {
259 if (max_out_len < in_len) {
271 if (ad_len != 13 - 2 ) {
276 if (in_len > INT_MAX) {
300 assert(
total == in_len);
306 size_t data_plus_mac_len;
307 crypto_word_t padding_ok;
310 &padding_ok, &data_plus_mac_len,
out,
total,
319 data_plus_mac_len =
total;
334 ad_fixed[11] = (
uint8_t)(data_len >> 8);
335 ad_fixed[12] = (
uint8_t)(data_len & 0xff);
353 record_mac = record_mac_tmp;
370 record_mac = &
out[data_len];
396 size_t key_len,
size_t tag_len,
410 size_t key_len,
size_t tag_len,
439 size_t *out_iv_len) {
447 *out_iv_len = iv_len;
452 size_t key_len,
size_t tag_len,
#define EVP_CIPHER_CTX_mode
#define EVP_CIPHER_CTX_init
static const EVP_AEAD aead_aes_256_cbc_sha1_tls
#define CIPHER_R_INVALID_OPERATION
static const EVP_AEAD aead_aes_128_cbc_sha1_tls_implicit_iv
#define OPENSSL_PUT_ERROR(library, reason)
const OPENSSL_EXPORT EVP_CIPHER * EVP_aes_256_cbc(void)
#define CIPHER_R_INVALID_NONCE_SIZE
static int aead_des_ede3_cbc_sha1_tls_implicit_iv_init(EVP_AEAD_CTX *ctx, const uint8_t *key, size_t key_len, size_t tag_len, enum evp_aead_direction_t dir)
static int aead_tls_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)
#define EVP_CIPHER_iv_length
#define EVP_EncryptUpdate
#define CONSTTIME_DECLASSIFY(x, y)
static const EVP_AEAD aead_aes_128_cbc_sha1_tls
#define CIPHER_R_BAD_KEY_LENGTH
#define EVP_CIPHER_CTX_iv_length
static void * OPENSSL_memset(void *dst, int c, size_t n)
#define EVP_tls_cbc_remove_padding
static int aead_aes_128_cbc_sha1_tls_init(EVP_AEAD_CTX *ctx, const uint8_t *key, size_t key_len, size_t tag_len, enum evp_aead_direction_t dir)
#define EVP_DecryptInit_ex
#define EVP_AEAD_nonce_length
#define EVP_AEAD_DEFAULT_TAG_LENGTH
uint8_t iv[EVP_MAX_IV_LENGTH]
#define CIPHER_R_INVALID_AD_SIZE
static int aead_tls_seal_scatter(const EVP_AEAD_CTX *ctx, uint8_t *out, uint8_t *out_tag, size_t *out_tag_len, const size_t max_out_tag_len, const uint8_t *nonce, const size_t nonce_len, const uint8_t *in, const size_t in_len, const uint8_t *extra_in, const size_t extra_in_len, const uint8_t *ad, const size_t ad_len)
static int aead_aes_256_cbc_sha1_tls_init(EVP_AEAD_CTX *ctx, const uint8_t *key, size_t key_len, size_t tag_len, enum evp_aead_direction_t dir)
const EVP_AEAD * EVP_aead_aes_256_cbc_sha1_tls(void)
static size_t aead_tls_tag_len(const EVP_AEAD_CTX *ctx, const size_t in_len, const size_t extra_in_len)
#define EVP_CIPHER_CTX_set_padding
static const EVP_AEAD aead_aes_256_cbc_sha1_tls_implicit_iv
#define EVP_CIPHER_CTX_block_size
static const EVP_AEAD aead_des_ede3_cbc_sha1_tls
const EVP_AEAD * EVP_aead_des_ede3_cbc_sha1_tls(void)
#define CIPHER_R_UNSUPPORTED_TAG_SIZE
static void * OPENSSL_memcpy(void *dst, const void *src, size_t n)
#define EVP_tls_cbc_copy_mac
static const EVP_AEAD aead_null_sha1_tls
static int aead_des_ede3_cbc_sha1_tls_init(EVP_AEAD_CTX *ctx, const uint8_t *key, size_t key_len, size_t tag_len, enum evp_aead_direction_t dir)
const OPENSSL_EXPORT EVP_CIPHER * EVP_des_ede3_cbc(void)
const EVP_AEAD * EVP_aead_aes_128_cbc_sha1_tls(void)
#define EVP_EncryptInit_ex
#define CIPHER_R_BUFFER_TOO_SMALL
#define EVP_CIPH_CBC_MODE
static int aead_tls_init(EVP_AEAD_CTX *ctx, const uint8_t *key, size_t key_len, size_t tag_len, enum evp_aead_direction_t dir, const EVP_CIPHER *cipher, const EVP_MD *md, char implicit_iv)
const EVP_AEAD * EVP_aead_aes_128_cbc_sha1_tls_implicit_iv(void)
static int aead_aes_256_cbc_sha1_tls_implicit_iv_init(EVP_AEAD_CTX *ctx, const uint8_t *key, size_t key_len, size_t tag_len, enum evp_aead_direction_t dir)
#define EVP_CipherInit_ex
uint8_t mac_key[EVP_MAX_MD_SIZE]
#define EVP_EncryptFinal_ex
#define EVP_DecryptUpdate
static const EVP_AEAD aead_des_ede3_cbc_sha1_tls_implicit_iv
static int aead_tls_get_iv(const EVP_AEAD_CTX *ctx, const uint8_t **out_iv, size_t *out_iv_len)
const EVP_AEAD * EVP_aead_null_sha1_tls(void)
#define EVP_CIPHER_CTX_cleanup
#define EVP_tls_cbc_digest_record
const EVP_AEAD * EVP_aead_des_ede3_cbc_sha1_tls_implicit_iv(void)
OPENSSL_STATIC_ASSERT(EVP_MAX_MD_SIZE< 256, "mac_key_len does not fit in uint8_t")
static void aead_tls_cleanup(EVP_AEAD_CTX *ctx)
#define EVP_CIPHER_key_length
#define EVP_DecryptFinal_ex
const OPENSSL_EXPORT EVP_MD * EVP_sha1(void)
static crypto_word_t constant_time_eq_int(int a, int b)
#define SHA_DIGEST_LENGTH
#define CIPHER_R_TOO_LARGE
#define EVP_tls_cbc_record_digest_supported
static int aead_aes_128_cbc_sha1_tls_implicit_iv_init(EVP_AEAD_CTX *ctx, const uint8_t *key, size_t key_len, size_t tag_len, enum evp_aead_direction_t dir)
static int aead_null_sha1_tls_init(EVP_AEAD_CTX *ctx, const uint8_t *key, size_t key_len, size_t tag_len, enum evp_aead_direction_t dir)
#define CONSTTIME_SECRET(x, y)
#define EVP_MAX_BLOCK_LENGTH
#define EVP_AEAD_key_length
const OPENSSL_EXPORT EVP_CIPHER * EVP_aes_128_cbc(void)
const EVP_AEAD * EVP_aead_aes_256_cbc_sha1_tls_implicit_iv(void)
if(p->owned &&p->wrapped !=NULL)
EVP_CIPHER_CTX cipher_ctx
#define CIPHER_R_BAD_DECRYPT
grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:18