Recompiling the aes.c file from source code

I have aes.c file in my openwrt source code and i am working with s-box i make changes in s-box and compile the aes.c file to aes.o file but i get an error

root@abc-Name:/home/abc/openwrt/build_dir/target-mipsel_24kc_musl/linux-ramips_mt7621/linux-5.15.134/lib/crypto# gcc -c aes.c -o aes.o
aes.c:6:10: fatal error: crypto/aes.h: No such file or directory
    6 | #include <crypto/aes.h>
      |          ^~~~~~~~~~~~~~
compilation terminated.

is kind of self explanatory...

Bro i didnt change the header files i just change the s-box value... i see error that why i ask how i solve it...even i didnt change path or any thing i just change 1 value from s-box...

post the content of a patch file containing your change.

the file isn't Openwrt specific, you should ask at some Linux forum.

I am working on openwrt souce code i need to change the aes s-box so i see the impact on communication between different devices.

You can't just randomly call gcc in an arbitrary source subtree and expect it to work. First of all you're invoking the wrong compiler (host instead of target-cross compiler), then it lacks all required flags such as include and library link search paths, cflags etc.

Apparently you're trying to modify the kernel source code, so the proper command to rebuild it would be make target/linux/compile in the buildroot topdir, potentially followed by a make target/linux/install to regenerate images.

3 Likes

I doubt that OpenWrt's build system compiles this file just with:

 gcc -c aes.c -o aes.o

You will probably need to add lots of options there, starting with the path to use for included headers, as the error message seems to indicate. I would try to follow the "working with patches" guide:
https://openwrt.org/docs/guide-developer/toolchain/use-patches-with-buildsystem

1 Like

Boy, does that sound familiar, @Shahzaib.

// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (C) 2017-2019 Linaro Ltd <ard.biesheuvel@linaro.org>
 */

#include <crypto/aes.h>
#include <linux/crypto.h>
#include <linux/module.h>
#include <asm/unaligned.h>

/*
 * Emit the sbox as volatile const to prevent the compiler from doing
 * constant folding on sbox references involving fixed indexes.
 */
static volatile const u8 __cacheline_aligned aes_sbox[] = {
        0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5,
        0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,
        0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,
        0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0,
        0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc,
        0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,
        0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a,
        0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75,
        0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,
        0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84,
        0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b,
        0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,
        0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85,
        0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8,
        0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,
        0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2,
        0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17,
        0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,
        0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88,
        0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb,

This is code i change the s-box value and when i need to recomiple and make the .o file i get error

root@shahzaib-System-Product-Name:/home/shahzaib/openwrt/build_dir/target-mipsel_24kc_musl/linux-ramips_mt7621/linux-5.15.134/lib/crypto# gcc -I./build_dir/target-mipsel_24kc_musl/linux-ramips_mt7621/linux-5.15.134/include/crypto/aes.h -c aes.c -o aes.o
aes.c:6:10: fatal error: crypto/aes.h: No such file or directory
    6 | #include <crypto/aes.h>
      |          ^~~~~~~~~~~~~~
compilation terminated.

Exactly bro