cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

chacha20poly1305.h (1699B)


      1/* SPDX-License-Identifier: GPL-2.0 OR MIT */
      2/*
      3 * Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
      4 */
      5
      6#ifndef __CHACHA20POLY1305_H
      7#define __CHACHA20POLY1305_H
      8
      9#include <linux/types.h>
     10#include <linux/scatterlist.h>
     11
     12enum chacha20poly1305_lengths {
     13	XCHACHA20POLY1305_NONCE_SIZE = 24,
     14	CHACHA20POLY1305_KEY_SIZE = 32,
     15	CHACHA20POLY1305_AUTHTAG_SIZE = 16
     16};
     17
     18void chacha20poly1305_encrypt(u8 *dst, const u8 *src, const size_t src_len,
     19			      const u8 *ad, const size_t ad_len,
     20			      const u64 nonce,
     21			      const u8 key[CHACHA20POLY1305_KEY_SIZE]);
     22
     23bool __must_check
     24chacha20poly1305_decrypt(u8 *dst, const u8 *src, const size_t src_len,
     25			 const u8 *ad, const size_t ad_len, const u64 nonce,
     26			 const u8 key[CHACHA20POLY1305_KEY_SIZE]);
     27
     28void xchacha20poly1305_encrypt(u8 *dst, const u8 *src, const size_t src_len,
     29			       const u8 *ad, const size_t ad_len,
     30			       const u8 nonce[XCHACHA20POLY1305_NONCE_SIZE],
     31			       const u8 key[CHACHA20POLY1305_KEY_SIZE]);
     32
     33bool __must_check xchacha20poly1305_decrypt(
     34	u8 *dst, const u8 *src, const size_t src_len, const u8 *ad,
     35	const size_t ad_len, const u8 nonce[XCHACHA20POLY1305_NONCE_SIZE],
     36	const u8 key[CHACHA20POLY1305_KEY_SIZE]);
     37
     38bool chacha20poly1305_encrypt_sg_inplace(struct scatterlist *src, size_t src_len,
     39					 const u8 *ad, const size_t ad_len,
     40					 const u64 nonce,
     41					 const u8 key[CHACHA20POLY1305_KEY_SIZE]);
     42
     43bool chacha20poly1305_decrypt_sg_inplace(struct scatterlist *src, size_t src_len,
     44					 const u8 *ad, const size_t ad_len,
     45					 const u64 nonce,
     46					 const u8 key[CHACHA20POLY1305_KEY_SIZE]);
     47
     48bool chacha20poly1305_selftest(void);
     49
     50#endif /* __CHACHA20POLY1305_H */