Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 OR MIT */
0002 /*
0003  * Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
0004  */
0005 
0006 #ifndef __CHACHA20POLY1305_H
0007 #define __CHACHA20POLY1305_H
0008 
0009 #include <linux/types.h>
0010 #include <linux/scatterlist.h>
0011 
0012 enum chacha20poly1305_lengths {
0013     XCHACHA20POLY1305_NONCE_SIZE = 24,
0014     CHACHA20POLY1305_KEY_SIZE = 32,
0015     CHACHA20POLY1305_AUTHTAG_SIZE = 16
0016 };
0017 
0018 void chacha20poly1305_encrypt(u8 *dst, const u8 *src, const size_t src_len,
0019                   const u8 *ad, const size_t ad_len,
0020                   const u64 nonce,
0021                   const u8 key[CHACHA20POLY1305_KEY_SIZE]);
0022 
0023 bool __must_check
0024 chacha20poly1305_decrypt(u8 *dst, const u8 *src, const size_t src_len,
0025              const u8 *ad, const size_t ad_len, const u64 nonce,
0026              const u8 key[CHACHA20POLY1305_KEY_SIZE]);
0027 
0028 void xchacha20poly1305_encrypt(u8 *dst, const u8 *src, const size_t src_len,
0029                    const u8 *ad, const size_t ad_len,
0030                    const u8 nonce[XCHACHA20POLY1305_NONCE_SIZE],
0031                    const u8 key[CHACHA20POLY1305_KEY_SIZE]);
0032 
0033 bool __must_check xchacha20poly1305_decrypt(
0034     u8 *dst, const u8 *src, const size_t src_len, const u8 *ad,
0035     const size_t ad_len, const u8 nonce[XCHACHA20POLY1305_NONCE_SIZE],
0036     const u8 key[CHACHA20POLY1305_KEY_SIZE]);
0037 
0038 bool chacha20poly1305_encrypt_sg_inplace(struct scatterlist *src, size_t src_len,
0039                      const u8 *ad, const size_t ad_len,
0040                      const u64 nonce,
0041                      const u8 key[CHACHA20POLY1305_KEY_SIZE]);
0042 
0043 bool chacha20poly1305_decrypt_sg_inplace(struct scatterlist *src, size_t src_len,
0044                      const u8 *ad, const size_t ad_len,
0045                      const u64 nonce,
0046                      const u8 key[CHACHA20POLY1305_KEY_SIZE]);
0047 
0048 bool chacha20poly1305_selftest(void);
0049 
0050 #endif /* __CHACHA20POLY1305_H */