unsigned char *new_sec, size_t new_seclen,
const unsigned char *sec, size_t seclen);
-int quic_aead_iv_build(unsigned char *iv, size_t ivlen,
- unsigned char *aead_iv, size_t aead_ivlen, uint64_t pn);
+void quic_aead_iv_build(unsigned char *iv, size_t ivlen,
+ unsigned char *aead_iv, size_t aead_ivlen, uint64_t pn);
/* HP protection (AES) */
int quic_tls_dec_aes_ctx_init(EVP_CIPHER_CTX **aes_ctx,
TRACE_ENTER(QUIC_EV_CONN_ENCPKT, qc);
- if (!quic_aead_iv_build(iv, sizeof iv, tx_iv, tx_iv_sz, pn)) {
- TRACE_ERROR("AEAD IV building for encryption failed", QUIC_EV_CONN_ENCPKT, qc);
- goto err;
- }
+ quic_aead_iv_build(iv, sizeof iv, tx_iv, tx_iv_sz, pn);
if (!quic_tls_encrypt(payload, payload_len, aad, aad_len,
tls_ctx->tx.ctx, tls_ctx->tx.aead, tls_ctx->tx.key, iv)) {
}
}
- if (!quic_aead_iv_build(iv, sizeof iv, rx_iv, rx_iv_sz, pkt->pn)) {
- TRACE_ERROR("quic_aead_iv_build() failed", QUIC_EV_CONN_RXPKT, qc);
- goto leave;
- }
+ quic_aead_iv_build(iv, sizeof iv, rx_iv, rx_iv_sz, pkt->pn);
ret = quic_tls_decrypt(pkt->data + pkt->aad_len, pkt->len - pkt->aad_len,
pkt->data, pkt->aad_len,
* <aead_ivlen> as size depending on <pn> packet number.
* This is the function which must be called to build an AEAD IV for the AEAD cryptographic algorithm
* used to encrypt/decrypt the QUIC packet payloads depending on the packet number <pn>.
- * This function fails and return 0 only if the two buffer lengths are different, 1 if not.
*/
-int quic_aead_iv_build(unsigned char *iv, size_t ivlen,
- unsigned char *aead_iv, size_t aead_ivlen, uint64_t pn)
+void quic_aead_iv_build(unsigned char *iv, size_t ivlen,
+ unsigned char *aead_iv, size_t aead_ivlen, uint64_t pn)
{
int i;
unsigned int shift;
unsigned char *pos = iv;
- if (ivlen != aead_ivlen)
- return 0;
+ /* Input buffers must have the same size. */
+ BUG_ON(ivlen != aead_ivlen);
for (i = 0; i < ivlen - sizeof pn; i++)
*pos++ = *aead_iv++;
shift = 56;
for (i = aead_ivlen - sizeof pn; i < aead_ivlen ; i++, shift -= 8)
*pos++ = *aead_iv++ ^ (pn >> shift);
-
- return 1;
}
/* Initialize the cipher context for RX part of <tls_ctx> QUIC TLS context.