libsodium (1.0.19)

(root)/
include/
sodium/
crypto_secretstream_xchacha20poly1305.h
       1  #ifndef crypto_secretstream_xchacha20poly1305_H
       2  #define crypto_secretstream_xchacha20poly1305_H
       3  
       4  #include <stddef.h>
       5  
       6  #include "crypto_aead_xchacha20poly1305.h"
       7  #include "crypto_stream_chacha20.h"
       8  #include "export.h"
       9  
      10  #ifdef __cplusplus
      11  # ifdef __GNUC__
      12  #  pragma GCC diagnostic ignored "-Wlong-long"
      13  # endif
      14  extern "C" {
      15  #endif
      16  
      17  #define crypto_secretstream_xchacha20poly1305_ABYTES \
      18      (1U + crypto_aead_xchacha20poly1305_ietf_ABYTES)
      19  SODIUM_EXPORT
      20  size_t crypto_secretstream_xchacha20poly1305_abytes(void);
      21  
      22  #define crypto_secretstream_xchacha20poly1305_HEADERBYTES \
      23      crypto_aead_xchacha20poly1305_ietf_NPUBBYTES
      24  SODIUM_EXPORT
      25  size_t crypto_secretstream_xchacha20poly1305_headerbytes(void);
      26  
      27  #define crypto_secretstream_xchacha20poly1305_KEYBYTES \
      28      crypto_aead_xchacha20poly1305_ietf_KEYBYTES
      29  SODIUM_EXPORT
      30  size_t crypto_secretstream_xchacha20poly1305_keybytes(void);
      31  
      32  #define crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX \
      33      SODIUM_MIN(SODIUM_SIZE_MAX - crypto_secretstream_xchacha20poly1305_ABYTES, \
      34                (64ULL * ((1ULL << 32) - 2ULL)))
      35  SODIUM_EXPORT
      36  size_t crypto_secretstream_xchacha20poly1305_messagebytes_max(void);
      37  
      38  #define crypto_secretstream_xchacha20poly1305_TAG_MESSAGE 0x00
      39  SODIUM_EXPORT
      40  unsigned char crypto_secretstream_xchacha20poly1305_tag_message(void);
      41  
      42  #define crypto_secretstream_xchacha20poly1305_TAG_PUSH    0x01
      43  SODIUM_EXPORT
      44  unsigned char crypto_secretstream_xchacha20poly1305_tag_push(void);
      45  
      46  #define crypto_secretstream_xchacha20poly1305_TAG_REKEY   0x02
      47  SODIUM_EXPORT
      48  unsigned char crypto_secretstream_xchacha20poly1305_tag_rekey(void);
      49  
      50  #define crypto_secretstream_xchacha20poly1305_TAG_FINAL \
      51      (crypto_secretstream_xchacha20poly1305_TAG_PUSH | \
      52       crypto_secretstream_xchacha20poly1305_TAG_REKEY)
      53  SODIUM_EXPORT
      54  unsigned char crypto_secretstream_xchacha20poly1305_tag_final(void);
      55  
      56  typedef struct crypto_secretstream_xchacha20poly1305_state {
      57      unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES];
      58      unsigned char nonce[crypto_stream_chacha20_ietf_NONCEBYTES];
      59      unsigned char _pad[8];
      60  } crypto_secretstream_xchacha20poly1305_state;
      61  
      62  SODIUM_EXPORT
      63  size_t crypto_secretstream_xchacha20poly1305_statebytes(void);
      64  
      65  SODIUM_EXPORT
      66  void crypto_secretstream_xchacha20poly1305_keygen
      67     (unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES])
      68              __attribute__ ((nonnull));
      69  
      70  SODIUM_EXPORT
      71  int crypto_secretstream_xchacha20poly1305_init_push
      72     (crypto_secretstream_xchacha20poly1305_state *state,
      73      unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES],
      74      const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES])
      75              __attribute__ ((nonnull));
      76  
      77  SODIUM_EXPORT
      78  int crypto_secretstream_xchacha20poly1305_push
      79     (crypto_secretstream_xchacha20poly1305_state *state,
      80      unsigned char *c, unsigned long long *clen_p,
      81      const unsigned char *m, unsigned long long mlen,
      82      const unsigned char *ad, unsigned long long adlen, unsigned char tag)
      83              __attribute__ ((nonnull(1)));
      84  
      85  SODIUM_EXPORT
      86  int crypto_secretstream_xchacha20poly1305_init_pull
      87     (crypto_secretstream_xchacha20poly1305_state *state,
      88      const unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES],
      89      const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES])
      90              __attribute__ ((nonnull));
      91  
      92  SODIUM_EXPORT
      93  int crypto_secretstream_xchacha20poly1305_pull
      94     (crypto_secretstream_xchacha20poly1305_state *state,
      95      unsigned char *m, unsigned long long *mlen_p, unsigned char *tag_p,
      96      const unsigned char *c, unsigned long long clen,
      97      const unsigned char *ad, unsigned long long adlen)
      98              __attribute__ ((nonnull(1)));
      99  
     100  SODIUM_EXPORT
     101  void crypto_secretstream_xchacha20poly1305_rekey
     102      (crypto_secretstream_xchacha20poly1305_state *state);
     103  
     104  #ifdef __cplusplus
     105  }
     106  #endif
     107  
     108  #endif