diff options
author | Aris Adamantiadis <aris@0xbadc0de.be> | 2018-02-28 10:24:51 -0600 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2018-06-28 09:06:30 +0200 |
commit | acc1ade74ab4619194a8afbd89d4923a73e21f7e (patch) | |
tree | 7e6ec85043799065a3f439fe860a4eee42a162f1 /include | |
parent | 72e4500da9acd048d6278436153a4ebe16614bb7 (diff) | |
download | libssh-acc1ade74ab4619194a8afbd89d4923a73e21f7e.tar.gz libssh-acc1ade74ab4619194a8afbd89d4923a73e21f7e.tar.xz libssh-acc1ade74ab4619194a8afbd89d4923a73e21f7e.zip |
external: Add ChaCha and Poly1305 implementations from OpenSSH
Signed-off-by: Aris Adamantiadis <aris@0xbadc0de.be>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/libssh/chacha.h | 32 | ||||
-rw-r--r-- | include/libssh/poly1305.h | 18 |
2 files changed, 50 insertions, 0 deletions
diff --git a/include/libssh/chacha.h b/include/libssh/chacha.h new file mode 100644 index 00000000..84ff66a2 --- /dev/null +++ b/include/libssh/chacha.h @@ -0,0 +1,32 @@ +/* $OpenBSD: chacha.h,v 1.3 2014/05/02 03:27:54 djm Exp $ */ + +/* +chacha-merged.c version 20080118 +D. J. Bernstein +Public domain. +*/ + +#ifndef CHACHA_H +#define CHACHA_H + +struct chacha_ctx { + uint32_t input[16]; +}; + +#define CHACHA_MINKEYLEN 16 +#define CHACHA_NONCELEN 8 +#define CHACHA_CTRLEN 8 +#define CHACHA_STATELEN (CHACHA_NONCELEN+CHACHA_CTRLEN) +#define CHACHA_BLOCKLEN 64 + +void chacha_keysetup(struct chacha_ctx *x, const uint8_t *k, uint32_t kbits) + __attribute__((__bounded__(__minbytes__, 2, CHACHA_MINKEYLEN))); +void chacha_ivsetup(struct chacha_ctx *x, const uint8_t *iv, const uint8_t *ctr) + __attribute__((__bounded__(__minbytes__, 2, CHACHA_NONCELEN))) + __attribute__((__bounded__(__minbytes__, 3, CHACHA_CTRLEN))); +void chacha_encrypt_bytes(struct chacha_ctx *x, const uint8_t *m, + uint8_t *c, uint32_t bytes) + __attribute__((__bounded__(__buffer__, 2, 4))) + __attribute__((__bounded__(__buffer__, 3, 4))); + +#endif /* CHACHA_H */ diff --git a/include/libssh/poly1305.h b/include/libssh/poly1305.h new file mode 100644 index 00000000..7126ecbf --- /dev/null +++ b/include/libssh/poly1305.h @@ -0,0 +1,18 @@ +/* + * Public Domain poly1305 from Andrew Moon + * poly1305-donna-unrolled.c from https://github.com/floodyberry/poly1305-donna + */ + +#ifndef POLY1305_H +#define POLY1305_H + +#define POLY1305_KEYLEN 32 +#define POLY1305_TAGLEN 16 + +void poly1305_auth(uint8_t out[POLY1305_TAGLEN], const uint8_t *m, size_t inlen, + const uint8_t key[POLY1305_KEYLEN]) + __attribute__((__bounded__(__minbytes__, 1, POLY1305_TAGLEN))) + __attribute__((__bounded__(__buffer__, 2, 3))) + __attribute__((__bounded__(__minbytes__, 4, POLY1305_KEYLEN))); + +#endif /* POLY1305_H */ |