From 8adb3dbae070d097e78bcc87a567ccd28d073da5 Mon Sep 17 00:00:00 2001 From: jsing <> Date: Thu, 1 May 2014 16:06:24 +0000 Subject: Provide an EVP implementation for ChaCha. ok miod@ --- src/lib/libcrypto/chacha/chacha.c | 20 ++++++++++++++++++++ src/lib/libcrypto/chacha/chacha.h | 11 +++++++++++ 2 files changed, 31 insertions(+) (limited to 'src/lib/libcrypto/chacha') diff --git a/src/lib/libcrypto/chacha/chacha.c b/src/lib/libcrypto/chacha/chacha.c index d76d64de4a..1bc95f502d 100644 --- a/src/lib/libcrypto/chacha/chacha.c +++ b/src/lib/libcrypto/chacha/chacha.c @@ -14,8 +14,28 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "chacha.h" #include "chacha-merged.c" +void +ChaCha_set_key(ChaCha_ctx *ctx, const unsigned char *key, uint32_t keybits) +{ + chacha_keysetup((chacha_ctx *)ctx, key, keybits); +} + +void +ChaCha_set_iv(ChaCha_ctx *ctx, const unsigned char *iv, + const unsigned char *counter) +{ + chacha_ivsetup((chacha_ctx *)ctx, iv, counter); +} + +void +ChaCha(ChaCha_ctx *ctx, unsigned char *out, const unsigned char *in, size_t len) +{ + chacha_encrypt_bytes((chacha_ctx *)ctx, in, out, (uint32_t)len); +} + void CRYPTO_chacha_20(unsigned char *out, const unsigned char *in, size_t len, const unsigned char key[32], const unsigned char iv[8], size_t counter) diff --git a/src/lib/libcrypto/chacha/chacha.h b/src/lib/libcrypto/chacha/chacha.h index d66a719ae4..456d960ed9 100644 --- a/src/lib/libcrypto/chacha/chacha.h +++ b/src/lib/libcrypto/chacha/chacha.h @@ -29,6 +29,17 @@ extern "C" { #endif +typedef struct { + unsigned int input[16]; +} ChaCha_ctx; + +void ChaCha_set_key(ChaCha_ctx *ctx, const unsigned char *key, + unsigned int keybits); +void ChaCha_set_iv(ChaCha_ctx *ctx, const unsigned char *iv, + const unsigned char *counter); +void ChaCha(ChaCha_ctx *ctx, unsigned char *out, const unsigned char *in, + size_t len); + void CRYPTO_chacha_20(unsigned char *out, const unsigned char *in, size_t len, const unsigned char key[32], const unsigned char iv[8], size_t counter); -- cgit v1.2.3-55-g6feb