Comparing OpenSSL

Abstract: Easily compare how the call trees and functions have changed between any two versions of OpenSSL over the last 10 years.

Ever wondered how OpenSSL evolved over the year? this article provides an almost complete history of all the versions of OpenSSL. Download any 2 versions and see what the developers have changed in them. It’s better than “git diff” because we’ll show you how the call trees have changed!

Download (almost) Any Version here!

OpenSSL 0.9.7_ a b c d e f g h i j k l m

OpenSSL 0.9.8_ a b c d e f g h i j k l m n o p q r s t u v w x y za zb zc zd ze zf zg zh

OpenSSL 1.0.0_ a b c d e f g h i j k l m n o p q r s t

OpenSSL 1.0.1_ a b c d e f g h i j k l m n o p q r s t u

OpenSSL 1.0.2_ a b c d e f g h i j k l m n o p q r s t u

OpenSSL 1.1.0_ a b c d e f g h i j k l

OpenSSL 1.1.1_ a b c d e f g h i j k l m n

OpenSSL 3.0.xv3.0.0 v3.0.1 v3.0.2

How do I open/use the download?

  1. Download SciTools Understand at https://www.scitools.com/free-trial.
  2. Download the Zip File(s) corresponding to the OpenSSL Version(s) you want to explore, let’s assume X_Y_Z
  3. Unzip the downloaded files, one by one, let’s assume SciTools_OpenSSL_OpenSSL_X_Y_Z.zip
  4. Open Understand
  5. Select File >> Open >> Project
  6. Open databaseOpenSSL_X_Y_Z.und
  7. You will be prompted to map DEPENDENCIES_USR. This tells SciTools Understand where to find the system header files. They are packaged in each zip file, do don’t worry!
  8. Map DEPENDENCIES_USR to SciTools_OpenSSL_OpenSSL_X_Y_Z/usr (make sure it points to the usr folder that is directly under the folder created when unzipping. Map each version to its own version of usr. DO NOT MAP all to the same usr)
  9. Hit “OK”, the analysis should start or, if needed, select Project >> Analyze All Files.

How do I compare 2 versions?

That’s where the magic happens!

  1. Open The First Version in Understand and Select  Compare >> Comparison Projects
  2. Add the Second Version as the comparison project
  3. Use the comparison features! Here are a few suggestions:
  • Compare >> Locate Changed Entities will show you all that changed
  • Compare >> Changed Treemap will show it graphically
  • Look at a Call Tree and select the “Compare” variant of the graph
  • from a command line try “und export -changes -db DB1.und -cmpdb DB2.und outputFileName.csv” to create a report for all changes.
The Comparison Butterfly Graph for a function, the blue functions were modified, green are new, and red were removed.

If you don’t want to do it manually, use the following batch script to download and analyze all versions 🙂

  1. Make sure you have “und” in your path
  2. Make sure you have a full license of Understand (Eval will not work here) or contact me with your evaluation key at [email protected]
  3. Go to an empty directory
  4. Run this BATCH script (Windows), or an equivalent on Linux…
File Icon
compare_openssl.bat