xref: /freebsd/crypto/openssh/cipher-chachapoly.h (revision 19261079b74319502c6ffa1249920079f0f69a72)
1*19261079SEd Maste /* $OpenBSD: cipher-chachapoly.h,v 1.5 2020/04/03 04:27:03 djm Exp $ */
2f7167e0eSDag-Erling Smørgrav 
3f7167e0eSDag-Erling Smørgrav /*
4f7167e0eSDag-Erling Smørgrav  * Copyright (c) Damien Miller 2013 <djm@mindrot.org>
5f7167e0eSDag-Erling Smørgrav  *
6f7167e0eSDag-Erling Smørgrav  * Permission to use, copy, modify, and distribute this software for any
7f7167e0eSDag-Erling Smørgrav  * purpose with or without fee is hereby granted, provided that the above
8f7167e0eSDag-Erling Smørgrav  * copyright notice and this permission notice appear in all copies.
9f7167e0eSDag-Erling Smørgrav  *
10f7167e0eSDag-Erling Smørgrav  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11f7167e0eSDag-Erling Smørgrav  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12f7167e0eSDag-Erling Smørgrav  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13f7167e0eSDag-Erling Smørgrav  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14f7167e0eSDag-Erling Smørgrav  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15f7167e0eSDag-Erling Smørgrav  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16f7167e0eSDag-Erling Smørgrav  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17f7167e0eSDag-Erling Smørgrav  */
18f7167e0eSDag-Erling Smørgrav #ifndef CHACHA_POLY_AEAD_H
19f7167e0eSDag-Erling Smørgrav #define CHACHA_POLY_AEAD_H
20f7167e0eSDag-Erling Smørgrav 
21f7167e0eSDag-Erling Smørgrav #include <sys/types.h>
22f7167e0eSDag-Erling Smørgrav #include "chacha.h"
23f7167e0eSDag-Erling Smørgrav #include "poly1305.h"
24f7167e0eSDag-Erling Smørgrav 
25f7167e0eSDag-Erling Smørgrav #define CHACHA_KEYLEN	32 /* Only 256 bit keys used here */
26f7167e0eSDag-Erling Smørgrav 
27*19261079SEd Maste struct chachapoly_ctx;
28f7167e0eSDag-Erling Smørgrav 
29*19261079SEd Maste struct chachapoly_ctx *chachapoly_new(const u_char *key, u_int keylen)
30*19261079SEd Maste     __attribute__((__bounded__(__buffer__, 1, 2)));
31*19261079SEd Maste void chachapoly_free(struct chachapoly_ctx *cpctx);
32*19261079SEd Maste 
33f7167e0eSDag-Erling Smørgrav int	chachapoly_crypt(struct chachapoly_ctx *cpctx, u_int seqnr,
34f7167e0eSDag-Erling Smørgrav     u_char *dest, const u_char *src, u_int len, u_int aadlen, u_int authlen,
35f7167e0eSDag-Erling Smørgrav     int do_encrypt);
36f7167e0eSDag-Erling Smørgrav int	chachapoly_get_length(struct chachapoly_ctx *cpctx,
37f7167e0eSDag-Erling Smørgrav     u_int *plenp, u_int seqnr, const u_char *cp, u_int len)
38f7167e0eSDag-Erling Smørgrav     __attribute__((__bounded__(__buffer__, 4, 5)));
39f7167e0eSDag-Erling Smørgrav 
40f7167e0eSDag-Erling Smørgrav #endif /* CHACHA_POLY_AEAD_H */
41