Skip to main content

Final Project Part 01 - Finding an Open Source Package

The final project of this course has been split into 2 major parts, the first part is as follows:
  • Find an open source software package with a hash or checksum function that compiles to machine code.
  • Benchmark the performance on an AArch64 system.
  • Identify how you plan to optimize the function.
 It turns out that finding the open soure software package took much longer than expected. Typing in google some combination of "open source software with hash function" clearly produces nothing. These were the strategies I employed below to find my package:
  1.  Reverse search using Wikipedia.
  • Start here at the list of hash functions.
  • Pick one, look at the External links and References sections for an implementation that is open source.

      2.  Install open source packages from the Free Software Directory here.
  • Pick a package and use wget on our AArch64 system if applicable.
  • grep -Ri for hash/checksum and see if it returned anything useful.

      3.  Google search "(hash/checksum) hash c".
  • Search through approximately 5 pages per result to see if any packages appear.

Ironically, although option 1 followed by 2 sounds the most probable to find a package, option 3 brought me to the package I chose. Wikipedia unfortunately offered only plenty of information regarding the way the hash works or it's vulnerabilities and very little on any implementations. Option 2 after many packages began to feel hopeless and the descriptions give you no indication of whether you will find a hash/checksum function in them. After typing in sha1 hash c I came across clib here.

Comments

Popular posts from this blog

Final Project Part 01 - Final Summary

To end part 1 I will summarize what information I have gathered for part 2: I am optimizing clib, a package manager. After benchmarking, it is clear there is a significant time delay in some advanced calls of the SHA1 function, such as ones that call update many times. To optimize, I am going to add the -O3 flag and remove a loop condition (currently). Some other observations: This project is relatively small with no ./configure for other platforms. The Sha1 code is unique and does not conform to the simple sha1 algorithm such as on    Wikipedia . The documentation (i.e. README) is relatively vague at describing the dependancies. It suggests only syntax that implies installation and isn't clear at documenting development vs. published code.   I have learned alot getting to this point in part 1. Firstly, I learned that library files can only be linked by using sudo ldconfig and the files must be in usr/lib. Secondly, I learned how to alter an advance...

Final Project Part 02 - Sha1 Function Enhancements

To try to squeeze out a bit more performance I attempted to some compiler optimizations. Unfortunately, due to the sheer complexity of the algorithm, I was unable to find other logic complexities to simplify. I tried some loop unrolling to make the compiler have to work a little less, some examples are here below: I made a graph to demonstrate the minute differences this makes in the test vectors below: At most a few millisecond difference is all that can be acquired, and this is only from the finalcount[] array as the digest array produces errors if not compiled in a loop along with other for loops in the code. To test this I simply altered the sha1.c code and ran the make file to see if the vectors passed or failed. As mentioned this is a compiler optimzation, in other words it is completed already, especially at the -O3 level where the benchmarking was done. I would not  recommend this change to be pushed upstream normally due to the insignificant time ch...

Comparing Open Source Software Packages (Lab 1)

This post examines code review processes to understand how and where to look to push code upstream OpenLDAP This software is best described on the application's project overview page as a " robust, commercial-grade, fully featured, and open source LDAP suite of applications and development tools ". ( https://www.openldap.org/project/ )   This software operates under it's own OpenLDAP public license and accepts patches through the OpenLDAP Issue Tracking System . Patches are approved by the OpenLDAP Core Team , most noticeably Howard Chu and Kurt Zeilenga. An example of a closed patch is Contribution# 5410 where a developer Peter O'Gorman added a patch to allow building of a module with a different compiler addressed to Howard Chu (Chief Architect). The issue was concluded over nine days after two replies to the original message.  Change was implemented and the developer was very prompt (three hours after Architect reply) to respond. The Issue Tracker ...