Week Eleven: Ping!

This is my eleventh week of being an intern at Aeste Works. My main focus this week was to ensure that two way communication between the USB stack and lwIP’s TCP/IP stack was working as intended. The simplest way to achieve this was pinging the USB CDC ECM device and observing the packets through Wireshark. Ping is a tool that sends an ICMP (Internet Control Message Protocol) echo request and expects an echo reply if the Network layer (Layer 3 of the Read more…

Software Design Pattern

In this week I was revising some design patterns to utilise them into the software development. A design pattern was a general solution and it had a high reusability. First and foremost, CPU32 was designed as a singleton. It was instantiated only once and there was a global access to it, as well as “initialisation on first use”. Lazy initialisation was also required, meaning the instantiation of the class was delayed until it was needed. Fundamentally, I had to ensure Read more…

Photo by John Salvino on Unsplash

A Series of Unfortunate Events

Just when I thought that things were getting better since I discovered what was the problem last week, it didn’t. I thought the problem could easily be solved using OpenSSL libraries, as I had used their command line tool as part of the test last week. I looked into the source code of their command line tool, to know what functions are needed to solve my problem. But even after following what OpenSSL did, I was still getting the same Read more…

Week Ten

This is the tenth week of being an intern at Aeste Works. Continuing from last week,  I found a way to separate normal USB packets and networking packets. This can be done by checking the twelfth and thirteenth byte of the payload found in the readBuffer. Protocols such as IPv4, IPv6 and ARP would always be 0x80 in the twelfth byte.  Dr Shawn also advised me to have a clear separation between the USB segments and lwIP segments as I Read more…

Photo by Charles Deluvio 🇵🇭🇨🇦 on Unsplash

A little bit of everything (Update March 2019)

This was rather a short week because of the Chinese New Year. Nonetheless, this week I was focusing on modifying AUTO_TEMPLATE for all different modules to generate a top level design. To start off, I was studying the CPU32 module taken from one of the projects and created an AUTO_TEMPLATE for it. The CPU32 had to be connected to a ram switch whereas the ram switch will be connected to an I/O switch. There were ten inputs and twenty outputs Read more…

Sweet Serendipity

I was able to discover the crux of the problem from last week. Previously, we were baffled by the fact that the size of the private key that is generated by the server application appears to much smaller than the private key that was generated by XCA, even though they both are using the same elliptic curve algorithm and key length. It turns out there is actually two ways of encoding an ECC key, i.e in a compressed format or Read more…

Photo by John Salvino on Unsplash
Photo by Charles Deluvio 🇵🇭🇨🇦 on Unsplash

Week Nine

This is my ninth week of being an intern at Aeste Works. This week was testing whether the lwIP stack had been configured correctly and whether the interface can be successfully initialized.  To initialize the network stack in a lwIP single-threaded core, the function lwip_init is called and then the network interface is brought up by netif_add and netif_setup. To test whether the network interface could be brought up, the netif_is_up function was used which takes in the pre-allocated network structure that was Read more…

The Fault in My Code

So last week, we discovered that client certificates could not successfully be imported in both macOS and Windows operating systems. Testing out with a manually generated certificate using XCA, we were able to confirm that the problem was that the PKCS#12 generated by our application does not contain the full certificate chain (i.e: from end-entity certificate to all the way to the root certificate), or so we thought. Currently, the server application generates PKCS#12 files using OpenSSL’s libraries since Botan Read more…

Photo by John Salvino on Unsplash
Photo by John Salvino on Unsplash

Setup and Testing Week

The Setup Now that I have access to the production server, I had to pull the project’s code from our git repository into the server’s filesystem. Shortly after that, I needed to check if the server application could be built and executed. No major issues in that regard. Everything seemed to be going well at that point. Dr Shawn had already set up the actual Woocommerce site and gave me access as a Store Manager. Before doing anything else in Read more…

Week Eight

This is my eighth week of being an intern at Aeste Works. This week was about setting up and integrating the lwIP stack with the USB CDC ECM device. The device currently does not run with an operating system and so must be configured for the lwIP NOSYS mode using the raw (or native API).  The first step was to create a cc.h file that that describes the compiler and machine architecture to lwIP. The following are defined here: data types, printf formatters for Read more…