123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- #ifndef NGTCP2_CRYPTO_H
- #define NGTCP2_CRYPTO_H
- #ifdef HAVE_CONFIG_H
- # include <config.h>
- #endif
- #include <ngtcp2/ngtcp2.h>
- #include "ngtcp2_mem.h"
- #define NGTCP2_INITIAL_AEAD_OVERHEAD 16
- #define NGTCP2_MAX_AEAD_OVERHEAD 16
- #define NGTCP2_CRYPTO_KM_FLAG_NONE 0x00u
- #define NGTCP2_CRYPTO_KM_FLAG_KEY_PHASE_ONE 0x01u
- typedef struct ngtcp2_crypto_km {
- ngtcp2_vec secret;
- ngtcp2_crypto_aead_ctx aead_ctx;
- ngtcp2_vec iv;
-
- int64_t pkt_num;
-
- uint64_t use_count;
-
- uint8_t flags;
- } ngtcp2_crypto_km;
- int ngtcp2_crypto_km_new(ngtcp2_crypto_km **pckm, const uint8_t *secret,
- size_t secretlen,
- const ngtcp2_crypto_aead_ctx *aead_ctx,
- const uint8_t *iv, size_t ivlen,
- const ngtcp2_mem *mem);
- int ngtcp2_crypto_km_nocopy_new(ngtcp2_crypto_km **pckm, size_t secretlen,
- size_t ivlen, const ngtcp2_mem *mem);
- void ngtcp2_crypto_km_del(ngtcp2_crypto_km *ckm, const ngtcp2_mem *mem);
- typedef struct ngtcp2_crypto_cc {
- ngtcp2_crypto_aead aead;
- ngtcp2_crypto_cipher hp;
- ngtcp2_crypto_km *ckm;
- ngtcp2_crypto_cipher_ctx hp_ctx;
- ngtcp2_encrypt encrypt;
- ngtcp2_decrypt decrypt;
- ngtcp2_hp_mask hp_mask;
- } ngtcp2_crypto_cc;
- void ngtcp2_crypto_create_nonce(uint8_t *dest, const uint8_t *iv, size_t ivlen,
- int64_t pkt_num);
- #endif
|