OpenSSL Notes and Resources
Note: This article will get updates over time as I continue on reading the source code of the OpenSSL project.
Note: These notes mainly cover the latest version at the time of updating this article. Currently, I am reading: v3.2.1
Note: Notes are provided at my will and convenience. Keep in mind that it takes time for me to take notes and write articles. If you desire an even deeper understanding of the project, you are welcome to read the source code, and if you can, contributing to this article would be greatly appreciated.
Common structs
These are the most common structs you will come accross when reading the source code.
SSL_CTX
: context for a program. Can be created usingSSL_CTX_new(3)
SSL
(SSL_CONNECTION) represents a SSL connection (and is created under a context)SSL_METHOD
: struct with function pointers that a context inherits and can use when it has to perform an SSL action (connect, read, peek, write, ctrl, etc.)SSL_SESSION
:SSL_CIPHER
:
TLS_client_method
: a SSL_METHOD with client utility function pointersTLS_server_method
: a SSL_METHOD with server utility function pointers
BIO
: struct that can be used to handle program I/O. There are two types of BIOs, source/sink and filter. A BIO can represent an open file, a network socket, a memory buffer, etc. [1] [2]BIO_METHOD
: struct with function pointers that a BIO inherits and can use when it has to perform an I/O action (bwrite, bread, bputs, bgets, crtl, etc.)