!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/usr/src/linux-headers-5.4.0-204/include/crypto/   drwxr-xr-x
Free 13.09 GB of 57.97 GB (22.58%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     cbc.h (3.29 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * CBC: Cipher Block Chaining mode
 *
 * Copyright (c) 2016 Herbert Xu <herbert@gondor.apana.org.au>
 */

#ifndef _CRYPTO_CBC_H
#define _CRYPTO_CBC_H

#include <crypto/internal/skcipher.h>
#include <linux/string.h>
#include <linux/types.h>

static inline int crypto_cbc_encrypt_segment(
    struct skcipher_walk *walk, struct crypto_skcipher *tfm,
    void (*fn)(struct crypto_skcipher *, const u8 *, u8 *))
{
    unsigned int bsize = crypto_skcipher_blocksize(tfm);
    unsigned int nbytes = walk->nbytes;
    u8 *src = walk->src.virt.addr;
    u8 *dst = walk->dst.virt.addr;
    u8 *iv = walk->iv;

    do {
        crypto_xor(iv, src, bsize);
        fn(tfm, iv, dst);
        memcpy(iv, dst, bsize);

        src += bsize;
        dst += bsize;
    } while ((nbytes -= bsize) >= bsize);

    return nbytes;
}

static inline int crypto_cbc_encrypt_inplace(
    struct skcipher_walk *walk, struct crypto_skcipher *tfm,
    void (*fn)(struct crypto_skcipher *, const u8 *, u8 *))
{
    unsigned int bsize = crypto_skcipher_blocksize(tfm);
    unsigned int nbytes = walk->nbytes;
    u8 *src = walk->src.virt.addr;
    u8 *iv = walk->iv;

    do {
        crypto_xor(src, iv, bsize);
        fn(tfm, src, src);
        iv = src;

        src += bsize;
    } while ((nbytes -= bsize) >= bsize);

    memcpy(walk->iv, iv, bsize);

    return nbytes;
}

static inline int crypto_cbc_encrypt_walk(struct skcipher_request *req,
                      void (*fn)(struct crypto_skcipher *,
                             const u8 *, u8 *))
{
    struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req);
    struct skcipher_walk walk;
    int err;

    err = skcipher_walk_virt(&walk, req, false);

    while (walk.nbytes) {
        if (walk.src.virt.addr == walk.dst.virt.addr)
            err = crypto_cbc_encrypt_inplace(&walk, tfm, fn);
        else
            err = crypto_cbc_encrypt_segment(&walk, tfm, fn);
        err = skcipher_walk_done(&walk, err);
    }

    return err;
}

static inline int crypto_cbc_decrypt_segment(
    struct skcipher_walk *walk, struct crypto_skcipher *tfm,
    void (*fn)(struct crypto_skcipher *, const u8 *, u8 *))
{
    unsigned int bsize = crypto_skcipher_blocksize(tfm);
    unsigned int nbytes = walk->nbytes;
    u8 *src = walk->src.virt.addr;
    u8 *dst = walk->dst.virt.addr;
    u8 *iv = walk->iv;

    do {
        fn(tfm, src, dst);
        crypto_xor(dst, iv, bsize);
        iv = src;

        src += bsize;
        dst += bsize;
    } while ((nbytes -= bsize) >= bsize);

    memcpy(walk->iv, iv, bsize);

    return nbytes;
}

static inline int crypto_cbc_decrypt_inplace(
    struct skcipher_walk *walk, struct crypto_skcipher *tfm,
    void (*fn)(struct crypto_skcipher *, const u8 *, u8 *))
{
    unsigned int bsize = crypto_skcipher_blocksize(tfm);
    unsigned int nbytes = walk->nbytes;
    u8 *src = walk->src.virt.addr;
    u8 last_iv[MAX_CIPHER_BLOCKSIZE];

    /* Start of the last block. */
    src += nbytes - (nbytes & (bsize - 1)) - bsize;
    memcpy(last_iv, src, bsize);

    for (;;) {
        fn(tfm, src, src);
        if ((nbytes -= bsize) < bsize)
            break;
        crypto_xor(src, src - bsize, bsize);
        src -= bsize;
    }

    crypto_xor(src, walk->iv, bsize);
    memcpy(walk->iv, last_iv, bsize);

    return nbytes;
}

static inline int crypto_cbc_decrypt_blocks(
    struct skcipher_walk *walk, struct crypto_skcipher *tfm,
    void (*fn)(struct crypto_skcipher *, const u8 *, u8 *))
{
    if (walk->src.virt.addr == walk->dst.virt.addr)
        return crypto_cbc_decrypt_inplace(walk, tfm, fn);
    else
        return crypto_cbc_decrypt_segment(walk, tfm, fn);
}

#endif    /* _CRYPTO_CBC_H */

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0329 ]--