Home | History | Annotate | Line # | Download | only in ciphers
      1 /*
      2  * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
      3  *
      4  * Licensed under the Apache License 2.0 (the "License").  You may not use
      5  * this file except in compliance with the License.  You can obtain a copy
      6  * in the file LICENSE in the source distribution or at
      7  * https://www.openssl.org/source/license.html
      8  */
      9 
     10 #include "include/crypto/chacha.h"
     11 #include "prov/ciphercommon.h"
     12 
     13 typedef struct {
     14     PROV_CIPHER_CTX base; /* must be first */
     15     union {
     16         OSSL_UNION_ALIGN;
     17         unsigned int d[CHACHA_KEY_SIZE / 4];
     18     } key;
     19     unsigned int counter[CHACHA_CTR_SIZE / 4];
     20     unsigned char buf[CHACHA_BLK_SIZE];
     21     unsigned int partial_len;
     22 } PROV_CHACHA20_CTX;
     23 
     24 typedef struct prov_cipher_hw_chacha20_st {
     25     PROV_CIPHER_HW base; /* must be first */
     26     int (*initiv)(PROV_CIPHER_CTX *ctx);
     27 
     28 } PROV_CIPHER_HW_CHACHA20;
     29 
     30 const PROV_CIPHER_HW *ossl_prov_cipher_hw_chacha20(size_t keybits);
     31 
     32 OSSL_FUNC_cipher_encrypt_init_fn ossl_chacha20_einit;
     33 OSSL_FUNC_cipher_decrypt_init_fn ossl_chacha20_dinit;
     34 void ossl_chacha20_initctx(PROV_CHACHA20_CTX *ctx);
     35