libssh  0.10.6
The SSH library
chacha.h
1 /* $OpenBSD: chacha.h,v 1.3 2014/05/02 03:27:54 djm Exp $ */
2 
3 /*
4 chacha-merged.c version 20080118
5 D. J. Bernstein
6 Public domain.
7 */
8 
9 #ifndef CHACHA_H
10 #define CHACHA_H
11 
12 struct chacha_ctx {
13  uint32_t input[16];
14 };
15 
16 #define CHACHA_MINKEYLEN 16
17 #define CHACHA_NONCELEN 8
18 #define CHACHA_CTRLEN 8
19 #define CHACHA_STATELEN (CHACHA_NONCELEN+CHACHA_CTRLEN)
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 void chacha_keysetup(struct chacha_ctx *x, const uint8_t *k, uint32_t kbits)
26 #ifdef HAVE_GCC_BOUNDED_ATTRIBUTE
27  __attribute__((__bounded__(__minbytes__, 2, CHACHA_MINKEYLEN)))
28 #endif
29  ;
30 void chacha_ivsetup(struct chacha_ctx *x, const uint8_t *iv, const uint8_t *ctr)
31 #ifdef HAVE_GCC_BOUNDED_ATTRIBUTE
32  __attribute__((__bounded__(__minbytes__, 2, CHACHA_NONCELEN)))
33  __attribute__((__bounded__(__minbytes__, 3, CHACHA_CTRLEN)))
34 #endif
35  ;
36 void chacha_encrypt_bytes(struct chacha_ctx *x, const uint8_t *m,
37  uint8_t *c, uint32_t bytes)
38 #ifdef HAVE_GCC_BOUNDED_ATTRIBUTE
39  __attribute__((__bounded__(__buffer__, 2, 4)))
40  __attribute__((__bounded__(__buffer__, 3, 4)))
41 #endif
42  ;
43 
44 #ifdef __cplusplus
45 }
46 #endif
47 
48 #endif /* CHACHA_H */
chacha_ctx
Definition: chacha.h:12